)]}'
{"doc/source/usage/osc/v2/networking-bgpvpn.rst":[{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"0e51582faeeb390623acf6cb0f8be13076655847","unresolved":false,"context_lines":[{"line_number":17,"context_line":".. program:: bgpvpn create"},{"line_number":18,"context_line":".. code:: bash"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    os bgpvpn create"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":".. _bgpvpn_create-bgpvpn:"},{"line_number":23,"context_line":".. option:: --project \u003cproject\u003e"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5201f7_cec71b62","line":20,"range":{"start_line":20,"start_character":4,"end_line":20,"end_character":6},"updated":"2017-01-07 06:27:30.000000000","message":"You should replace from \u0027os\u0027 to \u0027openstack\u0027 for all command examples.  Please refer following comment:\n\nhttps://review.openstack.org/#/c/380146/8/doc/source/usage/osc/v2/firewall-group.rst","commit_id":"d50a57fd586574f172e5261dba34d3f30729da05"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"640406aadbdf6cd2668eac527624bdf93c5fbb2f","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    ID or name of BGP VPN to display."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"bgpvpn net-assoc create"},{"line_number":232,"context_line":"-----------------------"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"Create a BGP VPN network association."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":".. program:: bgpvpn net-assoc create"},{"line_number":237,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a3c09a3_7cf8e5c3","line":234,"range":{"start_line":231,"start_character":0,"end_line":234,"end_character":37},"updated":"2017-01-17 13:20:26.000000000","message":"As Akihiro pointed out, the OSC team does not use hyphens (-), or abbreviations (net, assoc). We have a volume command that uses associations already: http://docs.openstack.org/developer/python-openstackclient/command-objects/volume-qos.html#volume-qos-associate\n\nWhat about the following:\n\n  bgpvpn associate \u003cbgpvpn\u003e --network \u003cnetwork\u003e --router \u003crouter\u003e\n  bgpvpn disassociate \u003cbgpvpn\u003e --network \u003cnetwork\u003e --router \u003crouter\u003e\n\nIt\u0027ll rework \"bgpvpn net-assoc create\", \"bgpvpn net-assoc delete\", \"bgpvpn router-assoc create\" and \"bgpvpn router-assoc delete\" into 2 commands rather than 4","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"9cc810d07d5666e6ba64f793ba54abdbb9ccfee0","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    ID or name of BGP VPN to display."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"bgpvpn net-assoc create"},{"line_number":232,"context_line":"-----------------------"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"Create a BGP VPN network association."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":".. program:: bgpvpn net-assoc create"},{"line_number":237,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a3c09a3_a9892a28","line":234,"range":{"start_line":231,"start_character":0,"end_line":234,"end_character":37},"in_reply_to":"7a3c09a3_7cf8e5c3","updated":"2017-01-17 13:55:58.000000000","message":"I think it\u0027s fine to avoid abbrevations and hyphens.\n\nHowever, the associations are API resources that, in the future, will have attributes that can be modified, so it is good to keep \"create network association\" and later have \"set network association --attribute-foo\u003dbar\".\n\nThe fact that association is used under \u0027volume\u0027 shouldn\u0027t prevent using it under \u0027bgpvpn\u0027 right ? (I would expect \u0027volume\u0027 and \u0027bgpvpn\u0027 to be different scopes).","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"640406aadbdf6cd2668eac527624bdf93c5fbb2f","unresolved":false,"context_lines":[{"line_number":275,"context_line":".. describe:: \u003cbgpvpn\u003e"},{"line_number":276,"context_line":"    ID or name of the BGP VPN."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"bgpvpn net-assoc list"},{"line_number":279,"context_line":"---------------------"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"List BGP VPN network associations for a given BGP VPN."}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a3c09a3_1c336163","line":278,"range":{"start_line":278,"start_character":0,"end_line":278,"end_character":21},"updated":"2017-01-17 13:20:26.000000000","message":"why not incorporate these into `bgpvpn list` -- just have a column called \u0027networks\u0027 ? same suggestion for routers.\n\nyou can even have them as filters to `bgpvpn list`","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"9cc810d07d5666e6ba64f793ba54abdbb9ccfee0","unresolved":false,"context_lines":[{"line_number":275,"context_line":".. describe:: \u003cbgpvpn\u003e"},{"line_number":276,"context_line":"    ID or name of the BGP VPN."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"bgpvpn net-assoc list"},{"line_number":279,"context_line":"---------------------"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"List BGP VPN network associations for a given BGP VPN."}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a3c09a3_49a2869a","line":278,"range":{"start_line":278,"start_character":0,"end_line":278,"end_character":21},"in_reply_to":"7a3c09a3_1c336163","updated":"2017-01-17 13:55:58.000000000","message":"We already have these networks and routers columns under BGPVPN, but they give network and router UUIDs, rather than the association resources UUIDs, which we want to expose to allow the manipulation of association resource attributes.","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"569b5ce6df158e9cd2d7a92670eaf095b8157bb4","unresolved":false,"context_lines":[{"line_number":275,"context_line":".. describe:: \u003cbgpvpn\u003e"},{"line_number":276,"context_line":"    ID or name of the BGP VPN."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"bgpvpn net-assoc list"},{"line_number":279,"context_line":"---------------------"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"List BGP VPN network associations for a given BGP VPN."}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a3c09a3_71c28086","line":278,"range":{"start_line":278,"start_character":0,"end_line":278,"end_character":21},"in_reply_to":"7a3c09a3_49a2869a","updated":"2017-01-18 16:44:26.000000000","message":"Right and you can filter bgpvpn list with command args \u0027--property networks\u003d\u003cNETWORK UUID\u003e\u0027 (same for routers)","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"640406aadbdf6cd2668eac527624bdf93c5fbb2f","unresolved":false,"context_lines":[{"line_number":299,"context_line":"    to filter on multiple properties)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"bgpvpn net-assoc show"},{"line_number":303,"context_line":"---------------------"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"Show information of a given BGP VPN network association."}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a3c09a3_dc1399b6","line":302,"range":{"start_line":302,"start_character":0,"end_line":302,"end_character":21},"updated":"2017-01-17 13:20:26.000000000","message":"Similar suggestion to `list`, just add extra information.\n\nAs a user, i want as few commands as possible to get information.\n\nWhy should I need to do an extra command to find associations? I just had most of the information before when I did `bgpvpn show`?","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"0963163fef020cdddf17a56c2cadc3909d5ecc05","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":".. option:: --route-distinguisher \u003croute-distinguisher\u003e"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    Set of Route Distinguisher in which the Route Distinguisher for advertized"},{"line_number":54,"context_line":"    VPN routes will be picked from (repeat option to set multiple Route"},{"line_number":55,"context_line":"    Distinguishers)."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_612b47ec","line":53,"range":{"start_line":53,"start_character":68,"end_line":53,"end_character":78},"updated":"2017-01-19 23:00:22.000000000","message":"nit: advertised?","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"9fff061a5bc5136fc0c1932ccb729fb80f3fdec5","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":".. option:: --route-distinguisher \u003croute-distinguisher\u003e"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    Set of Route Distinguisher in which the Route Distinguisher for advertized"},{"line_number":54,"context_line":"    VPN routes will be picked from (repeat option to set multiple Route"},{"line_number":55,"context_line":"    Distinguishers)."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_0d63ed42","line":53,"range":{"start_line":53,"start_character":68,"end_line":53,"end_character":78},"in_reply_to":"5a3905b3_612b47ec","updated":"2017-01-24 11:06:16.000000000","message":"Done","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"0963163fef020cdddf17a56c2cadc3909d5ecc05","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    BGP VPN to update (name or ID)."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":".. option:: --name \u003cname\u003e"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    Name for the BGP VPN."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":".. option:: --route-target \u003croute-target\u003e"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_e1549755","line":134,"range":{"start_line":132,"start_character":2,"end_line":134,"end_character":25},"updated":"2017-01-19 23:00:22.000000000","message":"may i ask what does \"bgpvpn unset --name \u003cname\u003e\" does?","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"9fff061a5bc5136fc0c1932ccb729fb80f3fdec5","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    BGP VPN to update (name or ID)."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":".. option:: --name \u003cname\u003e"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    Name for the BGP VPN."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":".. option:: --route-target \u003croute-target\u003e"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_6dd391d5","line":134,"range":{"start_line":132,"start_character":2,"end_line":134,"end_character":25},"in_reply_to":"5a3905b3_e1549755","updated":"2017-01-24 11:06:16.000000000","message":"Nothing, that option does not exist in the unset command, it\u0027s a mistake in that documentation file.","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"0963163fef020cdddf17a56c2cadc3909d5ecc05","unresolved":false,"context_lines":[{"line_number":136,"context_line":".. option:: --route-target \u003croute-target\u003e"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    Unset Route Target to import/export list for this BGP VPN (repeat option to"},{"line_number":139,"context_line":"    set multiple Route Targets)."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":".. option:: --all-route-target"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_01528367","line":139,"range":{"start_line":139,"start_character":4,"end_line":139,"end_character":7},"updated":"2017-01-19 23:00:22.000000000","message":"unset","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"9fff061a5bc5136fc0c1932ccb729fb80f3fdec5","unresolved":false,"context_lines":[{"line_number":136,"context_line":".. option:: --route-target \u003croute-target\u003e"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    Unset Route Target to import/export list for this BGP VPN (repeat option to"},{"line_number":139,"context_line":"    set multiple Route Targets)."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":".. option:: --all-route-target"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_8db35d97","line":139,"range":{"start_line":139,"start_character":4,"end_line":139,"end_character":7},"in_reply_to":"5a3905b3_01528367","updated":"2017-01-24 11:06:16.000000000","message":"Done","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"0963163fef020cdddf17a56c2cadc3909d5ecc05","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":".. option:: --import-target \u003cimport-target\u003e"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    Unset Route Target to import list (repeat option to set multiple Route"},{"line_number":148,"context_line":"    Targets)."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":".. option:: --all-import-target-target"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_c1d6bbc4","line":147,"range":{"start_line":147,"start_character":56,"end_line":147,"end_character":59},"updated":"2017-01-19 23:00:22.000000000","message":"unset","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"9fff061a5bc5136fc0c1932ccb729fb80f3fdec5","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":".. option:: --import-target \u003cimport-target\u003e"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    Unset Route Target to import list (repeat option to set multiple Route"},{"line_number":148,"context_line":"    Targets)."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":".. option:: --all-import-target-target"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_adae592b","line":147,"range":{"start_line":147,"start_character":56,"end_line":147,"end_character":59},"in_reply_to":"5a3905b3_c1d6bbc4","updated":"2017-01-24 11:06:16.000000000","message":"Done","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"0963163fef020cdddf17a56c2cadc3909d5ecc05","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":".. option:: --export-target \u003cexport-target\u003e"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    Unset Route Target to export list (repeat option to set multiple Route"},{"line_number":157,"context_line":"    Targets)."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":".. option:: --all-export-target-target"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_61eee78c","line":156,"range":{"start_line":156,"start_character":56,"end_line":156,"end_character":59},"updated":"2017-01-19 23:00:22.000000000","message":"unset","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"9fff061a5bc5136fc0c1932ccb729fb80f3fdec5","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":".. option:: --export-target \u003cexport-target\u003e"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    Unset Route Target to export list (repeat option to set multiple Route"},{"line_number":157,"context_line":"    Targets)."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":".. option:: --all-export-target-target"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_eda4e14b","line":156,"range":{"start_line":156,"start_character":56,"end_line":156,"end_character":59},"in_reply_to":"5a3905b3_61eee78c","updated":"2017-01-24 11:06:16.000000000","message":"Done","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"0963163fef020cdddf17a56c2cadc3909d5ecc05","unresolved":false,"context_lines":[{"line_number":163,"context_line":".. option:: --route-distinguisher \u003croute-distinguisher\u003e"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    Unset Route Distinguisher to Route Distinguisher list used to advertized"},{"line_number":166,"context_line":"    VPN outes (repeat option to set multiple Route Distinguishers)."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":".. option:: --all-route-distinguisher"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_e102d73d","line":166,"range":{"start_line":166,"start_character":32,"end_line":166,"end_character":35},"updated":"2017-01-19 23:00:22.000000000","message":"unset","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"9fff061a5bc5136fc0c1932ccb729fb80f3fdec5","unresolved":false,"context_lines":[{"line_number":163,"context_line":".. option:: --route-distinguisher \u003croute-distinguisher\u003e"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    Unset Route Distinguisher to Route Distinguisher list used to advertized"},{"line_number":166,"context_line":"    VPN outes (repeat option to set multiple Route Distinguishers)."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":".. option:: --all-route-distinguisher"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_2d6989f9","line":166,"range":{"start_line":166,"start_character":32,"end_line":166,"end_character":35},"in_reply_to":"5a3905b3_e102d73d","updated":"2017-01-24 11:06:16.000000000","message":"Done","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"0963163fef020cdddf17a56c2cadc3909d5ecc05","unresolved":false,"context_lines":[{"line_number":226,"context_line":".. _bgpvpn_show-bgpvpn:"},{"line_number":227,"context_line":".. describe:: \u003cbgpvpn\u003e"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    ID or name of BGP VPN to display."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"bgpvpn network association create"},{"line_number":232,"context_line":"---------------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_412d6ba6","line":229,"range":{"start_line":229,"start_character":4,"end_line":229,"end_character":37},"updated":"2017-01-19 23:00:22.000000000","message":"BGP VPN to display (name or ID).","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"9fff061a5bc5136fc0c1932ccb729fb80f3fdec5","unresolved":false,"context_lines":[{"line_number":226,"context_line":".. _bgpvpn_show-bgpvpn:"},{"line_number":227,"context_line":".. describe:: \u003cbgpvpn\u003e"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    ID or name of BGP VPN to display."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"bgpvpn network association create"},{"line_number":232,"context_line":"---------------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_73ea9475","line":229,"range":{"start_line":229,"start_character":4,"end_line":229,"end_character":37},"in_reply_to":"5a3905b3_412d6ba6","updated":"2017-01-24 11:06:16.000000000","message":"Done","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"0963163fef020cdddf17a56c2cadc3909d5ecc05","unresolved":false,"context_lines":[{"line_number":259,"context_line":"bgpvpn network association delete"},{"line_number":260,"context_line":"---------------------------------"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"\"Delete a BGP VPN network association(s) for a given BGP VPN."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":".. program:: bgpvpn network association delete"},{"line_number":265,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_21077f1d","line":262,"range":{"start_line":262,"start_character":0,"end_line":262,"end_character":1},"updated":"2017-01-19 23:00:22.000000000","message":"remove \"","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"9fff061a5bc5136fc0c1932ccb729fb80f3fdec5","unresolved":false,"context_lines":[{"line_number":259,"context_line":"bgpvpn network association delete"},{"line_number":260,"context_line":"---------------------------------"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"\"Delete a BGP VPN network association(s) for a given BGP VPN."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":".. program:: bgpvpn network association delete"},{"line_number":265,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a3905b3_4857a3c9","line":262,"range":{"start_line":262,"start_character":0,"end_line":262,"end_character":1},"in_reply_to":"5a3905b3_21077f1d","updated":"2017-01-24 11:06:16.000000000","message":"Done","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"c330e66dd2f964a2eba2a47d9aa659060d538f59","unresolved":false,"context_lines":[{"line_number":251,"context_line":"bgpvpn network association delete"},{"line_number":252,"context_line":"---------------------------------"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"\"Remove a BGP VPN network association(s) for a given BGP VPN"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":".. program:: bgpvpn network association delete"},{"line_number":257,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a430d35_258982cb","line":254,"range":{"start_line":254,"start_character":0,"end_line":254,"end_character":1},"updated":"2017-02-03 02:43:55.000000000","message":"sorry for not being clear here:\nI meant to say that there is a quote (highlighed) \" in the beginning of the sentence which is probably not required","commit_id":"9a7f94dafb9929bf6eb92fa2cd918a81d9ca5aa2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"5eab64af1e68d462e504fe8464b1af3bd67756e1","unresolved":false,"context_lines":[{"line_number":251,"context_line":"bgpvpn network association delete"},{"line_number":252,"context_line":"---------------------------------"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"\"Remove a BGP VPN network association(s) for a given BGP VPN"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":".. program:: bgpvpn network association delete"},{"line_number":257,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a430d35_b15a9d4e","line":254,"range":{"start_line":254,"start_character":0,"end_line":254,"end_character":1},"in_reply_to":"1a430d35_258982cb","updated":"2017-02-07 03:03:25.000000000","message":"+1","commit_id":"9a7f94dafb9929bf6eb92fa2cd918a81d9ca5aa2"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"487cb0eb1ffdf2dbcb37274998a0782e7dafa769","unresolved":false,"context_lines":[{"line_number":251,"context_line":"bgpvpn network association delete"},{"line_number":252,"context_line":"---------------------------------"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"\"Remove a BGP VPN network association(s) for a given BGP VPN"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":".. program:: bgpvpn network association delete"},{"line_number":257,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a430d35_c1a824de","line":254,"range":{"start_line":254,"start_character":0,"end_line":254,"end_character":1},"in_reply_to":"1a430d35_258982cb","updated":"2017-02-07 17:21:28.000000000","message":"Done","commit_id":"9a7f94dafb9929bf6eb92fa2cd918a81d9ca5aa2"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"487cb0eb1ffdf2dbcb37274998a0782e7dafa769","unresolved":false,"context_lines":[{"line_number":251,"context_line":"bgpvpn network association delete"},{"line_number":252,"context_line":"---------------------------------"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"\"Remove a BGP VPN network association(s) for a given BGP VPN"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":".. program:: bgpvpn network association delete"},{"line_number":257,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a430d35_619db0bb","line":254,"range":{"start_line":254,"start_character":0,"end_line":254,"end_character":1},"in_reply_to":"1a430d35_b15a9d4e","updated":"2017-02-07 17:21:28.000000000","message":"Done","commit_id":"9a7f94dafb9929bf6eb92fa2cd918a81d9ca5aa2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"5eab64af1e68d462e504fe8464b1af3bd67756e1","unresolved":false,"context_lines":[{"line_number":332,"context_line":"bgpvpn router association delete"},{"line_number":333,"context_line":"--------------------------------"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"\"Delete a BGP VPN router association(s) for a given BGP VPN"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":".. program:: bgpvpn router association delete"},{"line_number":338,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a430d35_f1542522","line":335,"range":{"start_line":335,"start_character":0,"end_line":335,"end_character":1},"updated":"2017-02-07 03:03:25.000000000","message":"ditto","commit_id":"9a7f94dafb9929bf6eb92fa2cd918a81d9ca5aa2"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"487cb0eb1ffdf2dbcb37274998a0782e7dafa769","unresolved":false,"context_lines":[{"line_number":332,"context_line":"bgpvpn router association delete"},{"line_number":333,"context_line":"--------------------------------"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"\"Delete a BGP VPN router association(s) for a given BGP VPN"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":".. program:: bgpvpn router association delete"},{"line_number":338,"context_line":".. code:: bash"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a430d35_2161e8d3","line":335,"range":{"start_line":335,"start_character":0,"end_line":335,"end_character":1},"in_reply_to":"1a430d35_f1542522","updated":"2017-02-07 17:21:28.000000000","message":"Done","commit_id":"9a7f94dafb9929bf6eb92fa2cd918a81d9ca5aa2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"9005947956dba1acc4edf04ae0caaa55f2cbf208","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    Add Route Target to import list (repeat option for multiple Route Targets)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":".. option:: --no-import-target-target"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    Empty import route target list"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_d47b29bc","line":90,"range":{"start_line":90,"start_character":30,"end_line":90,"end_character":37},"updated":"2017-02-09 05:42:47.000000000","message":"extra -target","commit_id":"6bb0593f425aef521d70e2105e6ddbb8f1bbb4f6"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"a77342963c0f1221b7e94715f6d27c581706e093","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    Add Route Target to import list (repeat option for multiple Route Targets)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":".. option:: --no-import-target-target"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    Empty import route target list"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_bef02f68","line":90,"range":{"start_line":90,"start_character":30,"end_line":90,"end_character":37},"in_reply_to":"1a430d35_d47b29bc","updated":"2017-02-09 11:23:13.000000000","message":"Done","commit_id":"6bb0593f425aef521d70e2105e6ddbb8f1bbb4f6"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"9005947956dba1acc4edf04ae0caaa55f2cbf208","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    Add Route Target to export list (repeat option for multiple Route Targets)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":".. option:: --no-export-target-target"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    Empty export route target list"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_34438d6d","line":98,"range":{"start_line":98,"start_character":30,"end_line":98,"end_character":37},"updated":"2017-02-09 05:42:47.000000000","message":"extra -target","commit_id":"6bb0593f425aef521d70e2105e6ddbb8f1bbb4f6"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"a77342963c0f1221b7e94715f6d27c581706e093","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    Add Route Target to export list (repeat option for multiple Route Targets)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":".. option:: --no-export-target-target"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    Empty export route target list"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_def33b71","line":98,"range":{"start_line":98,"start_character":30,"end_line":98,"end_character":37},"in_reply_to":"1a430d35_34438d6d","updated":"2017-02-09 11:23:13.000000000","message":"Done","commit_id":"6bb0593f425aef521d70e2105e6ddbb8f1bbb4f6"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"9005947956dba1acc4edf04ae0caaa55f2cbf208","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    Remove Route Target from import list (repeat option for multiple Route"},{"line_number":139,"context_line":"    Targets)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":".. option:: --all-import-target-target"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    Empty import route target list"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_b4577d24","line":141,"range":{"start_line":141,"start_character":31,"end_line":141,"end_character":38},"updated":"2017-02-09 05:42:47.000000000","message":"extra -target","commit_id":"6bb0593f425aef521d70e2105e6ddbb8f1bbb4f6"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"a77342963c0f1221b7e94715f6d27c581706e093","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    Remove Route Target from import list (repeat option for multiple Route"},{"line_number":139,"context_line":"    Targets)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":".. option:: --all-import-target-target"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    Empty import route target list"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_fee637ae","line":141,"range":{"start_line":141,"start_character":31,"end_line":141,"end_character":38},"in_reply_to":"1a430d35_b4577d24","updated":"2017-02-09 11:23:13.000000000","message":"Done","commit_id":"6bb0593f425aef521d70e2105e6ddbb8f1bbb4f6"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"9005947956dba1acc4edf04ae0caaa55f2cbf208","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    Remove Route Target from export list (repeat option for multiple Route"},{"line_number":148,"context_line":"    Targets)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":".. option:: --all-export-target-target"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    Empty export route target list"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_d4524934","line":150,"range":{"start_line":150,"start_character":31,"end_line":150,"end_character":38},"updated":"2017-02-09 05:42:47.000000000","message":"extra -target","commit_id":"6bb0593f425aef521d70e2105e6ddbb8f1bbb4f6"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"a77342963c0f1221b7e94715f6d27c581706e093","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    Remove Route Target from export list (repeat option for multiple Route"},{"line_number":148,"context_line":"    Targets)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":".. option:: --all-export-target-target"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    Empty export route target list"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a430d35_3e051f45","line":150,"range":{"start_line":150,"start_character":31,"end_line":150,"end_character":38},"in_reply_to":"1a430d35_d4524934","updated":"2017-02-09 11:23:13.000000000","message":"Done","commit_id":"6bb0593f425aef521d70e2105e6ddbb8f1bbb4f6"}],"neutronclient/osc/v2/networking_bgpvpn/bgpvpn.py":[{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"51373d0485d738fe6a75cc94f46a77cefd15932b","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class CreateBgpvpn(command.ShowOne):"},{"line_number":118,"context_line":"    \"\"\"Create BGP VPN resource.\"\"\""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def get_parser(self, prog_name):"},{"line_number":121,"context_line":"        parser \u003d super(CreateBgpvpn, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_a3c07751","line":118,"updated":"2017-01-12 00:53:54.000000000","message":"You should check all of docstrings and fix them:\n\n\u003e please update all these doctrings as such instead of \"\"\"\u003cdescription\u003e\"\"\"\n\u003e please replace with _description \u003d _(\"\u003cdescription\u003e\")\n\u003e For OSC language translation compatibility.\n\n[1]https://review.openstack.org/#/c/351582/36/neutronclient/osc/v2/fwaas/firewallgroup.py@165","commit_id":"65e70af0ec28738270d27d78b74199d92836d834"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"ec8a72d044183a9c8ebc468209d0fa99eac715a7","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class CreateBgpvpn(command.ShowOne):"},{"line_number":118,"context_line":"    \"\"\"Create BGP VPN resource.\"\"\""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def get_parser(self, prog_name):"},{"line_number":121,"context_line":"        parser \u003d super(CreateBgpvpn, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a57fde8_755260df","line":118,"in_reply_to":"ba5201f7_a3c07751","updated":"2017-01-12 09:25:45.000000000","message":"Done","commit_id":"65e70af0ec28738270d27d78b74199d92836d834"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b486c69908629a7787d5ceee582970aa157a01f0","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def _get_common_parser(parser, update\u003dNone):"},{"line_number":56,"context_line":"    \"\"\"Adds to parser arguments common to create, set and unset commands.\"\"\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    if update is None or update \u003d\u003d \u0027set\u0027:"},{"line_number":59,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_317f6667","line":56,"updated":"2017-01-17 13:06:31.000000000","message":"From the maintenance perspective, it is better to add the description of \u0027update\u0027 argument. It accepts three values (None, \u0027set\u0027, \u0027unset\u0027) after reading the code below.","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"569b5ce6df158e9cd2d7a92670eaf095b8157bb4","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def _get_common_parser(parser, update\u003dNone):"},{"line_number":56,"context_line":"    \"\"\"Adds to parser arguments common to create, set and unset commands.\"\"\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    if update is None or update \u003d\u003d \u0027set\u0027:"},{"line_number":59,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_9119ac24","line":56,"in_reply_to":"7a3c09a3_317f6667","updated":"2017-01-18 16:44:26.000000000","message":"Done","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"3922982cba82d401ae4f7f1a3bf0131293a19b0a","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        metavar\u003d\"\u003croute-target\u003e\","},{"line_number":69,"context_line":"        help\u003d(_(\"%s Route Target to import/export list for this BGP VPN \""},{"line_number":70,"context_line":"                \"(repeat option to set multiple Route Targets).\") %"},{"line_number":71,"context_line":"              (\"Add\" if (update is None or update \u003d\u003d \u0027set\u0027) else \u0027Remove\u0027)),"},{"line_number":72,"context_line":"    )"},{"line_number":73,"context_line":"    if update:"},{"line_number":74,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_f347b174","line":71,"range":{"start_line":71,"start_character":14,"end_line":71,"end_character":75},"updated":"2017-01-17 10:29:46.000000000","message":"To be correct the resulting texts should be \"add route target to...\" and \"remove route target *from*...\".\n\nEnglish language can be a pain to code :)\n\nI would suggest something like:\n\nADD_RT_TO \u003d \"Add Route Target to\"\nREMOVE_RT_FROM \u003d \"Remove Route Target from\"\n\ndef isupdate(update):\n    return update is None or update \u003d\u003d \u0027set\u0027\n\nhelp \u003d \"%s list for this BGP VPN ...\" % (ADD_RT_TO if isupdate(update) else REMOVE_RT_FROM)","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"569b5ce6df158e9cd2d7a92670eaf095b8157bb4","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        metavar\u003d\"\u003croute-target\u003e\","},{"line_number":69,"context_line":"        help\u003d(_(\"%s Route Target to import/export list for this BGP VPN \""},{"line_number":70,"context_line":"                \"(repeat option to set multiple Route Targets).\") %"},{"line_number":71,"context_line":"              (\"Add\" if (update is None or update \u003d\u003d \u0027set\u0027) else \u0027Remove\u0027)),"},{"line_number":72,"context_line":"    )"},{"line_number":73,"context_line":"    if update:"},{"line_number":74,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_d1d5f41b","line":71,"range":{"start_line":71,"start_character":14,"end_line":71,"end_character":75},"in_reply_to":"7a3c09a3_36159c48","updated":"2017-01-18 16:44:26.000000000","message":"Done","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b486c69908629a7787d5ceee582970aa157a01f0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        metavar\u003d\"\u003croute-target\u003e\","},{"line_number":69,"context_line":"        help\u003d(_(\"%s Route Target to import/export list for this BGP VPN \""},{"line_number":70,"context_line":"                \"(repeat option to set multiple Route Targets).\") %"},{"line_number":71,"context_line":"              (\"Add\" if (update is None or update \u003d\u003d \u0027set\u0027) else \u0027Remove\u0027)),"},{"line_number":72,"context_line":"    )"},{"line_number":73,"context_line":"    if update:"},{"line_number":74,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_36159c48","line":71,"range":{"start_line":71,"start_character":14,"end_line":71,"end_character":75},"in_reply_to":"7a3c09a3_5d8faecb","updated":"2017-01-17 13:06:31.000000000","message":"As i18n liaison, I would suggest to keep full text. _(\"Add\") or _(\"Delete\") is hard to translate. Note that \u0027Add Route Target to\u0027 is not enough. If we use string concatenation with \u0027+\u0027, translators cannot control the word order.\n\nOn the other hand, CLI is not a main focus of the i18n team and most translators, so I don\u0027t think it is worth spending time on this point.","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"19013579e6f826bbb3f43c7458ccb8e8e5de7342","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        metavar\u003d\"\u003croute-target\u003e\","},{"line_number":69,"context_line":"        help\u003d(_(\"%s Route Target to import/export list for this BGP VPN \""},{"line_number":70,"context_line":"                \"(repeat option to set multiple Route Targets).\") %"},{"line_number":71,"context_line":"              (\"Add\" if (update is None or update \u003d\u003d \u0027set\u0027) else \u0027Remove\u0027)),"},{"line_number":72,"context_line":"    )"},{"line_number":73,"context_line":"    if update:"},{"line_number":74,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_360f5c89","line":71,"range":{"start_line":71,"start_character":14,"end_line":71,"end_character":75},"in_reply_to":"7a3c09a3_5d8faecb","updated":"2017-01-17 13:04:30.000000000","message":"Yes, I think you can use _() anywhere, as long as it is done after the i18n imports.","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"6afef4a1824a1d49f956d16a2dad7e5a798d6caf","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        metavar\u003d\"\u003croute-target\u003e\","},{"line_number":69,"context_line":"        help\u003d(_(\"%s Route Target to import/export list for this BGP VPN \""},{"line_number":70,"context_line":"                \"(repeat option to set multiple Route Targets).\") %"},{"line_number":71,"context_line":"              (\"Add\" if (update is None or update \u003d\u003d \u0027set\u0027) else \u0027Remove\u0027)),"},{"line_number":72,"context_line":"    )"},{"line_number":73,"context_line":"    if update:"},{"line_number":74,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_5d8faecb","line":71,"range":{"start_line":71,"start_character":14,"end_line":71,"end_character":75},"in_reply_to":"7a3c09a3_f347b174","updated":"2017-01-17 11:20:51.000000000","message":"Yes, it\u0027s better but I realize that could be a nightmare for language translation. Do you know if I can use _() for ADD_RT_TO and REMOVE_RT_FROM then append it to the help message?","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"3922982cba82d401ae4f7f1a3bf0131293a19b0a","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    )"},{"line_number":73,"context_line":"    if update:"},{"line_number":74,"context_line":"        parser.add_argument("},{"line_number":75,"context_line":"            \u0027--no-route-target\u0027 if update \u003d\u003d \u0027set\u0027 else \u0027--all-route-target\u0027,"},{"line_number":76,"context_line":"            dest\u003d\u0027purge_route_target\u0027,"},{"line_number":77,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":78,"context_line":"            help\u003d_(\u0027Empty route target list.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_c25579fa","line":75,"range":{"start_line":75,"start_character":12,"end_line":75,"end_character":77},"updated":"2017-01-17 10:29:46.000000000","message":"\"if update ... else\" is useless here, since we\u0027re inside an \"if update:\"","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"19013579e6f826bbb3f43c7458ccb8e8e5de7342","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    )"},{"line_number":73,"context_line":"    if update:"},{"line_number":74,"context_line":"        parser.add_argument("},{"line_number":75,"context_line":"            \u0027--no-route-target\u0027 if update \u003d\u003d \u0027set\u0027 else \u0027--all-route-target\u0027,"},{"line_number":76,"context_line":"            dest\u003d\u0027purge_route_target\u0027,"},{"line_number":77,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":78,"context_line":"            help\u003d_(\u0027Empty route target list.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_1658a089","line":75,"range":{"start_line":75,"start_character":12,"end_line":75,"end_character":77},"in_reply_to":"7a3c09a3_7db8eac8","updated":"2017-01-17 13:04:30.000000000","message":"My mistake then, sorry.\n\nPerhaps the method docstring could indicate that update can be None, \u0027set\u0027 or \u0027unset\u0027.","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b486c69908629a7787d5ceee582970aa157a01f0","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    )"},{"line_number":73,"context_line":"    if update:"},{"line_number":74,"context_line":"        parser.add_argument("},{"line_number":75,"context_line":"            \u0027--no-route-target\u0027 if update \u003d\u003d \u0027set\u0027 else \u0027--all-route-target\u0027,"},{"line_number":76,"context_line":"            dest\u003d\u0027purge_route_target\u0027,"},{"line_number":77,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":78,"context_line":"            help\u003d_(\u0027Empty route target list.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_7171ee75","line":75,"range":{"start_line":75,"start_character":12,"end_line":75,"end_character":77},"in_reply_to":"7a3c09a3_7db8eac8","updated":"2017-01-17 13:06:31.000000000","message":"my vote is the current implementation (--no-xxx for set and --all-xxx for unset).","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"6afef4a1824a1d49f956d16a2dad7e5a798d6caf","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    )"},{"line_number":73,"context_line":"    if update:"},{"line_number":74,"context_line":"        parser.add_argument("},{"line_number":75,"context_line":"            \u0027--no-route-target\u0027 if update \u003d\u003d \u0027set\u0027 else \u0027--all-route-target\u0027,"},{"line_number":76,"context_line":"            dest\u003d\u0027purge_route_target\u0027,"},{"line_number":77,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":78,"context_line":"            help\u003d_(\u0027Empty route target list.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_7db8eac8","line":75,"range":{"start_line":75,"start_character":12,"end_line":75,"end_character":77},"in_reply_to":"7a3c09a3_c25579fa","updated":"2017-01-17 11:20:51.000000000","message":"Yes but update can have 3 states, None in case of a create command, \u0027set\u0027 in case of a set command and \u0027unset\u0027 in case of a unset command. Here as we are inside an \"if update\", that if permits to distinguish set to unset command.\n\nFor a set command, the option string will be \u0027--no-route-target\u0027.\n\nFor unset command, the option sting will be \u0027--all-route-target\u0027","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"3922982cba82d401ae4f7f1a3bf0131293a19b0a","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    )"},{"line_number":89,"context_line":"    if update:"},{"line_number":90,"context_line":"        parser.add_argument("},{"line_number":91,"context_line":"            \u0027--no-import-target\u0027 if update \u003d\u003d \u0027set\u0027 else \u0027--all-import-target\u0027,"},{"line_number":92,"context_line":"            dest\u003d\u0027purge_import_target\u0027,"},{"line_number":93,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":94,"context_line":"            help\u003d_(\u0027Empty import route target list.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_e25a7529","line":91,"range":{"start_line":91,"start_character":12,"end_line":91,"end_character":78},"updated":"2017-01-17 10:29:46.000000000","message":"ditto","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"3922982cba82d401ae4f7f1a3bf0131293a19b0a","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    )"},{"line_number":105,"context_line":"    if update:"},{"line_number":106,"context_line":"        parser.add_argument("},{"line_number":107,"context_line":"            \u0027--no-export-target\u0027 if update \u003d\u003d \u0027set\u0027 else"},{"line_number":108,"context_line":"            \u0027--all-export-target\u0027,"},{"line_number":109,"context_line":"            dest\u003d\u0027purge_export_target\u0027,"},{"line_number":110,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":111,"context_line":"            help\u003d_(\u0027Empty export route target list.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_029941c4","line":108,"range":{"start_line":107,"start_character":12,"end_line":108,"end_character":34},"updated":"2017-01-17 10:29:46.000000000","message":"ditto","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"3922982cba82d401ae4f7f1a3bf0131293a19b0a","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        dest\u003d\u0027route_distinguishers\u0027,"},{"line_number":116,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":117,"context_line":"        metavar\u003d\"\u003croute-distinguisher\u003e\","},{"line_number":118,"context_line":"        help\u003d(_(\"%s Route Distinguisher to Route Distinguisher list used to \""},{"line_number":119,"context_line":"                \"advertized VPN routes (repeat option to set multiple Route \""},{"line_number":120,"context_line":"                \"Distinguishers).\") %"},{"line_number":121,"context_line":"              (\"Add\" if (update is None or update \u003d\u003d \u0027set\u0027) else \u0027Remove\u0027)),"},{"line_number":122,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_02dea1dc","line":119,"range":{"start_line":118,"start_character":40,"end_line":119,"end_character":38},"updated":"2017-01-17 10:29:46.000000000","message":"\"to the list of RDs from which an RD will be picked from to advertize a VPN route\"","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"569b5ce6df158e9cd2d7a92670eaf095b8157bb4","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        dest\u003d\u0027route_distinguishers\u0027,"},{"line_number":116,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":117,"context_line":"        metavar\u003d\"\u003croute-distinguisher\u003e\","},{"line_number":118,"context_line":"        help\u003d(_(\"%s Route Distinguisher to Route Distinguisher list used to \""},{"line_number":119,"context_line":"                \"advertized VPN routes (repeat option to set multiple Route \""},{"line_number":120,"context_line":"                \"Distinguishers).\") %"},{"line_number":121,"context_line":"              (\"Add\" if (update is None or update \u003d\u003d \u0027set\u0027) else \u0027Remove\u0027)),"},{"line_number":122,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_72f0bbc9","line":119,"range":{"start_line":118,"start_character":40,"end_line":119,"end_character":38},"in_reply_to":"7a3c09a3_02dea1dc","updated":"2017-01-18 16:44:26.000000000","message":"Done","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"3922982cba82d401ae4f7f1a3bf0131293a19b0a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    )"},{"line_number":123,"context_line":"    if update:"},{"line_number":124,"context_line":"        parser.add_argument("},{"line_number":125,"context_line":"            \u0027--no-route-distinguisher\u0027 if update \u003d\u003d \u0027set\u0027 else"},{"line_number":126,"context_line":"            \u0027--all-route-distinguisher\u0027,"},{"line_number":127,"context_line":"            dest\u003d\u0027purge_route_distinguisher\u0027,"},{"line_number":128,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":129,"context_line":"            help\u003d_(\u0027Empty route distinguisher list.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_628cc57f","line":126,"range":{"start_line":125,"start_character":12,"end_line":126,"end_character":40},"updated":"2017-01-17 10:29:46.000000000","message":"ditto","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"3922982cba82d401ae4f7f1a3bf0131293a19b0a","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        attrs[\u0027name\u0027] \u003d str(args.name)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    need_to_fetch_resource \u003d False"},{"line_number":139,"context_line":"    if ((\u0027purge_route_target\u0027 not in args or not args.purge_route_target) and"},{"line_number":140,"context_line":"            args.route_targets is not None):"},{"line_number":141,"context_line":"        need_to_fetch_resource \u003d True"},{"line_number":142,"context_line":"    if ((\u0027purge_import_target\u0027 not in args or not args.purge_import_target) and"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_e20fd585","line":139,"range":{"start_line":139,"start_character":8,"end_line":139,"end_character":72},"updated":"2017-01-17 10:29:46.000000000","message":"Simplify into \"if not args.get(\u0027purge_route_target\u0027)\" ?\n\n(same below)","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"6afef4a1824a1d49f956d16a2dad7e5a798d6caf","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        attrs[\u0027name\u0027] \u003d str(args.name)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    need_to_fetch_resource \u003d False"},{"line_number":139,"context_line":"    if ((\u0027purge_route_target\u0027 not in args or not args.purge_route_target) and"},{"line_number":140,"context_line":"            args.route_targets is not None):"},{"line_number":141,"context_line":"        need_to_fetch_resource \u003d True"},{"line_number":142,"context_line":"    if ((\u0027purge_import_target\u0027 not in args or not args.purge_import_target) and"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_fdb21a93","line":139,"range":{"start_line":139,"start_character":8,"end_line":139,"end_character":72},"in_reply_to":"7a3c09a3_e20fd585","updated":"2017-01-17 11:20:51.000000000","message":"Done","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"3922982cba82d401ae4f7f1a3bf0131293a19b0a","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            attrs[\u0027route_distinguishers\u0027] \u003d list("},{"line_number":197,"context_line":"                set(bgpvpn[\u0027route_distinguishers\u0027]) -"},{"line_number":198,"context_line":"                set(args.route_distinguishers))"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    return {constants.BGPVPN: attrs}"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_e2b9957a","line":199,"updated":"2017-01-17 10:29:46.000000000","message":"Why is the project_id/tenant_id code in PS5 gone (L107-L113 in PS5) ?","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"19013579e6f826bbb3f43c7458ccb8e8e5de7342","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            attrs[\u0027route_distinguishers\u0027] \u003d list("},{"line_number":197,"context_line":"                set(bgpvpn[\u0027route_distinguishers\u0027]) -"},{"line_number":198,"context_line":"                set(args.route_distinguishers))"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    return {constants.BGPVPN: attrs}"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_76dac4e9","line":199,"in_reply_to":"7a3c09a3_5d7deeaf","updated":"2017-01-17 13:04:30.000000000","message":"Ack.","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"6afef4a1824a1d49f956d16a2dad7e5a798d6caf","unresolved":false,"context_lines":[{"line_number":196,"context_line":"            attrs[\u0027route_distinguishers\u0027] \u003d list("},{"line_number":197,"context_line":"                set(bgpvpn[\u0027route_distinguishers\u0027]) -"},{"line_number":198,"context_line":"                set(args.route_distinguishers))"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    return {constants.BGPVPN: attrs}"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a3c09a3_5d7deeaf","line":199,"in_reply_to":"7a3c09a3_e2b9957a","updated":"2017-01-17 11:20:51.000000000","message":"_args2body is now use only by commands set and unset, and that methods (and BGP VPN api) don\u0027t authorize to update the project owner of a BGP VPN resource","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"0963163fef020cdddf17a56c2cadc3909d5ecc05","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            \u0027--no-route-target\u0027 if update \u003d\u003d \u0027set\u0027 else \u0027--all-route-target\u0027,"},{"line_number":89,"context_line":"            dest\u003d\u0027purge_route_target\u0027,"},{"line_number":90,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":91,"context_line":"            help\u003d_(\u0027Empty route target list.\u0027),"},{"line_number":92,"context_line":"        )"},{"line_number":93,"context_line":"    parser.add_argument("},{"line_number":94,"context_line":"        \u0027--import-target\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_bc7396b0","line":91,"range":{"start_line":91,"start_character":43,"end_line":91,"end_character":44},"updated":"2017-01-19 23:00:22.000000000","message":"General comment: Help texts should not contain a period.","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"9fff061a5bc5136fc0c1932ccb729fb80f3fdec5","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            \u0027--no-route-target\u0027 if update \u003d\u003d \u0027set\u0027 else \u0027--all-route-target\u0027,"},{"line_number":89,"context_line":"            dest\u003d\u0027purge_route_target\u0027,"},{"line_number":90,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":91,"context_line":"            help\u003d_(\u0027Empty route target list.\u0027),"},{"line_number":92,"context_line":"        )"},{"line_number":93,"context_line":"    parser.add_argument("},{"line_number":94,"context_line":"        \u0027--import-target\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_9361c007","line":91,"range":{"start_line":91,"start_character":43,"end_line":91,"end_character":44},"in_reply_to":"5a3905b3_bc7396b0","updated":"2017-01-24 11:06:16.000000000","message":"I checked few openstack command and it\u0027s not clear. Ie., the common option \u0027--project-domain\u0027 use it.\n\nI looked also python command line \u0027pip\u0027 and it uses period at the end of a help message.\n\nAnyway, that will be nice to have pep check for that type of requirements. I\u0027ll remove them in that patch.","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"0963163fef020cdddf17a56c2cadc3909d5ecc05","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        dest\u003d\u0027import_targets\u0027,"},{"line_number":96,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":97,"context_line":"        metavar\u003d\"\u003cimport-target\u003e\","},{"line_number":98,"context_line":"        help\u003d_(\"%s import list (repeat option to set multiple Route Targets).\""},{"line_number":99,"context_line":"               ) % (ADD_RT if is_append() else REMOVE_RT),"},{"line_number":100,"context_line":"    )"},{"line_number":101,"context_line":"    if update:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_fcac3eef","line":98,"range":{"start_line":98,"start_character":49,"end_line":98,"end_character":52},"updated":"2017-01-19 23:00:22.000000000","message":"this may vary based on set unset action","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"389a1f06da834392c796bd1b7866a2846343900e","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        dest\u003d\u0027import_targets\u0027,"},{"line_number":96,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":97,"context_line":"        metavar\u003d\"\u003cimport-target\u003e\","},{"line_number":98,"context_line":"        help\u003d_(\"%s import list (repeat option to set multiple Route Targets).\""},{"line_number":99,"context_line":"               ) % (ADD_RT if is_append() else REMOVE_RT),"},{"line_number":100,"context_line":"    )"},{"line_number":101,"context_line":"    if update:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_98ac788d","line":98,"range":{"start_line":98,"start_character":49,"end_line":98,"end_character":52},"in_reply_to":"5a3905b3_6eb8e775","updated":"2017-01-24 11:40:04.000000000","message":"s/to set/for/ ?","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"dc499b6c107ce2c1820095b312fb0f7eb007e7d9","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        dest\u003d\u0027import_targets\u0027,"},{"line_number":96,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":97,"context_line":"        metavar\u003d\"\u003cimport-target\u003e\","},{"line_number":98,"context_line":"        help\u003d_(\"%s import list (repeat option to set multiple Route Targets).\""},{"line_number":99,"context_line":"               ) % (ADD_RT if is_append() else REMOVE_RT),"},{"line_number":100,"context_line":"    )"},{"line_number":101,"context_line":"    if update:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_5ba68aae","line":98,"range":{"start_line":98,"start_character":49,"end_line":98,"end_character":52},"in_reply_to":"5a3905b3_98ac788d","updated":"2017-01-24 11:56:20.000000000","message":"Done","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"9fff061a5bc5136fc0c1932ccb729fb80f3fdec5","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        dest\u003d\u0027import_targets\u0027,"},{"line_number":96,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":97,"context_line":"        metavar\u003d\"\u003cimport-target\u003e\","},{"line_number":98,"context_line":"        help\u003d_(\"%s import list (repeat option to set multiple Route Targets).\""},{"line_number":99,"context_line":"               ) % (ADD_RT if is_append() else REMOVE_RT),"},{"line_number":100,"context_line":"    )"},{"line_number":101,"context_line":"    if update:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_6eb8e775","line":98,"range":{"start_line":98,"start_character":49,"end_line":98,"end_character":52},"in_reply_to":"5a3905b3_fcac3eef","updated":"2017-01-24 11:06:16.000000000","message":"I think it not necessary, that \u0027set\u0027 word is just here to explain we can repeat the option to append RTs to the action which could be \u0027create\u0027, \u0027set\u0027 or \u0027unset\u0027.\n\nFor create or set commands the message will be:\n Add Route Target to import/export list (repeat option to set multiple Route Targets)\n\nFor the unset command:\n Remove Route Target from import/export list (repeat option to set multiple Route Targets)","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"5eab64af1e68d462e504fe8464b1af3bd67756e1","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        dest\u003d\u0027route_targets\u0027,"},{"line_number":81,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":82,"context_line":"        metavar\u003d\"\u003croute-target\u003e\","},{"line_number":83,"context_line":"        help\u003d_(\"%s import/export list (repeat option for multiple Route \""},{"line_number":84,"context_line":"               \"Targets)\") % (ADD_RT if is_append() else REMOVE_RT),"},{"line_number":85,"context_line":"    )"},{"line_number":86,"context_line":"    if update:"},{"line_number":87,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":10,"id":"1a430d35_4c0ac022","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":68},"updated":"2017-02-07 03:03:25.000000000","message":"these construct look very translation unfriendly.","commit_id":"9a7f94dafb9929bf6eb92fa2cd918a81d9ca5aa2"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"ba6b2fdec7a75b660f2d90aadb6c3c7a366d589b","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        dest\u003d\u0027route_targets\u0027,"},{"line_number":81,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":82,"context_line":"        metavar\u003d\"\u003croute-target\u003e\","},{"line_number":83,"context_line":"        help\u003d_(\"%s import/export list (repeat option for multiple Route \""},{"line_number":84,"context_line":"               \"Targets)\") % (ADD_RT if is_append() else REMOVE_RT),"},{"line_number":85,"context_line":"    )"},{"line_number":86,"context_line":"    if update:"},{"line_number":87,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":10,"id":"1a430d35_95a824dd","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":68},"in_reply_to":"1a430d35_4c0ac022","updated":"2017-02-07 08:17:37.000000000","message":"We haven\u0027t found better to cope with the way the english language is cooked (\"add... to...\" vs. \"remove... from...\") and still avoid to much repeats between strings.\n\nWe\u0027ll appreciate if you propose a better way.\n\nNote that ADD_RT and REMOVE_RT are also i18n strings.","commit_id":"9a7f94dafb9929bf6eb92fa2cd918a81d9ca5aa2"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"487cb0eb1ffdf2dbcb37274998a0782e7dafa769","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        dest\u003d\u0027route_targets\u0027,"},{"line_number":81,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":82,"context_line":"        metavar\u003d\"\u003croute-target\u003e\","},{"line_number":83,"context_line":"        help\u003d_(\"%s import/export list (repeat option for multiple Route \""},{"line_number":84,"context_line":"               \"Targets)\") % (ADD_RT if is_append() else REMOVE_RT),"},{"line_number":85,"context_line":"    )"},{"line_number":86,"context_line":"    if update:"},{"line_number":87,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":10,"id":"1a430d35_db8644da","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":68},"in_reply_to":"1a430d35_90eaf2aa","updated":"2017-02-07 17:21:28.000000000","message":"Done","commit_id":"9a7f94dafb9929bf6eb92fa2cd918a81d9ca5aa2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6b3b7a57036a54e2d8484e10ae2978f20af103ae","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        dest\u003d\u0027route_targets\u0027,"},{"line_number":81,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":82,"context_line":"        metavar\u003d\"\u003croute-target\u003e\","},{"line_number":83,"context_line":"        help\u003d_(\"%s import/export list (repeat option for multiple Route \""},{"line_number":84,"context_line":"               \"Targets)\") % (ADD_RT if is_append() else REMOVE_RT),"},{"line_number":85,"context_line":"    )"},{"line_number":86,"context_line":"    if update:"},{"line_number":87,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":10,"id":"1a430d35_b5dd20e2","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":68},"in_reply_to":"1a430d35_95a824dd","updated":"2017-02-07 08:40:13.000000000","message":"sorry, i don\u0027t have any suggestion which is better than just giving up repeat avoidance.","commit_id":"9a7f94dafb9929bf6eb92fa2cd918a81d9ca5aa2"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"d3b858e57c1360ed38c8ceda114ac4f81e395a84","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        dest\u003d\u0027route_targets\u0027,"},{"line_number":81,"context_line":"        action\u003d\u0027append\u0027,"},{"line_number":82,"context_line":"        metavar\u003d\"\u003croute-target\u003e\","},{"line_number":83,"context_line":"        help\u003d_(\"%s import/export list (repeat option for multiple Route \""},{"line_number":84,"context_line":"               \"Targets)\") % (ADD_RT if is_append() else REMOVE_RT),"},{"line_number":85,"context_line":"    )"},{"line_number":86,"context_line":"    if update:"},{"line_number":87,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":10,"id":"1a430d35_90eaf2aa","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":68},"in_reply_to":"1a430d35_b5dd20e2","updated":"2017-02-07 08:54:56.000000000","message":"I think we can still keep the following strings as separate i18n strings:\n- \"repeat option for multiple Route Targets\"\n- \"repeat option for multiple Route Distinguishers\" \n\nCode would become:\n\n    ADD_RT \u003d _(\"Add Route Target to import/export list\")\n    REMOVE_RT \u003d _(\"Remove Route Target from import/export list\")\n    ADD_RD \u003d _(\"Add Route Distinguisher to the list of Route Distinguishers from which a Route Distinguishers will be picked from to advertise a VPN route\")\n    REMOVE_RD \u003d _(\"Remove Route Distinguisher from the list of Route Distinguishers from which a Route Distinguishers will be picked from to advertise a VPN route\")\n\n    REPEAT_RT \u003d _(\"repeat option for multiple Route Targets\")\n    REPEAT_RD \u003d _(\"repeat option for multiple Route Distinguishers\")\n\nAnd then for RT:\n\n_help\u003d\"%s (%s)\" % ((ADD_RT if is_append() else REMOVE_RT),\n                   REPEAT_RT)\n\nAnd then for RD:\n\n_help\u003d\"%s (%s)\" % ((ADD_RD if is_append() else REMOVE_RD),\n                   REPEAT_RD)\n\n\n(I realize now that the initial call was applying _() to a string which was already containing a string resulting from a _() call ; that was my suggestion but most likely not working... the above does not require doing that)","commit_id":"9a7f94dafb9929bf6eb92fa2cd918a81d9ca5aa2"}],"neutronclient/osc/v2/networking_bgpvpn/network_association.py":[{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"62a60ec60dc77b865f88b9654a711c5ecd85bd79","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class CreateBgpvpnNetAssoc(BgpvpnNetAssoc, CreateBgpvpnResAssoc):"},{"line_number":45,"context_line":"    \"\"\"Create a BGP VPN network association.\"\"\""},{"line_number":46,"context_line":"    pass"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_5c60f235","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":47},"updated":"2017-01-19 23:01:14.000000000","message":"description \u003d_()","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"9fff061a5bc5136fc0c1932ccb729fb80f3fdec5","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class CreateBgpvpnNetAssoc(BgpvpnNetAssoc, CreateBgpvpnResAssoc):"},{"line_number":45,"context_line":"    \"\"\"Create a BGP VPN network association.\"\"\""},{"line_number":46,"context_line":"    pass"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_82c88756","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":47},"in_reply_to":"5a3905b3_5c60f235","updated":"2017-01-24 11:06:16.000000000","message":"Done","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"}],"neutronclient/osc/v2/networking_bgpvpn/resource_association.py":[{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"51373d0485d738fe6a75cc94f46a77cefd15932b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        parser.add_argument("},{"line_number":40,"context_line":"            \u0027bgpvpn\u0027,"},{"line_number":41,"context_line":"            metavar\u003d\"\u003cbgpvpn\u003e\","},{"line_number":42,"context_line":"            help\u003d_(\"ID or name of the BGP VPN.\"))"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027resource\u0027,"},{"line_number":45,"context_line":"            metavar\u003d\"\u003c%s\u003e\" % self._assoc_res_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_a3e317d8","line":42,"range":{"start_line":42,"start_character":19,"end_line":42,"end_character":31},"updated":"2017-01-12 00:53:54.000000000","message":"I think you should align with \"(name or ID)\" at the end of description.  All of OSC description is written it.  Please check all of descriptions.","commit_id":"65e70af0ec28738270d27d78b74199d92836d834"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"ec8a72d044183a9c8ebc468209d0fa99eac715a7","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        parser.add_argument("},{"line_number":40,"context_line":"            \u0027bgpvpn\u0027,"},{"line_number":41,"context_line":"            metavar\u003d\"\u003cbgpvpn\u003e\","},{"line_number":42,"context_line":"            help\u003d_(\"ID or name of the BGP VPN.\"))"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027resource\u0027,"},{"line_number":45,"context_line":"            metavar\u003d\"\u003c%s\u003e\" % self._assoc_res_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a57fde8_d5d06ccc","line":42,"range":{"start_line":42,"start_character":19,"end_line":42,"end_character":31},"in_reply_to":"ba5201f7_a3e317d8","updated":"2017-01-12 09:25:45.000000000","message":"Done","commit_id":"65e70af0ec28738270d27d78b74199d92836d834"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"51373d0485d738fe6a75cc94f46a77cefd15932b","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    def get_parser(self, prog_name):"},{"line_number":80,"context_line":"        parser \u003d super(UpdateBgpvpnResAssoc, self).get_parser(prog_name)"},{"line_number":81,"context_line":"        parser.add_argument("},{"line_number":82,"context_line":"            \u0027resource_association\u0027,"},{"line_number":83,"context_line":"            metavar\u003d\"\u003c%s association\u003e\" % self._assoc_res_name,"},{"line_number":84,"context_line":"            help\u003d(_(\"ID of the %s association to update.\") %"},{"line_number":85,"context_line":"                  self._assoc_res_name))"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_431eebbb","line":82,"range":{"start_line":82,"start_character":13,"end_line":82,"end_character":33},"updated":"2017-01-12 00:53:54.000000000","message":"If you expect \u0027ID\u0027 only, I think it\u0027s easy to understand to modify \u0027resource_association_id\u0027.  Is it enough to explain help message?  What do you think?","commit_id":"65e70af0ec28738270d27d78b74199d92836d834"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"ec8a72d044183a9c8ebc468209d0fa99eac715a7","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    def get_parser(self, prog_name):"},{"line_number":80,"context_line":"        parser \u003d super(UpdateBgpvpnResAssoc, self).get_parser(prog_name)"},{"line_number":81,"context_line":"        parser.add_argument("},{"line_number":82,"context_line":"            \u0027resource_association\u0027,"},{"line_number":83,"context_line":"            metavar\u003d\"\u003c%s association\u003e\" % self._assoc_res_name,"},{"line_number":84,"context_line":"            help\u003d(_(\"ID of the %s association to update.\") %"},{"line_number":85,"context_line":"                  self._assoc_res_name))"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a57fde8_d5e78caa","line":82,"range":{"start_line":82,"start_character":13,"end_line":82,"end_character":33},"in_reply_to":"ba5201f7_431eebbb","updated":"2017-01-12 09:25:45.000000000","message":"Right","commit_id":"65e70af0ec28738270d27d78b74199d92836d834"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"6148f28c6bb8c894b7f932dcfcba461f131ba1b9","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        msg \u003d _(\"Current BGP VPN API does not permit to update any %s \""},{"line_number":94,"context_line":"                \"association attributes\") % self._assoc_res_name"},{"line_number":95,"context_line":"        raise exceptions.UnsupportedVersion(msg)"},{"line_number":96,"context_line":"        # client \u003d self.app.client_manager.neutronclient"},{"line_number":97,"context_line":"        # update_method \u003d getattr("},{"line_number":98,"context_line":"        #     client, \u0027update_bgpvpn_%s_assoc\u0027 % self._assoc_res_name)"},{"line_number":99,"context_line":"        # bgpvpn \u003d client.find_resource(constants.BGPVPN, parsed_args.bgpvpn)"},{"line_number":100,"context_line":"        # assoc \u003d client.find_resource_by_id("},{"line_number":101,"context_line":"        #     self._resource,"},{"line_number":102,"context_line":"        #     parsed_args.resource_association,"},{"line_number":103,"context_line":"        #     cmd_resource\u003d\u0027bgpvpn_%s_assoc\u0027 % self._assoc_res_name,"},{"line_number":104,"context_line":"        #     parent_id\u003dbgpvpn[\u0027id\u0027])"},{"line_number":105,"context_line":"        # update_method(bgpvpn[\u0027id\u0027], assoc[\u0027id\u0027], {})"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"class DeleteBgpvpnResAssoc(command.Command):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a57fde8_7546e0c0","line":105,"range":{"start_line":96,"start_character":0,"end_line":105,"end_character":54},"updated":"2017-01-12 09:27:39.000000000","message":"Just noticed these commented-out lines, they should be removed.","commit_id":"65e70af0ec28738270d27d78b74199d92836d834"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"65199023685f29fc0cadf5ed64f4ee838fe4bcf1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027bgpvpn\u0027,"},{"line_number":40,"context_line":"            metavar\u003d\"\u003cbgpvpn\u003e\","},{"line_number":41,"context_line":"            help\u003d(_(\"BGP VPN to apply the %s association (name or ID).\") %"},{"line_number":42,"context_line":"                  self._assoc_res_name))"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027resource\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a57fde8_e3aa0370","line":41,"range":{"start_line":41,"start_character":12,"end_line":41,"end_character":20},"updated":"2017-01-12 17:01:59.000000000","message":"Please remove period(\".\") in all of help description.  It\u0027s not necessary.","commit_id":"a9d28fec6495a4c122470f7039dd795c0adb9dbf"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"ceb0e20d41fb92894ab230c4f9549443745815ea","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027bgpvpn\u0027,"},{"line_number":40,"context_line":"            metavar\u003d\"\u003cbgpvpn\u003e\","},{"line_number":41,"context_line":"            help\u003d(_(\"BGP VPN to apply the %s association (name or ID).\") %"},{"line_number":42,"context_line":"                  self._assoc_res_name))"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027resource\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a3c09a3_d740760a","line":41,"range":{"start_line":41,"start_character":12,"end_line":41,"end_character":20},"in_reply_to":"9a57fde8_e3aa0370","updated":"2017-01-16 21:32:11.000000000","message":"Done","commit_id":"a9d28fec6495a4c122470f7039dd795c0adb9dbf"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"65199023685f29fc0cadf5ed64f4ee838fe4bcf1","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        return display_columns, data"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"class UpdateBgpvpnResAssoc(command.Command):"},{"line_number":78,"context_line":"    _description \u003d _(\"Update a BGP VPN resource association.\")"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a57fde8_23f32b75","line":77,"range":{"start_line":77,"start_character":6,"end_line":77,"end_character":12},"updated":"2017-01-12 17:01:59.000000000","message":"It\u0027s better to align \u0027Set\u0027.  Please refer command guide[1].  In addition, you should implement both \u0027Set\u0027 and \u0027Unset\u0027 instead of \u0027Update\u0027.\n\n[1]https://github.com/openstack/python-openstackclient/blob/master/doc/source/commands.rst","commit_id":"a9d28fec6495a4c122470f7039dd795c0adb9dbf"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"ceb0e20d41fb92894ab230c4f9549443745815ea","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        return display_columns, data"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"class UpdateBgpvpnResAssoc(command.Command):"},{"line_number":78,"context_line":"    _description \u003d _(\"Update a BGP VPN resource association.\")"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a3c09a3_58cef52e","line":77,"range":{"start_line":77,"start_character":6,"end_line":77,"end_character":12},"in_reply_to":"9a57fde8_23f32b75","updated":"2017-01-16 21:32:11.000000000","message":"Done","commit_id":"a9d28fec6495a4c122470f7039dd795c0adb9dbf"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"746780ffc4ee88aa6a6b9470c4d4c8fe6440b5da","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        msg \u003d _(\"Current BGP VPN API does not permit to update any %s \""},{"line_number":95,"context_line":"                \"association attributes\") % self._assoc_res_name"},{"line_number":96,"context_line":"        raise exceptions.UnsupportedVersion(msg)"},{"line_number":97,"context_line":"        # client \u003d self.app.client_manager.neutronclient"},{"line_number":98,"context_line":"        # update_method \u003d getattr("},{"line_number":99,"context_line":"        #     client, \u0027update_bgpvpn_%s_assoc\u0027 % self._assoc_res_name)"},{"line_number":100,"context_line":"        # bgpvpn \u003d client.find_resource(constants.BGPVPN, parsed_args.bgpvpn)"},{"line_number":101,"context_line":"        # assoc \u003d client.find_resource_by_id("},{"line_number":102,"context_line":"        #     self._resource,"},{"line_number":103,"context_line":"        #     parsed_args.resource_association_id,"},{"line_number":104,"context_line":"        #     cmd_resource\u003d\u0027bgpvpn_%s_assoc\u0027 % self._assoc_res_name,"},{"line_number":105,"context_line":"        #     parent_id\u003dbgpvpn[\u0027id\u0027])"},{"line_number":106,"context_line":"        # update_method(bgpvpn[\u0027id\u0027], assoc[\u0027id\u0027], {})"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"class DeleteBgpvpnResAssoc(command.Command):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a57fde8_2af3050c","line":106,"range":{"start_line":97,"start_character":1,"end_line":106,"end_character":54},"updated":"2017-01-12 14:29:36.000000000","message":"As said in a previous comment (put by mistake on an obsolete PS), these lines should be removed.","commit_id":"a9d28fec6495a4c122470f7039dd795c0adb9dbf"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"4df9e7bb73efe9c1cbae4496ba4671ab954bcaae","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        msg \u003d _(\"Current BGP VPN API does not permit to update any %s \""},{"line_number":95,"context_line":"                \"association attributes\") % self._assoc_res_name"},{"line_number":96,"context_line":"        raise exceptions.UnsupportedVersion(msg)"},{"line_number":97,"context_line":"        # client \u003d self.app.client_manager.neutronclient"},{"line_number":98,"context_line":"        # update_method \u003d getattr("},{"line_number":99,"context_line":"        #     client, \u0027update_bgpvpn_%s_assoc\u0027 % self._assoc_res_name)"},{"line_number":100,"context_line":"        # bgpvpn \u003d client.find_resource(constants.BGPVPN, parsed_args.bgpvpn)"},{"line_number":101,"context_line":"        # assoc \u003d client.find_resource_by_id("},{"line_number":102,"context_line":"        #     self._resource,"},{"line_number":103,"context_line":"        #     parsed_args.resource_association_id,"},{"line_number":104,"context_line":"        #     cmd_resource\u003d\u0027bgpvpn_%s_assoc\u0027 % self._assoc_res_name,"},{"line_number":105,"context_line":"        #     parent_id\u003dbgpvpn[\u0027id\u0027])"},{"line_number":106,"context_line":"        # update_method(bgpvpn[\u0027id\u0027], assoc[\u0027id\u0027], {})"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"class DeleteBgpvpnResAssoc(command.Command):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a57fde8_507718d4","line":106,"range":{"start_line":97,"start_character":1,"end_line":106,"end_character":54},"in_reply_to":"9a57fde8_2af3050c","updated":"2017-01-12 15:14:01.000000000","message":"I just put that a exemple if in future BGP VPN API permits to update sub-resource BGP VPN association. It is just for information purposes.\n\nI think the question here is more should we implement \u0027update\u0027 command and raise a not supported exception or just not implement that command?","commit_id":"a9d28fec6495a4c122470f7039dd795c0adb9dbf"},{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"6da8180da4659b0341d550bc6966f03e509dc5c5","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        msg \u003d _(\"Current BGP VPN API does not permit to update any %s \""},{"line_number":95,"context_line":"                \"association attributes\") % self._assoc_res_name"},{"line_number":96,"context_line":"        raise exceptions.UnsupportedVersion(msg)"},{"line_number":97,"context_line":"        # client \u003d self.app.client_manager.neutronclient"},{"line_number":98,"context_line":"        # update_method \u003d getattr("},{"line_number":99,"context_line":"        #     client, \u0027update_bgpvpn_%s_assoc\u0027 % self._assoc_res_name)"},{"line_number":100,"context_line":"        # bgpvpn \u003d client.find_resource(constants.BGPVPN, parsed_args.bgpvpn)"},{"line_number":101,"context_line":"        # assoc \u003d client.find_resource_by_id("},{"line_number":102,"context_line":"        #     self._resource,"},{"line_number":103,"context_line":"        #     parsed_args.resource_association_id,"},{"line_number":104,"context_line":"        #     cmd_resource\u003d\u0027bgpvpn_%s_assoc\u0027 % self._assoc_res_name,"},{"line_number":105,"context_line":"        #     parent_id\u003dbgpvpn[\u0027id\u0027])"},{"line_number":106,"context_line":"        # update_method(bgpvpn[\u0027id\u0027], assoc[\u0027id\u0027], {})"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"class DeleteBgpvpnResAssoc(command.Command):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a57fde8_a33e3bb6","line":106,"range":{"start_line":97,"start_character":1,"end_line":106,"end_character":54},"in_reply_to":"9a57fde8_507718d4","updated":"2017-01-12 20:14:07.000000000","message":"Ack.\n\nWe don\u0027t have to hardcode the assumption that association resources can\u0027t be updated in the client, so perhaps the simplest would be to implement it in the client; today, the server will do nothing [1], and whenever we add properties to an association, the client won\u0027t need to be changed.","commit_id":"a9d28fec6495a4c122470f7039dd795c0adb9dbf"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"ceb0e20d41fb92894ab230c4f9549443745815ea","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        msg \u003d _(\"Current BGP VPN API does not permit to update any %s \""},{"line_number":95,"context_line":"                \"association attributes\") % self._assoc_res_name"},{"line_number":96,"context_line":"        raise exceptions.UnsupportedVersion(msg)"},{"line_number":97,"context_line":"        # client \u003d self.app.client_manager.neutronclient"},{"line_number":98,"context_line":"        # update_method \u003d getattr("},{"line_number":99,"context_line":"        #     client, \u0027update_bgpvpn_%s_assoc\u0027 % self._assoc_res_name)"},{"line_number":100,"context_line":"        # bgpvpn \u003d client.find_resource(constants.BGPVPN, parsed_args.bgpvpn)"},{"line_number":101,"context_line":"        # assoc \u003d client.find_resource_by_id("},{"line_number":102,"context_line":"        #     self._resource,"},{"line_number":103,"context_line":"        #     parsed_args.resource_association_id,"},{"line_number":104,"context_line":"        #     cmd_resource\u003d\u0027bgpvpn_%s_assoc\u0027 % self._assoc_res_name,"},{"line_number":105,"context_line":"        #     parent_id\u003dbgpvpn[\u0027id\u0027])"},{"line_number":106,"context_line":"        # update_method(bgpvpn[\u0027id\u0027], assoc[\u0027id\u0027], {})"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"class DeleteBgpvpnResAssoc(command.Command):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a3c09a3_3865a91d","line":106,"range":{"start_line":97,"start_character":1,"end_line":106,"end_character":54},"in_reply_to":"9a57fde8_a33e3bb6","updated":"2017-01-16 21:32:11.000000000","message":"Finally, as detailed in OSC command guide [1], \u0027update\u0027 command is replaced by \u0027set/unset\u0027, I removed that from client","commit_id":"a9d28fec6495a4c122470f7039dd795c0adb9dbf"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"65199023685f29fc0cadf5ed64f4ee838fe4bcf1","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    def get_parser(self, prog_name):"},{"line_number":114,"context_line":"        parser \u003d super(DeleteBgpvpnResAssoc, self).get_parser(prog_name)"},{"line_number":115,"context_line":"        parser.add_argument("},{"line_number":116,"context_line":"            \u0027resource_association_ids\u0027,"},{"line_number":117,"context_line":"            metavar\u003d\"\u003c%s association ID\u003e\" % self._assoc_res_name,"},{"line_number":118,"context_line":"            nargs\u003d\"+\","},{"line_number":119,"context_line":"            help\u003d(_(\"%s association ID(s) to delete.\") %"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a57fde8_de48725e","line":116,"updated":"2017-01-12 17:01:59.000000000","message":"We can specify single resource_association_id.  In case of multiple resources, it is followed by help message.  Hence, I like \u0027resource_association_id\u0027 :)","commit_id":"a9d28fec6495a4c122470f7039dd795c0adb9dbf"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"ceb0e20d41fb92894ab230c4f9549443745815ea","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    def get_parser(self, prog_name):"},{"line_number":114,"context_line":"        parser \u003d super(DeleteBgpvpnResAssoc, self).get_parser(prog_name)"},{"line_number":115,"context_line":"        parser.add_argument("},{"line_number":116,"context_line":"            \u0027resource_association_ids\u0027,"},{"line_number":117,"context_line":"            metavar\u003d\"\u003c%s association ID\u003e\" % self._assoc_res_name,"},{"line_number":118,"context_line":"            nargs\u003d\"+\","},{"line_number":119,"context_line":"            help\u003d(_(\"%s association ID(s) to delete.\") %"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a3c09a3_f4165054","line":116,"in_reply_to":"9a57fde8_de48725e","updated":"2017-01-16 21:32:11.000000000","message":"Yes but in any case, that variable is a list of UUID string.","commit_id":"a9d28fec6495a4c122470f7039dd795c0adb9dbf"}],"neutronclient/v2_0/client.py":[{"author":{"_account_id":12021,"name":"Thomas Morin","email":"tmmorin.orange@gmail.com","username":"tmorin"},"change_message_id":"f2c4ffc3e2665b0991ad679cc56b68434f986550","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ba5201f7_ced23800","updated":"2017-01-04 08:46:38.000000000","message":"It would be better to update the commit message/title to indicate that Neutron Client class is also extended for BGPVPN support.","commit_id":"d50a57fd586574f172e5261dba34d3f30729da05"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"d7edd8f0998af5d3db06112f6d6c0e1d2addf665","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ba5201f7_0a17c1ed","in_reply_to":"ba5201f7_ced23800","updated":"2017-01-04 13:40:31.000000000","message":"Not sure that\u0027s necessary. If you look other OSC CLI porting [1] and [2], the commit message does not indicate that.\n\n[1] https://review.openstack.org/#/c/351582/\n[2] https://review.openstack.org/#/c/409759/","commit_id":"d50a57fd586574f172e5261dba34d3f30729da05"}],"releasenotes/notes/support-networking-bgpvpn-cli-fdd0cc3a5b14983d.yaml":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"5eab64af1e68d462e504fe8464b1af3bd67756e1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - CLI support for the \"Neutron BGP VPN Interconnection \" feature,"},{"line_number":4,"context_line":"    which is an API extension to support inter-connection between"},{"line_number":5,"context_line":"    L3VPNs/E-VPNs and Neutron resources, as OSC plugin commands."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"1a430d35_8cb02845","line":3,"range":{"start_line":3,"start_character":56,"end_line":3,"end_character":57},"updated":"2017-02-07 03:03:25.000000000","message":"extra space?","commit_id":"9a7f94dafb9929bf6eb92fa2cd918a81d9ca5aa2"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"487cb0eb1ffdf2dbcb37274998a0782e7dafa769","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - CLI support for the \"Neutron BGP VPN Interconnection \" feature,"},{"line_number":4,"context_line":"    which is an API extension to support inter-connection between"},{"line_number":5,"context_line":"    L3VPNs/E-VPNs and Neutron resources, as OSC plugin commands."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"1a430d35_3b766806","line":3,"range":{"start_line":3,"start_character":56,"end_line":3,"end_character":57},"in_reply_to":"1a430d35_8cb02845","updated":"2017-02-07 17:21:28.000000000","message":"Done","commit_id":"9a7f94dafb9929bf6eb92fa2cd918a81d9ca5aa2"}],"setup.cfg":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b486c69908629a7787d5ceee582970aa157a01f0","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    bgpvpn_delete \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:DeleteBgpvpn"},{"line_number":72,"context_line":"    bgpvpn_list \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:ListBgpvpn"},{"line_number":73,"context_line":"    bgpvpn_show \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:ShowBgpvpn"},{"line_number":74,"context_line":"    bgpvpn_net-assoc_create \u003d neutronclient.osc.v2.networking_bgpvpn.network_association:CreateBgpvpnNetAssoc"},{"line_number":75,"context_line":"    bgpvpn_net-assoc_delete \u003d neutronclient.osc.v2.networking_bgpvpn.network_association:DeleteBgpvpnNetAssoc"},{"line_number":76,"context_line":"    bgpvpn_net-assoc_list \u003d neutronclient.osc.v2.networking_bgpvpn.network_association:ListBgpvpnNetAssoc"},{"line_number":77,"context_line":"    bgpvpn_net-assoc_show \u003d neutronclient.osc.v2.networking_bgpvpn.network_association:ShowBgpvpnNetAssoc"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"7a3c09a3_31d4c6bb","line":74,"range":{"start_line":74,"start_character":11,"end_line":74,"end_character":20},"updated":"2017-01-17 13:06:31.000000000","message":"In OSC we use \u0027network\u0027 rather than \u0027net\u0027 in network commands.\nI wonder \u0027network\u0027 should be used.\n\nSimilarly, it seems we tend to avoid abbreviation. \u0027association\u0027 looks better.\n\nFinally, we don\u0027t use \u0027-\u0027 in OSC commands. \"bgpvpn network association create\u0027?","commit_id":"fe6ec055e46849c600354372c22662e33d6be1d0"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"0963163fef020cdddf17a56c2cadc3909d5ecc05","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    firewall_group_rule_show \u003d neutronclient.osc.v2.fwaas.firewallrule:ShowFirewallRule"},{"line_number":66,"context_line":"    firewall_group_rule_unset \u003d neutronclient.osc.v2.fwaas.firewallrule:UnsetFirewallRule"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    bgpvpn_create \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:CreateBgpvpn"},{"line_number":69,"context_line":"    bgpvpn_set \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:SetBgpvpn"},{"line_number":70,"context_line":"    bgpvpn_unset \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:UnsetBgpvpn"},{"line_number":71,"context_line":"    bgpvpn_delete \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:DeleteBgpvpn"},{"line_number":72,"context_line":"    bgpvpn_list \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:ListBgpvpn"},{"line_number":73,"context_line":"    bgpvpn_show \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:ShowBgpvpn"},{"line_number":74,"context_line":"    bgpvpn_network_association_create \u003d neutronclient.osc.v2.networking_bgpvpn.network_association:CreateBgpvpnNetAssoc"},{"line_number":75,"context_line":"    bgpvpn_network_association_delete \u003d neutronclient.osc.v2.networking_bgpvpn.network_association:DeleteBgpvpnNetAssoc"}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"5a3905b3_fc235e03","line":72,"range":{"start_line":68,"start_character":4,"end_line":72,"end_character":15},"updated":"2017-01-19 23:00:22.000000000","message":"alphabetical order\ncreate, delete, list, set, show, unset","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"},{"author":{"_account_id":55,"name":"Édouard Thuleau","email":"ethuleau@juniper.net","username":"ethuleau"},"change_message_id":"9fff061a5bc5136fc0c1932ccb729fb80f3fdec5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    firewall_group_rule_show \u003d neutronclient.osc.v2.fwaas.firewallrule:ShowFirewallRule"},{"line_number":66,"context_line":"    firewall_group_rule_unset \u003d neutronclient.osc.v2.fwaas.firewallrule:UnsetFirewallRule"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    bgpvpn_create \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:CreateBgpvpn"},{"line_number":69,"context_line":"    bgpvpn_set \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:SetBgpvpn"},{"line_number":70,"context_line":"    bgpvpn_unset \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:UnsetBgpvpn"},{"line_number":71,"context_line":"    bgpvpn_delete \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:DeleteBgpvpn"},{"line_number":72,"context_line":"    bgpvpn_list \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:ListBgpvpn"},{"line_number":73,"context_line":"    bgpvpn_show \u003d neutronclient.osc.v2.networking_bgpvpn.bgpvpn:ShowBgpvpn"},{"line_number":74,"context_line":"    bgpvpn_network_association_create \u003d neutronclient.osc.v2.networking_bgpvpn.network_association:CreateBgpvpnNetAssoc"},{"line_number":75,"context_line":"    bgpvpn_network_association_delete \u003d neutronclient.osc.v2.networking_bgpvpn.network_association:DeleteBgpvpnNetAssoc"}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"5a3905b3_c248cfb5","line":72,"range":{"start_line":68,"start_character":4,"end_line":72,"end_character":15},"in_reply_to":"5a3905b3_fc235e03","updated":"2017-01-24 11:06:16.000000000","message":"Done","commit_id":"c5f3b58ec38fcd044c6da224a62efa62251efa5b"}]}
