)]}'
{"doc/source/cli/command-objects/network-agent.rst":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e79796cddab977625fc7778e7f3ddbe2f0b142f9","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        \u003cagent-id\u003e"},{"line_number":24,"context_line":"        \u003cnetwork\u003e"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":".. describe:: --dhcp"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    Add a network to DHCP agent"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":42,"id":"1f1a1f67_c5efbc85","line":26,"updated":"2017-07-12 15:21:48.000000000","message":"I guess this is wrong based on L131 ?  Should be \u0027option\u0027","commit_id":"18c532377a2f6d87adef80465fea7ed50d5a17d1"}],"doc/source/command-objects/network-agent.rst":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"efe34473527d601db70880772f5015874be5ef0b","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    Network agent to display (ID only)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"network agent hosted-routers list"},{"line_number":86,"context_line":"---------------------------------"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"List routers hosted by an L3 agent"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ba5da102_d044444b","line":85,"updated":"2016-11-02 18:57:59.000000000","message":"maybe \u0027network agent list --routers\u0027?  alternatively, it is routers you are listing so maybe \u0027routers list --hosted\u0027","commit_id":"61866490da580119a0c5161bf039fb04b9439569"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"efe34473527d601db70880772f5015874be5ef0b","unresolved":false,"context_lines":[{"line_number":91,"context_line":".. code:: bash"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    os agent hosted-routers list"},{"line_number":94,"context_line":"        \u003cagent\u003e"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"ba5da102_5077549f","line":94,"updated":"2016-11-02 18:57:59.000000000","message":"\u003cagent-id\u003e\n\nsince it is ID-only, all below also","commit_id":"61866490da580119a0c5161bf039fb04b9439569"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"efe34473527d601db70880772f5015874be5ef0b","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    os agent hosted-routers list"},{"line_number":94,"context_line":"        \u003cagent\u003e"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    L3 agent to query (ID)"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"ba5da102_104b1c5a","line":96,"updated":"2016-11-02 18:57:59.000000000","message":"\u003cagent-id\u003e","commit_id":"61866490da580119a0c5161bf039fb04b9439569"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"efe34473527d601db70880772f5015874be5ef0b","unresolved":false,"context_lines":[{"line_number":120,"context_line":"   Router to add to agent (name or ID)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"network agent remove router"},{"line_number":123,"context_line":"------------------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Remove router from L3 agent"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"ba5da102_628811c6","line":123,"updated":"2016-11-02 18:57:59.000000000","message":"needs to be at least as long as the line above","commit_id":"61866490da580119a0c5161bf039fb04b9439569"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"a8f3f4541390adcf2f35cc5a5262b209d7c9f845","unresolved":false,"context_lines":[{"line_number":18,"context_line":".. program:: network agent add router"},{"line_number":19,"context_line":".. code:: bash"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    os agent add router"},{"line_number":22,"context_line":"        \u003cagent\u003e"},{"line_number":23,"context_line":"        \u003crouter\u003e"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"5a3905b3_f8d58fe4","line":21,"range":{"start_line":21,"start_character":4,"end_line":21,"end_character":6},"updated":"2017-01-24 02:44:02.000000000","message":"openstack","commit_id":"9fbd5df2d61cf05115b6412c2c065bfda218ab12"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"24ca725e96fa1f7817549b689f503adaa60358f3","unresolved":false,"context_lines":[{"line_number":18,"context_line":".. program:: network agent add router"},{"line_number":19,"context_line":".. code:: bash"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    os agent add router"},{"line_number":22,"context_line":"        \u003cagent\u003e"},{"line_number":23,"context_line":"        \u003crouter\u003e"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a430d35_e8096e85","line":21,"range":{"start_line":21,"start_character":4,"end_line":21,"end_character":6},"in_reply_to":"5a3905b3_f8d58fe4","updated":"2017-02-07 21:36:11.000000000","message":"Done","commit_id":"9fbd5df2d61cf05115b6412c2c065bfda218ab12"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"a8f3f4541390adcf2f35cc5a5262b209d7c9f845","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    List L3 agents hosting this router (name or ID)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"network agent remove router"},{"line_number":80,"context_line":"------------------------"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Remove router from L3 agent"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"5a3905b3_382c7798","line":80,"updated":"2017-01-24 02:44:02.000000000","message":"nit: need some more \"-\"","commit_id":"9fbd5df2d61cf05115b6412c2c065bfda218ab12"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"24ca725e96fa1f7817549b689f503adaa60358f3","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    List L3 agents hosting this router (name or ID)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"network agent remove router"},{"line_number":80,"context_line":"------------------------"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Remove router from L3 agent"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a430d35_48252207","line":80,"in_reply_to":"5a3905b3_382c7798","updated":"2017-02-07 21:36:11.000000000","message":"Done","commit_id":"9fbd5df2d61cf05115b6412c2c065bfda218ab12"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"e4efaeb1b092bda8d869e4fa46e1164fdbef1167","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    openstack network agent list"},{"line_number":60,"context_line":"        [--agent-type \u003cagent-type\u003e]"},{"line_number":61,"context_line":"        [--host \u003chost\u003e]"},{"line_number":62,"context_line":"        [--routers \u003crouter\u003e]"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":".. option:: --agent-type \u003cagent-type\u003e"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa31d9ce_cc91d148","line":62,"updated":"2017-02-15 22:33:23.000000000","message":"not plural?","commit_id":"d4a066225afdc4dd9000d37233feb60b83f66469"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3f4b179ef027f03c920faca7749ffef1ebaf4c46","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":".. describe:: --l3"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    Add a router to L3 agent. "},{"line_number":56,"context_line":""},{"line_number":57,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a1ced50_1c50970a","line":55,"range":{"start_line":55,"start_character":29,"end_line":55,"end_character":30},"updated":"2017-03-22 18:48:42.000000000","message":"Trailing whitespace","commit_id":"fc45e4eac3d31628a31bac69071909518f6e6a0f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ee7a53230bbe73334441bcf893bf15ca69bf3c4f","unresolved":false,"context_lines":[{"line_number":43,"context_line":".. program:: network agent add router"},{"line_number":44,"context_line":".. code:: bash"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    openstack agent add router"},{"line_number":47,"context_line":"        [--l3]"},{"line_number":48,"context_line":"        \u003cagent-id\u003e"},{"line_number":49,"context_line":"        \u003crouter\u003e"}],"source_content_type":"text/x-rst","patch_set":25,"id":"1a1ced50_408bfd1e","line":46,"updated":"2017-03-22 22:55:50.000000000","message":"agent -\u003e network agent","commit_id":"ea8b53db212b73d56a95d4ba480453372de1a3c7"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"33882c1d7588c957793ff7b6a7ec45122c90be9f","unresolved":false,"context_lines":[{"line_number":43,"context_line":".. program:: network agent add router"},{"line_number":44,"context_line":".. code:: bash"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    openstack agent add router"},{"line_number":47,"context_line":"        [--l3]"},{"line_number":48,"context_line":"        \u003cagent-id\u003e"},{"line_number":49,"context_line":"        \u003crouter\u003e"}],"source_content_type":"text/x-rst","patch_set":25,"id":"ffe62b97_45e97c7e","line":46,"in_reply_to":"1a1ced50_408bfd1e","updated":"2017-03-23 20:27:03.000000000","message":"Done","commit_id":"ea8b53db212b73d56a95d4ba480453372de1a3c7"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ee7a53230bbe73334441bcf893bf15ca69bf3c4f","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":".. describe:: --l3"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    Add a router to L3 agent. "},{"line_number":56,"context_line":""},{"line_number":57,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"1a1ced50_80b33509","line":55,"range":{"start_line":55,"start_character":28,"end_line":55,"end_character":30},"updated":"2017-03-22 22:55:50.000000000","message":"Remove it :)","commit_id":"ea8b53db212b73d56a95d4ba480453372de1a3c7"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"33882c1d7588c957793ff7b6a7ec45122c90be9f","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":".. describe:: --l3"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    Add a router to L3 agent. "},{"line_number":56,"context_line":""},{"line_number":57,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"ffe62b97_05037444","line":55,"range":{"start_line":55,"start_character":28,"end_line":55,"end_character":30},"in_reply_to":"1a1ced50_80b33509","updated":"2017-03-23 20:27:03.000000000","message":"Done","commit_id":"ea8b53db212b73d56a95d4ba480453372de1a3c7"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ee7a53230bbe73334441bcf893bf15ca69bf3c4f","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"   Agent to which a network is added. (ID only)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":".. describe:: \u003crouter\u003e"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"1a1ced50_00c82573","line":59,"range":{"start_line":59,"start_character":36,"end_line":59,"end_character":38},"updated":"2017-03-22 22:55:50.000000000","message":"No full stop required here","commit_id":"ea8b53db212b73d56a95d4ba480453372de1a3c7"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"33882c1d7588c957793ff7b6a7ec45122c90be9f","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"   Agent to which a network is added. (ID only)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":".. describe:: \u003crouter\u003e"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"ffe62b97_e5ff7032","line":59,"range":{"start_line":59,"start_character":36,"end_line":59,"end_character":38},"in_reply_to":"1a1ced50_00c82573","updated":"2017-03-23 20:27:03.000000000","message":"Done","commit_id":"ea8b53db212b73d56a95d4ba480453372de1a3c7"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ee7a53230bbe73334441bcf893bf15ca69bf3c4f","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    List L3 agents hosting this router (name or ID)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"network agent remove network"},{"line_number":115,"context_line":"----------------------------"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Remove network from an agent"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":".. program:: network agent remove network"},{"line_number":120,"context_line":".. code:: bash"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    openstack network agent remove network"},{"line_number":123,"context_line":"        [--dhcp]"},{"line_number":124,"context_line":"        \u003cagent-id\u003e"},{"line_number":125,"context_line":"        \u003cnetwork\u003e"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":".. describe:: --dhcp"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    Remove network from DHCP agent."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":".. describe:: \u003cagent-id\u003e"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    Agent to which a network is removed (ID only)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":".. describe:: \u003cnetwork\u003e"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    Network to be removed from an agent (ID or name)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"network agent remove router"},{"line_number":140,"context_line":"---------------------------"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Remove router from an agent"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":".. program:: network agent remove router"},{"line_number":145,"context_line":".. code:: bash"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    openstack agent remove router"},{"line_number":148,"context_line":"        [--l3]"},{"line_number":149,"context_line":"        \u003cagent\u003e"},{"line_number":150,"context_line":"        \u003crouter\u003e"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":".. _network_agent_remove_router:"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":".. describe:: --l3"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    Remove router from L3 agent."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"   Agent from which router will be deleted. (ID only)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":".. describe:: \u003crouter\u003e"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"   Router to be removed. (name or ID)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"network agent set"},{"line_number":167,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":25,"id":"1a1ced50_00ad8587","line":164,"range":{"start_line":114,"start_character":0,"end_line":164,"end_character":37},"updated":"2017-03-22 22:55:50.000000000","message":"This can be done as a part of network agent Unset ....","commit_id":"ea8b53db212b73d56a95d4ba480453372de1a3c7"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"33882c1d7588c957793ff7b6a7ec45122c90be9f","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    List L3 agents hosting this router (name or ID)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"network agent remove network"},{"line_number":115,"context_line":"----------------------------"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Remove network from an agent"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":".. program:: network agent remove network"},{"line_number":120,"context_line":".. code:: bash"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    openstack network agent remove network"},{"line_number":123,"context_line":"        [--dhcp]"},{"line_number":124,"context_line":"        \u003cagent-id\u003e"},{"line_number":125,"context_line":"        \u003cnetwork\u003e"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":".. describe:: --dhcp"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    Remove network from DHCP agent."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":".. describe:: \u003cagent-id\u003e"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    Agent to which a network is removed (ID only)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":".. describe:: \u003cnetwork\u003e"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    Network to be removed from an agent (ID or name)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"network agent remove router"},{"line_number":140,"context_line":"---------------------------"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Remove router from an agent"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":".. program:: network agent remove router"},{"line_number":145,"context_line":".. code:: bash"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    openstack agent remove router"},{"line_number":148,"context_line":"        [--l3]"},{"line_number":149,"context_line":"        \u003cagent\u003e"},{"line_number":150,"context_line":"        \u003crouter\u003e"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":".. _network_agent_remove_router:"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":".. describe:: --l3"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    Remove router from L3 agent."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"   Agent from which router will be deleted. (ID only)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":".. describe:: \u003crouter\u003e"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"   Router to be removed. (name or ID)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"network agent set"},{"line_number":167,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":25,"id":"ffe62b97_459e1c08","line":164,"range":{"start_line":114,"start_character":0,"end_line":164,"end_character":37},"in_reply_to":"1a1ced50_00ad8587","updated":"2017-03-23 20:27:03.000000000","message":"No because the relationship is many to many","commit_id":"ea8b53db212b73d56a95d4ba480453372de1a3c7"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"e28b90c8310e7e4e6d98b7a655ea5bd195d2850d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        \u003crouter\u003e"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":".. _network_agent_add_router:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":".. describe:: --l3"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    Add a router to L3 agent"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffe62b97_3fd560ba","line":52,"updated":"2017-03-24 02:04:30.000000000","message":"nit:you can move this to line 56","commit_id":"8ebdddf5e8c6b3951b9db96bf89011cba1146502"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"ee2c8e066b212782b3f7d7d85ea22d4961f8dd0b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        \u003crouter\u003e"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":".. _network_agent_add_router:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":".. describe:: --l3"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    Add a router to L3 agent"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffe62b97_94766dd8","line":52,"in_reply_to":"ffe62b97_3fd560ba","updated":"2017-03-24 17:09:32.000000000","message":"Done","commit_id":"8ebdddf5e8c6b3951b9db96bf89011cba1146502"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"e28b90c8310e7e4e6d98b7a655ea5bd195d2850d","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":".. _network_agent_add_router:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":".. describe:: --l3"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    Add a router to L3 agent"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffe62b97_627d8b6d","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":18},"updated":"2017-03-24 02:04:30.000000000","message":"this should be an option:\n.. option:: --l3","commit_id":"8ebdddf5e8c6b3951b9db96bf89011cba1146502"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"ee2c8e066b212782b3f7d7d85ea22d4961f8dd0b","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":".. _network_agent_add_router:"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":".. describe:: --l3"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    Add a router to L3 agent"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffe62b97_b47171e3","line":53,"range":{"start_line":53,"start_character":0,"end_line":53,"end_character":18},"in_reply_to":"ffe62b97_627d8b6d","updated":"2017-03-24 17:09:32.000000000","message":"Done","commit_id":"8ebdddf5e8c6b3951b9db96bf89011cba1146502"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"e28b90c8310e7e4e6d98b7a655ea5bd195d2850d","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        \u003cagent-id\u003e"},{"line_number":125,"context_line":"        \u003cnetwork\u003e"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":".. describe:: --dhcp"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    Remove network from DHCP agent."},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffe62b97_c2e21730","line":127,"range":{"start_line":127,"start_character":0,"end_line":127,"end_character":20},"updated":"2017-03-24 02:04:30.000000000","message":"this should be an option","commit_id":"8ebdddf5e8c6b3951b9db96bf89011cba1146502"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"ee2c8e066b212782b3f7d7d85ea22d4961f8dd0b","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        \u003cagent-id\u003e"},{"line_number":125,"context_line":"        \u003cnetwork\u003e"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":".. describe:: --dhcp"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    Remove network from DHCP agent."},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffe62b97_745c094b","line":127,"range":{"start_line":127,"start_character":0,"end_line":127,"end_character":20},"in_reply_to":"ffe62b97_c2e21730","updated":"2017-03-24 17:09:32.000000000","message":"Done","commit_id":"8ebdddf5e8c6b3951b9db96bf89011cba1146502"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"e28b90c8310e7e4e6d98b7a655ea5bd195d2850d","unresolved":false,"context_lines":[{"line_number":127,"context_line":".. describe:: --dhcp"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    Remove network from DHCP agent."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":".. describe:: \u003cagent-id\u003e"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    Agent to which a network is removed (ID only)"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffe62b97_a236f3b3","line":130,"updated":"2017-03-24 02:04:30.000000000","message":"Add .._network_agent_remove_network here","commit_id":"8ebdddf5e8c6b3951b9db96bf89011cba1146502"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"ee2c8e066b212782b3f7d7d85ea22d4961f8dd0b","unresolved":false,"context_lines":[{"line_number":127,"context_line":".. describe:: --dhcp"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    Remove network from DHCP agent."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":".. describe:: \u003cagent-id\u003e"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    Agent to which a network is removed (ID only)"}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffe62b97_342b2195","line":130,"in_reply_to":"ffe62b97_a236f3b3","updated":"2017-03-24 17:09:32.000000000","message":"Done","commit_id":"8ebdddf5e8c6b3951b9db96bf89011cba1146502"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"e28b90c8310e7e4e6d98b7a655ea5bd195d2850d","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        \u003cagent\u003e"},{"line_number":150,"context_line":"        \u003crouter\u003e"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":".. _network_agent_remove_router:"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":".. describe:: --l3"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffe62b97_82ed2f27","line":152,"updated":"2017-03-24 02:04:30.000000000","message":"you can move this to line 157","commit_id":"8ebdddf5e8c6b3951b9db96bf89011cba1146502"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"ee2c8e066b212782b3f7d7d85ea22d4961f8dd0b","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        \u003cagent\u003e"},{"line_number":150,"context_line":"        \u003crouter\u003e"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":".. _network_agent_remove_router:"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":".. describe:: --l3"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffe62b97_af0d9a38","line":152,"in_reply_to":"ffe62b97_82ed2f27","updated":"2017-03-24 17:09:32.000000000","message":"Done","commit_id":"8ebdddf5e8c6b3951b9db96bf89011cba1146502"},{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"e28b90c8310e7e4e6d98b7a655ea5bd195d2850d","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":".. _network_agent_remove_router:"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":".. describe:: --l3"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    Remove router from L3 agent."},{"line_number":157,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffe62b97_22dc2373","line":154,"range":{"start_line":154,"start_character":0,"end_line":154,"end_character":18},"updated":"2017-03-24 02:04:30.000000000","message":"this should be an option","commit_id":"8ebdddf5e8c6b3951b9db96bf89011cba1146502"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"ee2c8e066b212782b3f7d7d85ea22d4961f8dd0b","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":".. _network_agent_remove_router:"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":".. describe:: --l3"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    Remove router from L3 agent."},{"line_number":157,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"ffe62b97_ef03a20c","line":154,"range":{"start_line":154,"start_character":0,"end_line":154,"end_character":18},"in_reply_to":"ffe62b97_22dc2373","updated":"2017-03-24 17:09:32.000000000","message":"Done","commit_id":"8ebdddf5e8c6b3951b9db96bf89011cba1146502"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c4f4b5201b8e77fc49f8ac82182dd7ed026915b8","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":".. _network_agent_add_router:"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"   Agent to which a network is added (ID only)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffe62b97_5fc3c757","line":57,"range":{"start_line":57,"start_character":14,"end_line":57,"end_character":21},"updated":"2017-03-29 06:20:41.000000000","message":"we use \u003cagent-id\u003e in other places","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"893ea27405c437844483d8b1db92cc71ae1058d5","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":".. _network_agent_add_router:"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"   Agent to which a network is added (ID only)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffe62b97_352246ba","line":57,"range":{"start_line":57,"start_character":14,"end_line":57,"end_character":21},"in_reply_to":"ffe62b97_5fc3c757","updated":"2017-03-29 17:28:33.000000000","message":"Done","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c4f4b5201b8e77fc49f8ac82182dd7ed026915b8","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    openstack agent remove router"},{"line_number":150,"context_line":"        [--l3]"},{"line_number":151,"context_line":"        \u003cagent\u003e"},{"line_number":152,"context_line":"        \u003crouter\u003e"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffe62b97_ffa97b8f","line":151,"range":{"start_line":151,"start_character":8,"end_line":151,"end_character":15},"updated":"2017-03-29 06:20:41.000000000","message":"we use \u003cagent-id\u003e in other places","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"893ea27405c437844483d8b1db92cc71ae1058d5","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    openstack agent remove router"},{"line_number":150,"context_line":"        [--l3]"},{"line_number":151,"context_line":"        \u003cagent\u003e"},{"line_number":152,"context_line":"        \u003crouter\u003e"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffe62b97_6015aa3f","line":151,"range":{"start_line":151,"start_character":8,"end_line":151,"end_character":15},"in_reply_to":"ffe62b97_ffa97b8f","updated":"2017-03-29 17:28:33.000000000","message":"Done","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c4f4b5201b8e77fc49f8ac82182dd7ed026915b8","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        \u003cagent\u003e"},{"line_number":152,"context_line":"        \u003crouter\u003e"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":".. option:: --l3"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    Remove router from L3 agent."}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffe62b97_dfac77a0","line":154,"updated":"2017-03-29 06:20:41.000000000","message":"remove one line here","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"893ea27405c437844483d8b1db92cc71ae1058d5","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        \u003cagent\u003e"},{"line_number":152,"context_line":"        \u003crouter\u003e"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":".. option:: --l3"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    Remove router from L3 agent."}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffe62b97_4010664e","line":154,"in_reply_to":"ffe62b97_dfac77a0","updated":"2017-03-29 17:28:33.000000000","message":"Done","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c4f4b5201b8e77fc49f8ac82182dd7ed026915b8","unresolved":false,"context_lines":[{"line_number":159,"context_line":".. _network_agent_remove_router:"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"   Agent from which router will be deleted. (ID only)"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffe62b97_1fa77fbf","line":162,"range":{"start_line":162,"start_character":14,"end_line":162,"end_character":21},"updated":"2017-03-29 06:20:41.000000000","message":"we use \u003cagent-id\u003e in other places","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"893ea27405c437844483d8b1db92cc71ae1058d5","unresolved":false,"context_lines":[{"line_number":159,"context_line":".. _network_agent_remove_router:"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"   Agent from which router will be deleted. (ID only)"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffe62b97_c0523613","line":162,"range":{"start_line":162,"start_character":14,"end_line":162,"end_character":21},"in_reply_to":"ffe62b97_1fa77fbf","updated":"2017-03-29 17:28:33.000000000","message":"Done","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c4f4b5201b8e77fc49f8ac82182dd7ed026915b8","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"   Agent from which router will be deleted. (ID only)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":".. describe:: \u003crouter\u003e"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffe62b97_5f986773","line":164,"range":{"start_line":164,"start_character":42,"end_line":164,"end_character":43},"updated":"2017-03-29 06:20:41.000000000","message":"remove the period","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"893ea27405c437844483d8b1db92cc71ae1058d5","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":".. describe:: \u003cagent\u003e"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"   Agent from which router will be deleted. (ID only)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":".. describe:: \u003crouter\u003e"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffe62b97_8058ae30","line":164,"range":{"start_line":164,"start_character":42,"end_line":164,"end_character":43},"in_reply_to":"ffe62b97_5f986773","updated":"2017-03-29 17:28:33.000000000","message":"Done","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c4f4b5201b8e77fc49f8ac82182dd7ed026915b8","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":".. describe:: \u003crouter\u003e"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"   Router to be removed. (name or ID)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"network agent set"},{"line_number":171,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffe62b97_7f9d6b64","line":168,"range":{"start_line":168,"start_character":3,"end_line":168,"end_character":23},"updated":"2017-03-29 06:20:41.000000000","message":"\"Router to be removed from an agent\"\n\nremove the period too","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"66255092e2bc844972ae33e08a23298226f986fa","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":".. describe:: \u003crouter\u003e"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"   Router to be removed. (name or ID)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"network agent set"},{"line_number":171,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffe62b97_c2e222a1","line":168,"range":{"start_line":168,"start_character":3,"end_line":168,"end_character":23},"in_reply_to":"ffe62b97_02a12a96","updated":"2017-03-30 08:36:05.000000000","message":"Done","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"d2207050dbd4c5e077ee082d51da1646fccdb12b","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":".. describe:: \u003crouter\u003e"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"   Router to be removed. (name or ID)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"network agent set"},{"line_number":171,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffe62b97_02a12a96","line":168,"range":{"start_line":168,"start_character":3,"end_line":168,"end_character":23},"in_reply_to":"ffe62b97_60436a43","updated":"2017-03-30 08:29:54.000000000","message":"\"from an agent\" ?","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"893ea27405c437844483d8b1db92cc71ae1058d5","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":".. describe:: \u003crouter\u003e"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"   Router to be removed. (name or ID)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"network agent set"},{"line_number":171,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"ffe62b97_60436a43","line":168,"range":{"start_line":168,"start_character":3,"end_line":168,"end_character":23},"in_reply_to":"ffe62b97_7f9d6b64","updated":"2017-03-29 17:28:33.000000000","message":"Done","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"7e6304405bcd541d9ec6e1ff3d30dac0544bf153","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    Remove network from DHCP agent."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":".. network_agent_remove_network:"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":".. describe:: \u003cagent-id\u003e"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"3f044301_772bb581","line":131,"range":{"start_line":131,"start_character":3,"end_line":131,"end_character":31},"updated":"2017-05-08 12:46:13.000000000","message":"Do you want to add anchor for \u003cagent-id\u003e? the format is:\n\n    .. _network_agent_remove_network-agent-id\n\nthe prefix is underline \"_\" and you need to remove the following blank line. By the way, I didn\u0027t see any describe need to refer the anchor, so just remove it, it looks good to me.","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b175b74f0b675235ca206bf7d5386051c89e9594","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    Remove network from DHCP agent."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":".. network_agent_remove_network:"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":".. describe:: \u003cagent-id\u003e"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-rst","patch_set":35,"id":"1f013ff3_ee07f81b","line":131,"range":{"start_line":131,"start_character":3,"end_line":131,"end_character":31},"in_reply_to":"3f044301_772bb581","updated":"2017-05-17 07:07:48.000000000","message":"Done.\n\nIn my understanding, we need an anchor regardless of it is referred or not. Previously we proposed a patch to drop anchors for \"describe\" directive, but Dean said it is useful to have an anchor for positional arguments as we have for optional arguments. So I think it is better to have an anchor here.","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"7e6304405bcd541d9ec6e1ff3d30dac0544bf153","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":".. option:: --l3"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    Remove router from L3 agent."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":".. _network_agent_remove_router-agent-id:"},{"line_number":159,"context_line":".. describe:: \u003cagent-id\u003e"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3f044301_3ea505b6","line":156,"range":{"start_line":156,"start_character":31,"end_line":156,"end_character":32},"updated":"2017-05-08 12:46:13.000000000","message":"please remove the .","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b175b74f0b675235ca206bf7d5386051c89e9594","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":".. option:: --l3"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    Remove router from L3 agent."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":".. _network_agent_remove_router-agent-id:"},{"line_number":159,"context_line":".. describe:: \u003cagent-id\u003e"}],"source_content_type":"text/x-rst","patch_set":35,"id":"1f013ff3_912bf580","line":156,"range":{"start_line":156,"start_character":31,"end_line":156,"end_character":32},"in_reply_to":"3f044301_3ea505b6","updated":"2017-05-17 07:07:48.000000000","message":"Done","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"c93819d3491c5008da2d6fe186a153a2bd882fa9","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    openstack network agent list"},{"line_number":90,"context_line":"        [--agent-type \u003cagent-type\u003e]"},{"line_number":91,"context_line":"        [--host \u003chost\u003e | --network \u003cnetwork\u003e | --router \u003crouter\u003e]"},{"line_number":92,"context_line":"\t[--long]"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":".. option:: --agent-type \u003cagent-type\u003e"}],"source_content_type":"text/x-rst","patch_set":39,"id":"df140735_af1cc477","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":65},"updated":"2017-06-06 07:30:50.000000000","message":"why we can not specify host and network to list the dhcp agent which service this network on the host?","commit_id":"b54e45bcdfc285dc59e06caa505772273221ee9a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"23adbddbe50fc1ab2792c358e575d8b89f9ad06d","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    openstack network agent list"},{"line_number":90,"context_line":"        [--agent-type \u003cagent-type\u003e]"},{"line_number":91,"context_line":"        [--host \u003chost\u003e | --network \u003cnetwork\u003e | --router \u003crouter\u003e]"},{"line_number":92,"context_line":"\t[--long]"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":".. option:: --agent-type \u003cagent-type\u003e"}],"source_content_type":"text/x-rst","patch_set":39,"id":"7f231b9d_4aa32ab3","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":65},"in_reply_to":"df140735_7912e7b6","updated":"2017-06-15 08:59:04.000000000","message":"Done","commit_id":"b54e45bcdfc285dc59e06caa505772273221ee9a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"de0e6c0bb5e944c8a929fa96e6d2905e53e834af","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    openstack network agent list"},{"line_number":90,"context_line":"        [--agent-type \u003cagent-type\u003e]"},{"line_number":91,"context_line":"        [--host \u003chost\u003e | --network \u003cnetwork\u003e | --router \u003crouter\u003e]"},{"line_number":92,"context_line":"\t[--long]"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":".. option:: --agent-type \u003cagent-type\u003e"}],"source_content_type":"text/x-rst","patch_set":39,"id":"df140735_7912e7b6","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":65},"in_reply_to":"df140735_af1cc477","updated":"2017-06-07 15:32:31.000000000","message":"The underlying API allows to specify both host and network/router. AFAIK there is no strong reason we do so, but that is what we have now.\n\nWhen I continued this work, it was already here and I don\u0027t know the detail reason.\n\nI think mutual exclusiveness of --router and --network is reasonable, but we don\u0027t need to include --host here.","commit_id":"b54e45bcdfc285dc59e06caa505772273221ee9a"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"c93819d3491c5008da2d6fe186a153a2bd882fa9","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    openstack network agent list"},{"line_number":90,"context_line":"        [--agent-type \u003cagent-type\u003e]"},{"line_number":91,"context_line":"        [--host \u003chost\u003e | --network \u003cnetwork\u003e | --router \u003crouter\u003e]"},{"line_number":92,"context_line":"\t[--long]"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":".. option:: --agent-type \u003cagent-type\u003e"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":39,"id":"df140735_afc96426","line":92,"range":{"start_line":92,"start_character":0,"end_line":92,"end_character":1},"updated":"2017-06-06 07:30:50.000000000","message":"nic","commit_id":"b54e45bcdfc285dc59e06caa505772273221ee9a"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"23adbddbe50fc1ab2792c358e575d8b89f9ad06d","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    openstack network agent list"},{"line_number":90,"context_line":"        [--agent-type \u003cagent-type\u003e]"},{"line_number":91,"context_line":"        [--host \u003chost\u003e | --network \u003cnetwork\u003e | --router \u003crouter\u003e]"},{"line_number":92,"context_line":"\t[--long]"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":".. option:: --agent-type \u003cagent-type\u003e"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":39,"id":"7f231b9d_2aa8ee8a","line":92,"range":{"start_line":92,"start_character":0,"end_line":92,"end_character":1},"in_reply_to":"df140735_afc96426","updated":"2017-06-15 08:59:04.000000000","message":"Done","commit_id":"b54e45bcdfc285dc59e06caa505772273221ee9a"}],"doc/source/command-objects/router.rst":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"e4efaeb1b092bda8d869e4fa46e1164fdbef1167","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        [--enable | --disable]"},{"line_number":139,"context_line":"        [--long]"},{"line_number":140,"context_line":"        [--project \u003cproject\u003e [--project-domain \u003cproject-domain\u003e]]"},{"line_number":141,"context_line":"        [--agents \u003cagent-id\u003e]"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":".. option:: --agents \u003cagent-id\u003e"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"fa31d9ce_8cac398d","line":141,"updated":"2017-02-15 22:33:23.000000000","message":"not plural?","commit_id":"d4a066225afdc4dd9000d37233feb60b83f66469"}],"openstackclient/network/v2/network_agent.py":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"4a0c32d6f56225930e3839a0c9c618fa9096860e","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        parser.add_argument("},{"line_number":78,"context_line":"            \u0027--routers\u0027,"},{"line_number":79,"context_line":"            metavar\u003d\u0027\u003cagent-id\u003e\u0027,"},{"line_number":80,"context_line":"            help\u003d(_(\u0027L3 agent ID\u0027))"},{"line_number":81,"context_line":"        )"},{"line_number":82,"context_line":"        return parser"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_747846c5","line":80,"range":{"start_line":80,"start_character":18,"end_line":80,"end_character":34},"updated":"2016-11-08 18:01:09.000000000","message":"This should be the same as the msg in the doc.\n\"L3 agent to query for routers (ID only)\"\n\nAnd the outer () is not necessary.","commit_id":"e5508b42cacbf6e75f5a54bc4fa2d52886a1406e"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"d7fd7eb511a6e55a98f620a4f8288da08c4d7a20","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        parser.add_argument("},{"line_number":78,"context_line":"            \u0027--routers\u0027,"},{"line_number":79,"context_line":"            metavar\u003d\u0027\u003cagent-id\u003e\u0027,"},{"line_number":80,"context_line":"            help\u003d(_(\u0027L3 agent ID\u0027))"},{"line_number":81,"context_line":"        )"},{"line_number":82,"context_line":"        return parser"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_9c7941cb","line":80,"range":{"start_line":80,"start_character":18,"end_line":80,"end_character":34},"in_reply_to":"9a629dbe_747846c5","updated":"2016-11-09 18:23:55.000000000","message":"Done","commit_id":"e5508b42cacbf6e75f5a54bc4fa2d52886a1406e"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"4a0c32d6f56225930e3839a0c9c618fa9096860e","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        parser.add_argument("},{"line_number":204,"context_line":"            \u0027router\u0027,"},{"line_number":205,"context_line":"            metavar\u003d\u0027\u003crouter\u003e\u0027,"},{"line_number":206,"context_line":"            help\u003d_(\"Router to be added (name of ID)\")"},{"line_number":207,"context_line":"        )"},{"line_number":208,"context_line":"        parser.add_argument("},{"line_number":209,"context_line":"            \u0027agent\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_28d4b245","line":206,"range":{"start_line":206,"start_character":20,"end_line":206,"end_character":52},"updated":"2016-11-08 18:01:09.000000000","message":"Please keep the msg the same as those in rst file. The same comment to other help messages.","commit_id":"e5508b42cacbf6e75f5a54bc4fa2d52886a1406e"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"d7fd7eb511a6e55a98f620a4f8288da08c4d7a20","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        parser.add_argument("},{"line_number":204,"context_line":"            \u0027router\u0027,"},{"line_number":205,"context_line":"            metavar\u003d\u0027\u003crouter\u003e\u0027,"},{"line_number":206,"context_line":"            help\u003d_(\"Router to be added (name of ID)\")"},{"line_number":207,"context_line":"        )"},{"line_number":208,"context_line":"        parser.add_argument("},{"line_number":209,"context_line":"            \u0027agent\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_dc7f39a9","line":206,"range":{"start_line":206,"start_character":20,"end_line":206,"end_character":52},"in_reply_to":"9a629dbe_28d4b245","updated":"2016-11-09 18:23:55.000000000","message":"Done","commit_id":"e5508b42cacbf6e75f5a54bc4fa2d52886a1406e"},{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"25a9c39c763782a5780c87753ea2a0fd8ff58afb","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        l3_agent \u003d client.get_agent(parsed_args.agent, ignore_missing\u003dFalse)"},{"line_number":218,"context_line":"        router \u003d client.find_router(parsed_args.router, ignore_missing\u003dFalse)"},{"line_number":219,"context_line":"        client.add_router_to_agent(l3_agent, router)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"class RemoveRouterFromAgent(command.Command):"},{"line_number":223,"context_line":"    \"\"\"Remove router from agent\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_e6e4d93c","line":220,"updated":"2016-11-07 17:57:22.000000000","message":"I was thinking if this should return something so that the user can know if the addition/deletion is successful or not.","commit_id":"e5508b42cacbf6e75f5a54bc4fa2d52886a1406e"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"d7fd7eb511a6e55a98f620a4f8288da08c4d7a20","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        l3_agent \u003d client.get_agent(parsed_args.agent, ignore_missing\u003dFalse)"},{"line_number":218,"context_line":"        router \u003d client.find_router(parsed_args.router, ignore_missing\u003dFalse)"},{"line_number":219,"context_line":"        client.add_router_to_agent(l3_agent, router)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"class RemoveRouterFromAgent(command.Command):"},{"line_number":223,"context_line":"    \"\"\"Remove router from agent\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_1c4c519d","line":220,"in_reply_to":"9a629dbe_c84c1673","updated":"2016-11-09 18:23:55.000000000","message":"Done\n\nmodified sdk so that it will return the API response.","commit_id":"e5508b42cacbf6e75f5a54bc4fa2d52886a1406e"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"4a0c32d6f56225930e3839a0c9c618fa9096860e","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        l3_agent \u003d client.get_agent(parsed_args.agent, ignore_missing\u003dFalse)"},{"line_number":218,"context_line":"        router \u003d client.find_router(parsed_args.router, ignore_missing\u003dFalse)"},{"line_number":219,"context_line":"        client.add_router_to_agent(l3_agent, router)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"class RemoveRouterFromAgent(command.Command):"},{"line_number":223,"context_line":"    \"\"\"Remove router from agent\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_c84c1673","line":220,"in_reply_to":"9a629dbe_e6e4d93c","updated":"2016-11-08 18:01:09.000000000","message":"I think we should catch the exception returned by rest api, and raise a CommandError in OSC to tell users the command has failed. If it succeeded, we can return nothing. :)","commit_id":"e5508b42cacbf6e75f5a54bc4fa2d52886a1406e"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"63b1e8b58c4a47b9799a350ea6b12a8424c11504","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        l3_agent \u003d client.get_agent(parsed_args.agent, ignore_missing\u003dFalse)"},{"line_number":218,"context_line":"        router \u003d client.find_router(parsed_args.router, ignore_missing\u003dFalse)"},{"line_number":219,"context_line":"        client.add_router_to_agent(l3_agent, router)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"class RemoveRouterFromAgent(command.Command):"},{"line_number":223,"context_line":"    \"\"\"Remove router from agent\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_9cdc1ce6","line":220,"in_reply_to":"9a629dbe_e6e4d93c","updated":"2016-11-08 16:03:07.000000000","message":"print(_(\u0027Router %s added to Agent %s\u0027) % router, l3_agent)","commit_id":"e5508b42cacbf6e75f5a54bc4fa2d52886a1406e"},{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"25a9c39c763782a5780c87753ea2a0fd8ff58afb","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":241,"context_line":"        l3_agent \u003d client.get_agent(parsed_args.agent, ignore_missing\u003dFalse)"},{"line_number":242,"context_line":"        router \u003d client.find_router(parsed_args.router, ignore_missing\u003dFalse)"},{"line_number":243,"context_line":"        client.remove_router_from_agent(l3_agent, router)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_a6c10183","line":243,"updated":"2016-11-07 17:57:22.000000000","message":"ditto","commit_id":"e5508b42cacbf6e75f5a54bc4fa2d52886a1406e"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"d7fd7eb511a6e55a98f620a4f8288da08c4d7a20","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":241,"context_line":"        l3_agent \u003d client.get_agent(parsed_args.agent, ignore_missing\u003dFalse)"},{"line_number":242,"context_line":"        router \u003d client.find_router(parsed_args.router, ignore_missing\u003dFalse)"},{"line_number":243,"context_line":"        client.remove_router_from_agent(l3_agent, router)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_9c0ea139","line":243,"in_reply_to":"9a629dbe_a6c10183","updated":"2016-11-09 18:23:55.000000000","message":"modified sdk to return API response.","commit_id":"e5508b42cacbf6e75f5a54bc4fa2d52886a1406e"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"ee00ad7c272f807a1f3948c1b32365777c97f00f","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            \u0027agent\u0027,"},{"line_number":210,"context_line":"            metavar\u003d\u0027\u003cagent\u003e\u0027,"},{"line_number":211,"context_line":"            help\u003d_(\"L3 agent (ID only)\")"},{"line_number":212,"context_line":"        )"},{"line_number":213,"context_line":"        return parser"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_9f8129c6","line":212,"updated":"2016-11-09 22:54:22.000000000","message":"What about having only one positional argument and making the other a required optional argument?","commit_id":"3befdc290b5f3277f20fdaf8195b3086b6da03eb"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"2f2f1617ece47ef449e60c7d3cd0b758e8cefcaf","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        return columns, data"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"class AddRouterToAgent(command.Command):"},{"line_number":208,"context_line":"    \"\"\"Add router to agent\"\"\""},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_da584135","line":207,"updated":"2016-12-02 19:45:32.000000000","message":"These classes should be in alphabetical order in the file","commit_id":"ef60f0361f6d99dfdf7c79293bed652dbb9aab74"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"ceebef47d4feb70839b583c14d45320227830bbe","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        return columns, data"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"class AddRouterToAgent(command.Command):"},{"line_number":208,"context_line":"    \"\"\"Add router to agent\"\"\""},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a71b18c_5ee88cb4","line":207,"in_reply_to":"3a71b18c_da584135","updated":"2016-12-04 18:41:28.000000000","message":"Done","commit_id":"ef60f0361f6d99dfdf7c79293bed652dbb9aab74"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"3f4b179ef027f03c920faca7749ffef1ebaf4c46","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        return parser"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def list_routers_on_agent(self, client, parsed_args):"},{"line_number":189,"context_line":"        columns \u003d ("},{"line_number":190,"context_line":"            \u0027id\u0027,"},{"line_number":191,"context_line":"            \u0027host\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a1ced50_fc701b42","line":188,"range":{"start_line":188,"start_character":8,"end_line":188,"end_character":29},"updated":"2017-03-22 18:48:42.000000000","message":"Why is this called \"list_routers_on_agent\"? It actually lists the agents associated to the given router, not the other way around like \"$neutron router-list-on-l3-agent\" would do.\n\nOr did I get something wrong?","commit_id":"fc45e4eac3d31628a31bac69071909518f6e6a0f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b53c83ac085091d5ca25262e8db8f3790c9e8cbb","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            help\u003d_(\u0027List agents hosting a network (name or ID)\u0027)"},{"line_number":179,"context_line":"        )"},{"line_number":180,"context_line":"        parser.add_argument("},{"line_number":181,"context_line":"            \u0027--router\u0027,"},{"line_number":182,"context_line":"            metavar\u003d\u0027\u003crouter\u003e\u0027,"},{"line_number":183,"context_line":"            help\u003d_(\u0027List agents hosting this router (name or ID)\u0027)"},{"line_number":184,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":27,"id":"ffe62b97_6c379db2","line":181,"range":{"start_line":181,"start_character":12,"end_line":181,"end_character":23},"updated":"2017-03-24 18:03:15.000000000","message":"For this option, the corresponding logic should be like L.246 (if parsed_args.network).","commit_id":"64ffb6c948e850df03a8b35ce3d010e14ad05ca4"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"294067faf9dbd5edae7cb974b9da9e2a2385b7d5","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        return parser"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def list_routers_on_agent(self, client, parsed_args):"},{"line_number":189,"context_line":"        columns \u003d ("},{"line_number":190,"context_line":"            \u0027id\u0027,"},{"line_number":191,"context_line":"            \u0027host\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"ffe62b97_0a14749f","line":188,"updated":"2017-03-24 17:47:26.000000000","message":"This seems wrong to me, what resource is being listed?  It doesn\u0027t look like a list of agents...\n\n\nAlso, keep these inline.  When you are splitting these up like this because the columns are different, that\u0027s a clue that it might not be the right place for that listing.","commit_id":"64ffb6c948e850df03a8b35ce3d010e14ad05ca4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b53c83ac085091d5ca25262e8db8f3790c9e8cbb","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        return parser"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def list_routers_on_agent(self, client, parsed_args):"},{"line_number":189,"context_line":"        columns \u003d ("},{"line_number":190,"context_line":"            \u0027id\u0027,"},{"line_number":191,"context_line":"            \u0027host\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"ffe62b97_6ce9dd18","line":188,"in_reply_to":"ffe62b97_0a14749f","updated":"2017-03-24 18:03:15.000000000","message":"I think we should do the similar approach as we do for network\n\nhttp://git.openstack.org/cgit/openstack/python-openstackclient/tree/doc/source/command-objects/network.rst?id\u003df4fd8f6e31dcc177b56d1e618cdefef728d09157#n206\n\n openstack router list --agent \u003cagent-id\u003e","commit_id":"64ffb6c948e850df03a8b35ce3d010e14ad05ca4"},{"author":{"_account_id":23913,"name":"David Rabel","email":"rabel@b1-systems.de","username":"rabel"},"change_message_id":"f9db028caceaae1961b53f1f25ef36dd42b07e44","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            metavar\u003d\u0027\u003cnetwork\u003e\u0027,"},{"line_number":178,"context_line":"            help\u003d_(\u0027List agents hosting a network (name or ID)\u0027)"},{"line_number":179,"context_line":"        )"},{"line_number":180,"context_line":"        parser.add_argument("},{"line_number":181,"context_line":"            \u0027--router\u0027,"},{"line_number":182,"context_line":"            metavar\u003d\u0027\u003crouter\u003e\u0027,"},{"line_number":183,"context_line":"            help\u003d_(\u0027List agents hosting this router (name or ID)\u0027)"}],"source_content_type":"text/x-python","patch_set":28,"id":"ffe62b97_e35e0811","line":180,"range":{"start_line":180,"start_character":8,"end_line":180,"end_character":27},"updated":"2017-03-25 10:05:03.000000000","message":"btw: --router, --network and --host seem to be mutually exclusive. do you think we should add this here?\n\nbut probably this can be done in a seperate change, after this is merged.","commit_id":"77c4623c3089f643f861f7db00ed0726bedd4ccd"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"7f2696ca392ae8f4b066cfe310aa90886d606860","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            metavar\u003d\u0027\u003cnetwork\u003e\u0027,"},{"line_number":178,"context_line":"            help\u003d_(\u0027List agents hosting a network (name or ID)\u0027)"},{"line_number":179,"context_line":"        )"},{"line_number":180,"context_line":"        parser.add_argument("},{"line_number":181,"context_line":"            \u0027--router\u0027,"},{"line_number":182,"context_line":"            metavar\u003d\u0027\u003crouter\u003e\u0027,"},{"line_number":183,"context_line":"            help\u003d_(\u0027List agents hosting this router (name or ID)\u0027)"}],"source_content_type":"text/x-python","patch_set":28,"id":"ffe62b97_0fca2d6c","line":180,"range":{"start_line":180,"start_character":8,"end_line":180,"end_character":27},"in_reply_to":"ffe62b97_e35e0811","updated":"2017-03-25 19:32:46.000000000","message":"Done\n\nGood catch","commit_id":"77c4623c3089f643f861f7db00ed0726bedd4ccd"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c4f4b5201b8e77fc49f8ac82182dd7ed026915b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"ffe62b97_1f953f33","updated":"2017-03-29 06:20:41.000000000","message":"make sure the help lines up with the suggestions in the rst","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"893ea27405c437844483d8b1db92cc71ae1058d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"ffe62b97_bb6527b7","in_reply_to":"ffe62b97_1f953f33","updated":"2017-03-29 17:28:33.000000000","message":"Done","commit_id":"cabe92a48352319e039740e2ed1475377cbaea68"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"71e1346f48e353b22da21b5042f9faa8ddb3139f","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        filters \u003d {}"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        if parsed_args.router is not None:"},{"line_number":227,"context_line":"            columns \u003d ("},{"line_number":228,"context_line":"                \u0027id\u0027,"},{"line_number":229,"context_line":"                \u0027host\u0027,"},{"line_number":230,"context_line":"                \u0027is_admin_state_up\u0027,"}],"source_content_type":"text/x-python","patch_set":30,"id":"dfeb2761_71b8a429","line":227,"updated":"2017-03-31 14:19:26.000000000","message":"Why are the columns different when --router is used?","commit_id":"69f2f7f4cff7c19db04da6321a54761fcb9b0c22"},{"author":{"_account_id":8124,"name":"cbrandily","email":"zzelle@gmail.com","username":"cbrandily"},"change_message_id":"8c391611ff728fd24777e34584aef29280331299","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                exceptions.CommandError(msg)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class AddRouterToAgent(command.Command):"},{"line_number":88,"context_line":"    _description \u003d _(\"Add router to an agent\")"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":32,"id":"dfeb2761_316e4195","line":87,"updated":"2017-04-04 11:26:00.000000000","message":"We should not ensure that neutron supports the l3_agent _scheduler_extension?","commit_id":"5954e908fd8fc172a5a0f2df1162462b96a9ea61"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"e81086f56ecf78b139a142baa6bb4f304bb2ffe8","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                exceptions.CommandError(msg)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class AddRouterToAgent(command.Command):"},{"line_number":88,"context_line":"    _description \u003d _(\"Add router to an agent\")"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":32,"id":"bff0334d_0d2af67d","line":87,"in_reply_to":"dfeb2761_316e4195","updated":"2017-04-10 04:32:42.000000000","message":"No, the client will handle if the extension is not supported","commit_id":"5954e908fd8fc172a5a0f2df1162462b96a9ea61"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c69c8fee4b85d916fdeec790bf649237c0f6d517","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class AddRouterToAgent(command.Command):"},{"line_number":88,"context_line":"    _description \u003d _(\"Add router to an agent\")"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def get_parser(self, prog_name):"},{"line_number":91,"context_line":"        parser \u003d super(AddRouterToAgent, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":32,"id":"bff0334d_5cf7555a","line":88,"range":{"start_line":88,"start_character":36,"end_line":88,"end_character":44},"updated":"2017-04-11 14:40:22.000000000","message":"s/an L3 agent to be consistent with L318\n\nnit: this method and RemoveRouterFromAgent should be next to each other in this file","commit_id":"5954e908fd8fc172a5a0f2df1162462b96a9ea61"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d2e74e9f877c73d59a1b8da48b1c81bd0777045e","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class AddRouterToAgent(command.Command):"},{"line_number":88,"context_line":"    _description \u003d _(\"Add router to an agent\")"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def get_parser(self, prog_name):"},{"line_number":91,"context_line":"        parser \u003d super(AddRouterToAgent, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":32,"id":"5ff73747_faf0ae69","line":88,"in_reply_to":"5ff73747_fa066e86","updated":"2017-04-26 19:17:38.000000000","message":"Aga..... please ignore my above comment. I misunderstood the context completely. I now agree with Dean.","commit_id":"5954e908fd8fc172a5a0f2df1162462b96a9ea61"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"75c6c75a45f72c1cf2f243922bb72f0f363fec9a","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class AddRouterToAgent(command.Command):"},{"line_number":88,"context_line":"    _description \u003d _(\"Add router to an agent\")"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def get_parser(self, prog_name):"},{"line_number":91,"context_line":"        parser \u003d super(AddRouterToAgent, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":32,"id":"bff0334d_a05d087a","line":88,"in_reply_to":"bff0334d_5cf7555a","updated":"2017-04-11 21:57:35.000000000","message":"Actually we keep classes sorted.  And --l3 is an option, so assuming L3 at this level seems odd.. ditto every additional occurrence of that note below...","commit_id":"5954e908fd8fc172a5a0f2df1162462b96a9ea61"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c0bab1240054e59b3933e1b27c0656d16e58579a","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class AddRouterToAgent(command.Command):"},{"line_number":88,"context_line":"    _description \u003d _(\"Add router to an agent\")"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def get_parser(self, prog_name):"},{"line_number":91,"context_line":"        parser \u003d super(AddRouterToAgent, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":32,"id":"5ff73747_fa066e86","line":88,"in_reply_to":"bff0334d_a05d087a","updated":"2017-04-26 19:13:01.000000000","message":"Honestly I am confused a bit.\n\nIn the review of dhcp-agent operation, you suggested to use --dhcp option for AddNetworkToAgent operation although \"Add network to a DHCP agnet\" is the only operation defined for a network. --dhcp means DHCP agent.\n\nThe agent name which handles router is called as L3-agent. Considering the analogy to DHCP agent, --l3 sounds consistent to me.\n\nOr do you suggest --l3-agent or something other?","commit_id":"5954e908fd8fc172a5a0f2df1162462b96a9ea61"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c69c8fee4b85d916fdeec790bf649237c0f6d517","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        parser.add_argument("},{"line_number":98,"context_line":"            \u0027agent_id\u0027,"},{"line_number":99,"context_line":"            metavar\u003d\u0027\u003cagent-id\u003e\u0027,"},{"line_number":100,"context_line":"            help\u003d_(\"Agent to which a router is added (ID only)\")"},{"line_number":101,"context_line":"        )"},{"line_number":102,"context_line":"        parser.add_argument("},{"line_number":103,"context_line":"            \u0027router\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"bff0334d_7c91f9f0","line":100,"range":{"start_line":100,"start_character":20,"end_line":100,"end_character":25},"updated":"2017-04-11 14:40:22.000000000","message":"s/L3 agent","commit_id":"5954e908fd8fc172a5a0f2df1162462b96a9ea61"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c69c8fee4b85d916fdeec790bf649237c0f6d517","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        parser.add_argument("},{"line_number":103,"context_line":"            \u0027router\u0027,"},{"line_number":104,"context_line":"            metavar\u003d\u0027\u003crouter\u003e\u0027,"},{"line_number":105,"context_line":"            help\u003d_(\"Router to be added to an agent (name of ID)\")"},{"line_number":106,"context_line":"        )"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":32,"id":"bff0334d_1cc42df4","line":105,"range":{"start_line":105,"start_character":45,"end_line":105,"end_character":50},"updated":"2017-04-11 14:40:22.000000000","message":"s/L3 agent","commit_id":"5954e908fd8fc172a5a0f2df1162462b96a9ea61"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c69c8fee4b85d916fdeec790bf649237c0f6d517","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"class RemoveRouterFromAgent(command.Command):"},{"line_number":318,"context_line":"    _description \u003d _(\"Remove router from L3 agent\")"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def get_parser(self, prog_name):"},{"line_number":321,"context_line":"        parser \u003d super(RemoveRouterFromAgent, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":32,"id":"bff0334d_3c66d12b","line":318,"range":{"start_line":318,"start_character":41,"end_line":318,"end_character":49},"updated":"2017-04-11 14:40:22.000000000","message":"s/an L3 agent","commit_id":"5954e908fd8fc172a5a0f2df1162462b96a9ea61"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dd366361e0306e51aeebb4a1b70874080ac062d8","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"class RemoveRouterFromAgent(command.Command):"},{"line_number":318,"context_line":"    _description \u003d _(\"Remove router from L3 agent\")"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def get_parser(self, prog_name):"},{"line_number":321,"context_line":"        parser \u003d super(RemoveRouterFromAgent, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":32,"id":"5ff73747_3f2fcc88","line":318,"range":{"start_line":318,"start_character":41,"end_line":318,"end_character":49},"in_reply_to":"bff0334d_3c66d12b","updated":"2017-04-29 16:14:24.000000000","message":"Changed to \u0027an agent\u0027 based on the discussion so far (including DHCP agent review)","commit_id":"5954e908fd8fc172a5a0f2df1162462b96a9ea61"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c69c8fee4b85d916fdeec790bf649237c0f6d517","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        parser.add_argument("},{"line_number":328,"context_line":"            \u0027agent_id\u0027,"},{"line_number":329,"context_line":"            metavar\u003d\u0027\u003cagent-id\u003e\u0027,"},{"line_number":330,"context_line":"            help\u003d_(\"Agent from which router will be deleted (ID only)\")"},{"line_number":331,"context_line":"        )"},{"line_number":332,"context_line":"        parser.add_argument("},{"line_number":333,"context_line":"            \u0027router\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"bff0334d_fc6bc9ed","line":330,"range":{"start_line":330,"start_character":20,"end_line":330,"end_character":25},"updated":"2017-04-11 14:40:22.000000000","message":"s/L3 agent","commit_id":"5954e908fd8fc172a5a0f2df1162462b96a9ea61"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c69c8fee4b85d916fdeec790bf649237c0f6d517","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        parser.add_argument("},{"line_number":328,"context_line":"            \u0027agent_id\u0027,"},{"line_number":329,"context_line":"            metavar\u003d\u0027\u003cagent-id\u003e\u0027,"},{"line_number":330,"context_line":"            help\u003d_(\"Agent from which router will be deleted (ID only)\")"},{"line_number":331,"context_line":"        )"},{"line_number":332,"context_line":"        parser.add_argument("},{"line_number":333,"context_line":"            \u0027router\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"bff0334d_bc79c1c8","line":330,"range":{"start_line":330,"start_character":52,"end_line":330,"end_character":59},"updated":"2017-04-11 14:40:22.000000000","message":"s/removed","commit_id":"5954e908fd8fc172a5a0f2df1162462b96a9ea61"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dd366361e0306e51aeebb4a1b70874080ac062d8","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        parser.add_argument("},{"line_number":333,"context_line":"            \u0027router\u0027,"},{"line_number":334,"context_line":"            metavar\u003d\u0027\u003crouter\u003e\u0027,"},{"line_number":335,"context_line":"            help\u003d_(\"Router to be removed from an agent (name of ID)\")"},{"line_number":336,"context_line":"        )"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":32,"id":"5ff73747_ff528412","line":335,"range":{"start_line":335,"start_character":56,"end_line":335,"end_character":66},"updated":"2017-04-29 16:14:24.000000000","message":"-\u003e name or ID","commit_id":"5954e908fd8fc172a5a0f2df1162462b96a9ea61"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c69c8fee4b85d916fdeec790bf649237c0f6d517","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        parser.add_argument("},{"line_number":333,"context_line":"            \u0027router\u0027,"},{"line_number":334,"context_line":"            metavar\u003d\u0027\u003crouter\u003e\u0027,"},{"line_number":335,"context_line":"            help\u003d_(\"Router to be removed from an agent (name of ID)\")"},{"line_number":336,"context_line":"        )"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":32,"id":"bff0334d_7c7fb9aa","line":335,"range":{"start_line":335,"start_character":49,"end_line":335,"end_character":54},"updated":"2017-04-11 14:40:22.000000000","message":"s/L3 agent","commit_id":"5954e908fd8fc172a5a0f2df1162462b96a9ea61"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"7e6304405bcd541d9ec6e1ff3d30dac0544bf153","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    def take_action(self, parsed_args):"},{"line_number":111,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":112,"context_line":"        agent \u003d client.get_agent(parsed_args.agent_id)"},{"line_number":113,"context_line":"        router \u003d client.find_router(parsed_args.router)"},{"line_number":114,"context_line":"        if parsed_args.l3:"},{"line_number":115,"context_line":"            client.add_router_to_agent(agent, router)"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"3f044301_e16a60b1","line":113,"updated":"2017-05-08 12:46:13.000000000","message":"please add \"ignore_missing\u003dFalse\". If not, find_router return None when router do not existed.","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b175b74f0b675235ca206bf7d5386051c89e9594","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    def take_action(self, parsed_args):"},{"line_number":111,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":112,"context_line":"        agent \u003d client.get_agent(parsed_args.agent_id)"},{"line_number":113,"context_line":"        router \u003d client.find_router(parsed_args.router)"},{"line_number":114,"context_line":"        if parsed_args.l3:"},{"line_number":115,"context_line":"            client.add_router_to_agent(agent, router)"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"1f013ff3_91cad517","line":113,"in_reply_to":"3f044301_e16a60b1","updated":"2017-05-17 07:07:48.000000000","message":"Done","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"7e6304405bcd541d9ec6e1ff3d30dac0544bf153","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                \u0027HA State\u0027,"},{"line_number":240,"context_line":"            )"},{"line_number":241,"context_line":"            router \u003d client.find_router(parsed_args.router)"},{"line_number":242,"context_line":"            data \u003d client.routers_hosting_l3_agents(router)"},{"line_number":243,"context_line":"            return (column_headers,"},{"line_number":244,"context_line":"                    (utils.get_item_properties("},{"line_number":245,"context_line":"                        s, columns,"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f044301_61ead00f","line":242,"range":{"start_line":242,"start_character":26,"end_line":242,"end_character":51},"updated":"2017-05-08 12:46:13.000000000","message":"No \"ignore_missing\u003dFalse\", so if router do not existed, find_router() return None, what happen when routers_hosting_l3_agents execute with None, return empty list or raise exception?","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b175b74f0b675235ca206bf7d5386051c89e9594","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                \u0027HA State\u0027,"},{"line_number":240,"context_line":"            )"},{"line_number":241,"context_line":"            router \u003d client.find_router(parsed_args.router)"},{"line_number":242,"context_line":"            data \u003d client.routers_hosting_l3_agents(router)"},{"line_number":243,"context_line":"            return (column_headers,"},{"line_number":244,"context_line":"                    (utils.get_item_properties("},{"line_number":245,"context_line":"                        s, columns,"}],"source_content_type":"text/x-python","patch_set":35,"id":"1f013ff3_246aa1b2","line":242,"range":{"start_line":242,"start_character":26,"end_line":242,"end_character":51},"in_reply_to":"3f044301_61ead00f","updated":"2017-05-17 07:07:48.000000000","message":"In this case, router must exist. I added ignore_missing\u003dFalse to find_router.","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"7e6304405bcd541d9ec6e1ff3d30dac0544bf153","unresolved":false,"context_lines":[{"line_number":340,"context_line":"    def take_action(self, parsed_args):"},{"line_number":341,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":342,"context_line":"        agent \u003d client.get_agent(parsed_args.agent_id)"},{"line_number":343,"context_line":"        router \u003d client.find_router(parsed_args.router)"},{"line_number":344,"context_line":"        if parsed_args.l3:"},{"line_number":345,"context_line":"            client.remove_router_from_agent(agent, router)"},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"3f044301_e141403b","line":343,"updated":"2017-05-08 12:46:13.000000000","message":"please add \"ignore_missing\u003dFalse\". If not, find_router return None when router do not existed.","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b175b74f0b675235ca206bf7d5386051c89e9594","unresolved":false,"context_lines":[{"line_number":340,"context_line":"    def take_action(self, parsed_args):"},{"line_number":341,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":342,"context_line":"        agent \u003d client.get_agent(parsed_args.agent_id)"},{"line_number":343,"context_line":"        router \u003d client.find_router(parsed_args.router)"},{"line_number":344,"context_line":"        if parsed_args.l3:"},{"line_number":345,"context_line":"            client.remove_router_from_agent(agent, router)"},{"line_number":346,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"1f013ff3_04ffa534","line":343,"in_reply_to":"3f044301_e141403b","updated":"2017-05-17 07:07:48.000000000","message":"Done","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"8d43594fd7c3a967b03785c42fc5dc4533150e60","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            data \u003d client.network_hosting_dhcp_agents(network)"},{"line_number":230,"context_line":"        elif parsed_args.router is not None:"},{"line_number":231,"context_line":"            columns +\u003d (\u0027ha_state\u0027,)"},{"line_number":232,"context_line":"            column_headers +\u003d (\u0027HA State\u0027,)"},{"line_number":233,"context_line":"            router \u003d client.find_router(parsed_args.router,"},{"line_number":234,"context_line":"                                        ignore_missing\u003dFalse)"},{"line_number":235,"context_line":"            data \u003d client.routers_hosting_l3_agents(router)"}],"source_content_type":"text/x-python","patch_set":36,"id":"ff0f0b1f_a9ed548c","line":232,"range":{"start_line":232,"start_character":32,"end_line":232,"end_character":40},"updated":"2017-05-22 08:50:41.000000000","message":"The \"HA State\" is agent attribute, right? Why don\u0027t we set it as regular column for all type agents? It\u0027s weird to add column for specified option(--router), blank string is fine if some type agents don\u0027t have the \"HA State\" attribute, thought?","commit_id":"0507504d6d3e27d23c2b9a33c3aac1e1f06784b8"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"243a851587bfbc60e12ad39992330e10b1d607ee","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            data \u003d client.network_hosting_dhcp_agents(network)"},{"line_number":230,"context_line":"        elif parsed_args.router is not None:"},{"line_number":231,"context_line":"            columns +\u003d (\u0027ha_state\u0027,)"},{"line_number":232,"context_line":"            column_headers +\u003d (\u0027HA State\u0027,)"},{"line_number":233,"context_line":"            router \u003d client.find_router(parsed_args.router,"},{"line_number":234,"context_line":"                                        ignore_missing\u003dFalse)"},{"line_number":235,"context_line":"            data \u003d client.routers_hosting_l3_agents(router)"}],"source_content_type":"text/x-python","patch_set":36,"id":"df140735_d9c0d37f","line":232,"in_reply_to":"df140735_d481484c","updated":"2017-06-06 16:55:16.000000000","message":"I don\u0027t have a strong opinion on this. What I can do is just to follow the consensus in the OSC cores.\n\nNote that the underlying APIs in Neutron are different and the neutron team could add more different columns. If L3 agent needs another column, we will add it. If BGP agent needs another, we will add it. Anyway this is a separate discussion of separate implementation layers.","commit_id":"0507504d6d3e27d23c2b9a33c3aac1e1f06784b8"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"fad041875bdd5bc745ca863fe54220065f61b2a0","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            data \u003d client.network_hosting_dhcp_agents(network)"},{"line_number":230,"context_line":"        elif parsed_args.router is not None:"},{"line_number":231,"context_line":"            columns +\u003d (\u0027ha_state\u0027,)"},{"line_number":232,"context_line":"            column_headers +\u003d (\u0027HA State\u0027,)"},{"line_number":233,"context_line":"            router \u003d client.find_router(parsed_args.router,"},{"line_number":234,"context_line":"                                        ignore_missing\u003dFalse)"},{"line_number":235,"context_line":"            data \u003d client.routers_hosting_l3_agents(router)"}],"source_content_type":"text/x-python","patch_set":36,"id":"ff0f0b1f_b84d593f","line":232,"in_reply_to":"ff0f0b1f_212142b1","updated":"2017-05-24 00:49:21.000000000","message":"As my OpenStack operator hat, \u0027HA state\u0027 is a field we always want to have when we use L3-HA deployment option. This means operators always needs to specify --long. L3 HA is the most typical deployment scenario when using the neutron reference implementation. Considering this, I think it is a good idea to show \u0027HA state\u0027 by default.\n\nOn the other hand, it changes the default columns conditionally. I am not sure which is better for users (this is an admin operation, so in this case a user is an operator).\n\nAt least, as of now, adding \u0027HA state\u0027 for all agents sounds surprising to me as this field does not exist for other agent types (even though it some agent might support HA state in future).\n\nIf you prefer to --long option route, I am okay.\n\nThought?","commit_id":"0507504d6d3e27d23c2b9a33c3aac1e1f06784b8"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"8cf0edeead81ba35131e6edfdd2911fffab943d0","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            data \u003d client.network_hosting_dhcp_agents(network)"},{"line_number":230,"context_line":"        elif parsed_args.router is not None:"},{"line_number":231,"context_line":"            columns +\u003d (\u0027ha_state\u0027,)"},{"line_number":232,"context_line":"            column_headers +\u003d (\u0027HA State\u0027,)"},{"line_number":233,"context_line":"            router \u003d client.find_router(parsed_args.router,"},{"line_number":234,"context_line":"                                        ignore_missing\u003dFalse)"},{"line_number":235,"context_line":"            data \u003d client.routers_hosting_l3_agents(router)"}],"source_content_type":"text/x-python","patch_set":36,"id":"ff0f0b1f_212142b1","line":232,"in_reply_to":"ff0f0b1f_a49b2e64","updated":"2017-05-22 20:43:55.000000000","message":"I do not think we should change the default columns here.  Either add this column to all versions of list, or lets add a --long option and allow that to have varying columns in its output.  Thoughts?","commit_id":"0507504d6d3e27d23c2b9a33c3aac1e1f06784b8"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8d496daf9bb985854e93f1d05ae38864c724dd05","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            data \u003d client.network_hosting_dhcp_agents(network)"},{"line_number":230,"context_line":"        elif parsed_args.router is not None:"},{"line_number":231,"context_line":"            columns +\u003d (\u0027ha_state\u0027,)"},{"line_number":232,"context_line":"            column_headers +\u003d (\u0027HA State\u0027,)"},{"line_number":233,"context_line":"            router \u003d client.find_router(parsed_args.router,"},{"line_number":234,"context_line":"                                        ignore_missing\u003dFalse)"},{"line_number":235,"context_line":"            data \u003d client.routers_hosting_l3_agents(router)"}],"source_content_type":"text/x-python","patch_set":36,"id":"ff0f0b1f_a49b2e64","line":232,"range":{"start_line":232,"start_character":32,"end_line":232,"end_character":40},"in_reply_to":"ff0f0b1f_a9ed548c","updated":"2017-05-22 14:19:03.000000000","message":"Actually it is specific to l3-agent-list-hosting-router API [1]. In the normal agent-list, this field is not available.\n\nIn the underground, we call a different API when --router is specified, so \u0027HA State\u0027 field is only available in this case.\n\n[1] The URL would be like /v2.0/routers/95a93226-8bdc-4819-b4d7-c94c09d66f24/l3-agent","commit_id":"0507504d6d3e27d23c2b9a33c3aac1e1f06784b8"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"cb9d54062dbcd37ff104ebfcb97eb4b91286dc83","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            data \u003d client.network_hosting_dhcp_agents(network)"},{"line_number":230,"context_line":"        elif parsed_args.router is not None:"},{"line_number":231,"context_line":"            columns +\u003d (\u0027ha_state\u0027,)"},{"line_number":232,"context_line":"            column_headers +\u003d (\u0027HA State\u0027,)"},{"line_number":233,"context_line":"            router \u003d client.find_router(parsed_args.router,"},{"line_number":234,"context_line":"                                        ignore_missing\u003dFalse)"},{"line_number":235,"context_line":"            data \u003d client.routers_hosting_l3_agents(router)"}],"source_content_type":"text/x-python","patch_set":36,"id":"df140735_d481484c","line":232,"in_reply_to":"ff0f0b1f_b84d593f","updated":"2017-06-01 11:28:19.000000000","message":"IMO, I prefer to add \"HA state\" into columns for all types agent even if the attribute is only available for L3 agent, and get_item_properties() also can handle the case. CLI output should keep consistency to avoid exposing the difference of API implement.\n\nCommand \"network agent list\" is used in operation scenairo, I think operators could understand a blank \"HA state\" column for non L3 agents in list output.","commit_id":"0507504d6d3e27d23c2b9a33c3aac1e1f06784b8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e79796cddab977625fc7778e7f3ddbe2f0b142f9","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        parser.add_argument("},{"line_number":93,"context_line":"            \u0027--l3\u0027,"},{"line_number":94,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":95,"context_line":"            help\u003d_(\u0027Add router to an L3 agent\u0027)"},{"line_number":96,"context_line":"        )"},{"line_number":97,"context_line":"        parser.add_argument("},{"line_number":98,"context_line":"            \u0027agent_id\u0027,"}],"source_content_type":"text/x-python","patch_set":42,"id":"1f1a1f67_0580148b","line":95,"range":{"start_line":95,"start_character":20,"end_line":95,"end_character":45},"updated":"2017-07-12 15:21:48.000000000","message":"nit: this text differs from the .rst - \u0027Add router to L3 agent\u0027","commit_id":"18c532377a2f6d87adef80465fea7ed50d5a17d1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e79796cddab977625fc7778e7f3ddbe2f0b142f9","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        parser.add_argument("},{"line_number":295,"context_line":"            \u0027--l3\u0027,"},{"line_number":296,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":297,"context_line":"            help\u003d_(\u0027Remove router from an L3 agent\u0027)"},{"line_number":298,"context_line":"        )"},{"line_number":299,"context_line":"        parser.add_argument("},{"line_number":300,"context_line":"            \u0027agent_id\u0027,"}],"source_content_type":"text/x-python","patch_set":42,"id":"1f1a1f67_85454473","line":297,"updated":"2017-07-12 15:21:48.000000000","message":"This one too.","commit_id":"18c532377a2f6d87adef80465fea7ed50d5a17d1"}],"openstackclient/network/v2/router.py":[{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"a8f3f4541390adcf2f35cc5a5262b209d7c9f845","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"_formatters \u003d {"},{"line_number":58,"context_line":"    \u0027alive\u0027: _format_alive,"},{"line_number":59,"context_line":"    \u0027admin_state_up\u0027: _format_admin_state,"},{"line_number":60,"context_line":"    \u0027is_admin_state_up\u0027: _format_admin_state,"},{"line_number":61,"context_line":"    \u0027external_gateway_info\u0027: _format_external_gateway_info,"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a3905b3_383d578f","line":58,"updated":"2017-01-24 02:44:02.000000000","message":"Did not see \u0027alive\u0027 attribute for router in SDK?","commit_id":"9fbd5df2d61cf05115b6412c2c065bfda218ab12"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"24ca725e96fa1f7817549b689f503adaa60358f3","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"_formatters \u003d {"},{"line_number":58,"context_line":"    \u0027alive\u0027: _format_alive,"},{"line_number":59,"context_line":"    \u0027admin_state_up\u0027: _format_admin_state,"},{"line_number":60,"context_line":"    \u0027is_admin_state_up\u0027: _format_admin_state,"},{"line_number":61,"context_line":"    \u0027external_gateway_info\u0027: _format_external_gateway_info,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a430d35_a861263b","line":58,"in_reply_to":"5a3905b3_383d578f","updated":"2017-02-07 21:36:11.000000000","message":"correct. remnant from earlier patch where this command returned agent info too. Fixed","commit_id":"9fbd5df2d61cf05115b6412c2c065bfda218ab12"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"e4efaeb1b092bda8d869e4fa46e1164fdbef1167","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                    formatters\u003d_formatters,"},{"line_number":370,"context_line":"                ) for s in data))"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def agents_hosting_router(self, client, parsed_args):"},{"line_number":373,"context_line":"        column_headers \u003d ("},{"line_number":374,"context_line":"            \u0027ID\u0027,"},{"line_number":375,"context_line":"            \u0027Name\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa31d9ce_ccdf110b","line":372,"updated":"2017-02-15 22:33:23.000000000","message":"I really prefer to see this inline in take_action() unless it is called from multiple places.  For the most part, OSC does all this work inline in take_action() everywhere else.","commit_id":"d4a066225afdc4dd9000d37233feb60b83f66469"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"294067faf9dbd5edae7cb974b9da9e2a2385b7d5","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                    formatters\u003d_formatters,"},{"line_number":370,"context_line":"                ) for s in data))"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def agents_hosting_router(self, client, parsed_args):"},{"line_number":373,"context_line":"        column_headers \u003d ("},{"line_number":374,"context_line":"            \u0027ID\u0027,"},{"line_number":375,"context_line":"            \u0027Name\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"ffe62b97_8a276413","line":372,"updated":"2017-03-24 17:47:26.000000000","message":"Again, this looks like the wrong kind of resource to be here.\n\nrouter list should produce a list of routers, no matter what...","commit_id":"64ffb6c948e850df03a8b35ce3d010e14ad05ca4"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"71e1346f48e353b22da21b5042f9faa8ddb3139f","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        identity_client \u003d self.app.client_manager.identity"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        if parsed_args.agent is not None:"},{"line_number":310,"context_line":"            column_headers \u003d ("},{"line_number":311,"context_line":"                \u0027ID\u0027,"},{"line_number":312,"context_line":"                \u0027Name\u0027,"},{"line_number":313,"context_line":"                \u0027External Gateway Info\u0027,"}],"source_content_type":"text/x-python","patch_set":30,"id":"dfeb2761_11a038f4","line":310,"updated":"2017-03-31 14:19:26.000000000","message":"Why are these columns different when --agent is used?","commit_id":"69f2f7f4cff7c19db04da6321a54761fcb9b0c22"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"7e6304405bcd541d9ec6e1ff3d30dac0544bf153","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        if parsed_args.agent is not None:"},{"line_number":340,"context_line":"            # NOTE: Networking API does not support filtering by parameters,"},{"line_number":341,"context_line":"            # so no query parameters are passed here."},{"line_number":342,"context_line":"            agent \u003d client.get_agent(parsed_args.agent)"},{"line_number":343,"context_line":"            data \u003d client.agent_hosted_routers(agent)"},{"line_number":344,"context_line":"        else:"},{"line_number":345,"context_line":"            args \u003d {}"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f044301_fe70bdde","line":342,"range":{"start_line":342,"start_character":27,"end_line":342,"end_character":36},"updated":"2017-05-08 12:46:13.000000000","message":"If the agent do not existed, an exception will be raised, right? I think it\u0027s not a right way in list command if an filter option don\u0027t meet, the result should be empty list, thought? like:\n\n    router list --disable\n\nif no disabled router exist in deployment.","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b175b74f0b675235ca206bf7d5386051c89e9594","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        if parsed_args.agent is not None:"},{"line_number":340,"context_line":"            # NOTE: Networking API does not support filtering by parameters,"},{"line_number":341,"context_line":"            # so no query parameters are passed here."},{"line_number":342,"context_line":"            agent \u003d client.get_agent(parsed_args.agent)"},{"line_number":343,"context_line":"            data \u003d client.agent_hosted_routers(agent)"},{"line_number":344,"context_line":"        else:"},{"line_number":345,"context_line":"            args \u003d {}"}],"source_content_type":"text/x-python","patch_set":35,"id":"1f013ff3_073c47bd","line":342,"range":{"start_line":342,"start_character":27,"end_line":342,"end_character":36},"in_reply_to":"3f044301_fe70bdde","updated":"2017-05-17 07:07:48.000000000","message":"In this case, a user requests a list of routers hosted by a specific agent, so I believe it is user friendly that an error is raised if a specified agent does not exist.","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"7e6304405bcd541d9ec6e1ff3d30dac0544bf153","unresolved":false,"context_lines":[{"line_number":341,"context_line":"            # so no query parameters are passed here."},{"line_number":342,"context_line":"            agent \u003d client.get_agent(parsed_args.agent)"},{"line_number":343,"context_line":"            data \u003d client.agent_hosted_routers(agent)"},{"line_number":344,"context_line":"        else:"},{"line_number":345,"context_line":"            args \u003d {}"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"            if parsed_args.name is not None:"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f044301_5e15719b","line":344,"range":{"start_line":344,"start_character":8,"end_line":344,"end_character":12},"updated":"2017-05-08 12:46:13.000000000","message":"Looks --agent option can\u0027t work with others, for example:\n\n    router list --agent xxx --disable\n\nthe above command can\u0027t list the disable routers that hosted on agent xxx, because the other options are ignored directly. If networking API don\u0027t support to filter router with these options(now we do it in silence), I hope we can update the help message to let user know the command behavior, and raise exception when the user input like above example.","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b175b74f0b675235ca206bf7d5386051c89e9594","unresolved":false,"context_lines":[{"line_number":341,"context_line":"            # so no query parameters are passed here."},{"line_number":342,"context_line":"            agent \u003d client.get_agent(parsed_args.agent)"},{"line_number":343,"context_line":"            data \u003d client.agent_hosted_routers(agent)"},{"line_number":344,"context_line":"        else:"},{"line_number":345,"context_line":"            args \u003d {}"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"            if parsed_args.name is not None:"}],"source_content_type":"text/x-python","patch_set":35,"id":"1f013ff3_c2b3ed4c","line":344,"range":{"start_line":344,"start_character":8,"end_line":344,"end_character":12},"in_reply_to":"3f044301_5e15719b","updated":"2017-05-17 07:07:48.000000000","message":"As I commented at L.340-341 above, Neutron API does not support filtering in \u0027router-list-on-l3-agent\u0027 API. I changed the code to raise an exception when some filtering option is specified together with --agent option.","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"8cf0edeead81ba35131e6edfdd2911fffab943d0","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        if parsed_args.agent is not None:"},{"line_number":361,"context_line":"            # NOTE: Networking API does not support filtering by parameters,"},{"line_number":362,"context_line":"            # so no query parameters are passed here."},{"line_number":363,"context_line":"            if args:"},{"line_number":364,"context_line":"                raise exceptions.CommandError("},{"line_number":365,"context_line":"                    _(\"When --agent option is specified, other options \""}],"source_content_type":"text/x-python","patch_set":36,"id":"ff0f0b1f_4c17cd46","line":362,"updated":"2017-05-22 20:43:55.000000000","message":"We should do the filtering client-side in this case, not just give up.","commit_id":"0507504d6d3e27d23c2b9a33c3aac1e1f06784b8"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"fad041875bdd5bc745ca863fe54220065f61b2a0","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        if parsed_args.agent is not None:"},{"line_number":361,"context_line":"            # NOTE: Networking API does not support filtering by parameters,"},{"line_number":362,"context_line":"            # so no query parameters are passed here."},{"line_number":363,"context_line":"            if args:"},{"line_number":364,"context_line":"                raise exceptions.CommandError("},{"line_number":365,"context_line":"                    _(\"When --agent option is specified, other options \""}],"source_content_type":"text/x-python","patch_set":36,"id":"ff0f0b1f_386389b4","line":362,"in_reply_to":"ff0f0b1f_4c17cd46","updated":"2017-05-24 00:49:21.000000000","message":"Good idea. will add it.","commit_id":"0507504d6d3e27d23c2b9a33c3aac1e1f06784b8"}],"openstackclient/tests/functional/network/v2/test_network_agent.py":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"7e6304405bcd541d9ec6e1ff3d30dac0544bf153","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        cmd_output2 \u003d json.loads(self.openstack("},{"line_number":152,"context_line":"            \u0027network agent list -f json --agent-type l3\u0027))"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        agent_id \u003d cmd_output2[0][\u0027ID\u0027]"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        # Add agent to router"},{"line_number":157,"context_line":"        self.openstack("}],"source_content_type":"text/x-python","patch_set":35,"id":"3f044301_1e5da979","line":154,"range":{"start_line":154,"start_character":30,"end_line":154,"end_character":33},"updated":"2017-05-08 12:46:13.000000000","message":"Please assert the cmd_output2 list is not empty, avoid runtime exception, that make others easier to find out the root reason if the test failed.","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b175b74f0b675235ca206bf7d5386051c89e9594","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        cmd_output2 \u003d json.loads(self.openstack("},{"line_number":152,"context_line":"            \u0027network agent list -f json --agent-type l3\u0027))"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        agent_id \u003d cmd_output2[0][\u0027ID\u0027]"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        # Add agent to router"},{"line_number":157,"context_line":"        self.openstack("}],"source_content_type":"text/x-python","patch_set":35,"id":"1f013ff3_7141890b","line":154,"range":{"start_line":154,"start_character":30,"end_line":154,"end_character":33},"in_reply_to":"3f044301_1e5da979","updated":"2017-05-17 07:07:48.000000000","message":"Done","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"7e6304405bcd541d9ec6e1ff3d30dac0544bf153","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self.openstack("},{"line_number":158,"context_line":"            \u0027network agent add router --l3 \u0027 + agent_id + \u0027 \u0027 + router_id)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        self.addCleanup(self.openstack, \u0027network agent remove router --l3 \u0027 +"},{"line_number":161,"context_line":"                        agent_id + \u0027 \u0027 + router_id)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        # Test router list --agent"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f044301_de8981ca","line":160,"range":{"start_line":160,"start_character":13,"end_line":160,"end_character":23},"updated":"2017-05-08 12:46:13.000000000","message":"please test \"network agent remove router\" in regular way, don\u0027t include it in resource cleanup, and recheck the router actually is removed with \"network agent list --router\" after removing command execute, I think it make sense.","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b175b74f0b675235ca206bf7d5386051c89e9594","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self.openstack("},{"line_number":158,"context_line":"            \u0027network agent add router --l3 \u0027 + agent_id + \u0027 \u0027 + router_id)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        self.addCleanup(self.openstack, \u0027network agent remove router --l3 \u0027 +"},{"line_number":161,"context_line":"                        agent_id + \u0027 \u0027 + router_id)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        # Test router list --agent"}],"source_content_type":"text/x-python","patch_set":35,"id":"1f013ff3_51120d0b","line":160,"range":{"start_line":160,"start_character":13,"end_line":160,"end_character":23},"in_reply_to":"3f044301_de8981ca","updated":"2017-05-17 07:07:48.000000000","message":"Done\n\nTotally agree.","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"}],"openstackclient/tests/functional/network/v2/test_router.py":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"7e6304405bcd541d9ec6e1ff3d30dac0544bf153","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        cmd_output2 \u003d json.loads(self.openstack("},{"line_number":165,"context_line":"            \u0027network agent list -f json --agent-type l3\u0027))"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        agent_id \u003d cmd_output2[0][\u0027ID\u0027]"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        # Add agent to router"},{"line_number":170,"context_line":"        self.openstack("}],"source_content_type":"text/x-python","patch_set":35,"id":"3f044301_5ec8d120","line":167,"range":{"start_line":167,"start_character":30,"end_line":167,"end_character":33},"updated":"2017-05-08 12:46:13.000000000","message":"ditto","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b175b74f0b675235ca206bf7d5386051c89e9594","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        cmd_output2 \u003d json.loads(self.openstack("},{"line_number":165,"context_line":"            \u0027network agent list -f json --agent-type l3\u0027))"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        agent_id \u003d cmd_output2[0][\u0027ID\u0027]"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        # Add agent to router"},{"line_number":170,"context_line":"        self.openstack("}],"source_content_type":"text/x-python","patch_set":35,"id":"1f013ff3_91bf75cf","line":167,"range":{"start_line":167,"start_character":30,"end_line":167,"end_character":33},"in_reply_to":"3f044301_5ec8d120","updated":"2017-05-17 07:07:48.000000000","message":"Done","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"}],"releasenotes/notes/bp-network-l3-adv-commands-cc1df715a184f1b2.yaml":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"7e6304405bcd541d9ec6e1ff3d30dac0544bf153","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add network l3-agent related commands ``network agent add router``,"},{"line_number":5,"context_line":"    ``network agent remove router`` for adding/removing routers to l3 agents."},{"line_number":6,"context_line":"    Add `network agent list --router``, and ``router list --agent`` for"},{"line_number":7,"context_line":"    listing agents on routers and routers on specific agents."},{"line_number":8,"context_line":"    [Blueprint :oscbp:`network-l3-commands`]"}],"source_content_type":"text/x-yaml","patch_set":35,"id":"3f044301_fe49dd8a","line":6,"range":{"start_line":6,"start_character":8,"end_line":6,"end_character":9},"updated":"2017-05-08 12:46:13.000000000","message":"s/`/``/","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b175b74f0b675235ca206bf7d5386051c89e9594","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add network l3-agent related commands ``network agent add router``,"},{"line_number":5,"context_line":"    ``network agent remove router`` for adding/removing routers to l3 agents."},{"line_number":6,"context_line":"    Add `network agent list --router``, and ``router list --agent`` for"},{"line_number":7,"context_line":"    listing agents on routers and routers on specific agents."},{"line_number":8,"context_line":"    [Blueprint :oscbp:`network-l3-commands`]"}],"source_content_type":"text/x-yaml","patch_set":35,"id":"1f013ff3_b14dd173","line":6,"range":{"start_line":6,"start_character":8,"end_line":6,"end_character":9},"in_reply_to":"3f044301_fe49dd8a","updated":"2017-05-17 07:07:48.000000000","message":"Done","commit_id":"2f10a52ce8132d2d2a2846e5b0bf94bf48379f82"}],"setup.cfg":[{"author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"change_message_id":"a8f3f4541390adcf2f35cc5a5262b209d7c9f845","unresolved":false,"context_lines":[{"line_number":364,"context_line":"    network_agent_list \u003d openstackclient.network.v2.network_agent:ListNetworkAgent"},{"line_number":365,"context_line":"    network_agent_set \u003d openstackclient.network.v2.network_agent:SetNetworkAgent"},{"line_number":366,"context_line":"    network_agent_show \u003d openstackclient.network.v2.network_agent:ShowNetworkAgent"},{"line_number":367,"context_line":"    network_agent_add_router \u003d openstackclient.network.v2.network_agent:AddRouterToAgent"},{"line_number":368,"context_line":"    network_agent_remove_router \u003d openstackclient.network.v2.network_agent:RemoveRouterFromAgent"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    network_create \u003d openstackclient.network.v2.network:CreateNetwork"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"5a3905b3_38a1d7f8","line":367,"updated":"2017-01-24 02:44:02.000000000","message":"Should list these in alphabetical order","commit_id":"9fbd5df2d61cf05115b6412c2c065bfda218ab12"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"24ca725e96fa1f7817549b689f503adaa60358f3","unresolved":false,"context_lines":[{"line_number":364,"context_line":"    network_agent_list \u003d openstackclient.network.v2.network_agent:ListNetworkAgent"},{"line_number":365,"context_line":"    network_agent_set \u003d openstackclient.network.v2.network_agent:SetNetworkAgent"},{"line_number":366,"context_line":"    network_agent_show \u003d openstackclient.network.v2.network_agent:ShowNetworkAgent"},{"line_number":367,"context_line":"    network_agent_add_router \u003d openstackclient.network.v2.network_agent:AddRouterToAgent"},{"line_number":368,"context_line":"    network_agent_remove_router \u003d openstackclient.network.v2.network_agent:RemoveRouterFromAgent"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    network_create \u003d openstackclient.network.v2.network:CreateNetwork"}],"source_content_type":"text/x-ttcn-cfg","patch_set":18,"id":"1a430d35_48afe229","line":367,"in_reply_to":"5a3905b3_38a1d7f8","updated":"2017-02-07 21:36:11.000000000","message":"Done","commit_id":"9fbd5df2d61cf05115b6412c2c065bfda218ab12"}]}
