)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5bb152698b5e6d6dec0151450c439aa2ff31b82e","unresolved":false,"context_lines":[{"line_number":18,"context_line":"The lower-constraint of decorator is bumped because of problem already"},{"line_number":19,"context_line":"fixed by amotoki here: https://review.opendev.org/701706"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"IIRC dogpile.cache started using decorator\u0027s decorate(), but they"},{"line_number":22,"context_line":"forgot to bump their decorator requirement. Later they fixed the missing"},{"line_number":23,"context_line":"requirement, so after dogpile.cache \u003e\u003d 0.8.0 this should not be a"},{"line_number":24,"context_line":"problem anymore:"},{"line_number":25,"context_line":"https://github.com/sqlalchemy/dogpile.cache/commit/13009319c75ba8ff63c508fdd7fe34762af1f123"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: Ia9b9c216f1d1161ebedac31594a2c464d77f4ae2"},{"line_number":28,"context_line":"Depends-On: https://review.opendev.org/674324"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"df33271e_a2162ef0","line":25,"range":{"start_line":21,"start_character":0,"end_line":25,"end_character":91},"updated":"2020-03-30 13:31:53.000000000","message":"I am not sure why this description is needed.\n\n- dogpile.cache and keystoneauth1 requirements match what openstacksdk requires.\n- decorator is needed to bump due to openstack/cloud/_utils.py in openstacksdk.\n\nI cannot understand how this paragraph is related.","commit_id":"608878d2d5fa2b585c7e71acb2883735a5af3504"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"4e4b3635816d461897b0efdfbebb331ec5fcf370","unresolved":false,"context_lines":[{"line_number":18,"context_line":"The lower-constraint of decorator is bumped because of problem already"},{"line_number":19,"context_line":"fixed by amotoki here: https://review.opendev.org/701706"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"IIRC dogpile.cache started using decorator\u0027s decorate(), but they"},{"line_number":22,"context_line":"forgot to bump their decorator requirement. Later they fixed the missing"},{"line_number":23,"context_line":"requirement, so after dogpile.cache \u003e\u003d 0.8.0 this should not be a"},{"line_number":24,"context_line":"problem anymore:"},{"line_number":25,"context_line":"https://github.com/sqlalchemy/dogpile.cache/commit/13009319c75ba8ff63c508fdd7fe34762af1f123"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: Ia9b9c216f1d1161ebedac31594a2c464d77f4ae2"},{"line_number":28,"context_line":"Depends-On: https://review.opendev.org/674324"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"df33271e_c861d1d5","line":25,"range":{"start_line":21,"start_character":0,"end_line":25,"end_character":91},"in_reply_to":"df33271e_a2162ef0","updated":"2020-03-30 14:21:05.000000000","message":"Done","commit_id":"608878d2d5fa2b585c7e71acb2883735a5af3504"}],"doc/source/cli/command-objects/router.rst":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a923a3ac04525c26f5df7994476138ca802455ca","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"router add route"},{"line_number":56,"context_line":"----------------"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Add a static entry to the router\u0027s routing table."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":".. program:: router add route"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5faad753_2fdba0ed","line":57,"updated":"2019-09-10 13:15:40.000000000","message":"Hopefully all strings here and the command match exactly.","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"8445cde2488b19c1396ac2063c1608d141216661","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"router add route"},{"line_number":56,"context_line":"----------------"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Add a static entry to the router\u0027s routing table."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":".. program:: router add route"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5faad753_e60ef830","line":57,"in_reply_to":"5faad753_2fdba0ed","updated":"2019-09-11 12:33:11.000000000","message":"I hope that too. :-)","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a923a3ac04525c26f5df7994476138ca802455ca","unresolved":false,"context_lines":[{"line_number":367,"context_line":"    Routes associated with the router"},{"line_number":368,"context_line":"    destination: destination subnet (in CIDR notation)"},{"line_number":369,"context_line":"    gateway: nexthop IP address"},{"line_number":370,"context_line":"    (repeat option to set multiple routes)"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":".. option:: --no-route"},{"line_number":373,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5faad753_4ffffc33","line":370,"updated":"2019-09-10 13:15:40.000000000","message":"The deprecation notice in the code needs to be added here.","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"8445cde2488b19c1396ac2063c1608d141216661","unresolved":false,"context_lines":[{"line_number":367,"context_line":"    Routes associated with the router"},{"line_number":368,"context_line":"    destination: destination subnet (in CIDR notation)"},{"line_number":369,"context_line":"    gateway: nexthop IP address"},{"line_number":370,"context_line":"    (repeat option to set multiple routes)"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":".. option:: --no-route"},{"line_number":373,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5faad753_a6fec0ab","line":370,"in_reply_to":"5faad753_4ffffc33","updated":"2019-09-11 12:33:11.000000000","message":"Done","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"}],"lower-constraints.txt":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"da45be111fc47c49c740e9152844b830f3af1e8e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"coverage\u003d\u003d4.0"},{"line_number":13,"context_line":"cryptography\u003d\u003d2.1"},{"line_number":14,"context_line":"debtcollector\u003d\u003d1.2.0"},{"line_number":15,"context_line":"decorator\u003d\u003d3.4.0"},{"line_number":16,"context_line":"deprecation\u003d\u003d1.0"},{"line_number":17,"context_line":"docker-pycreds\u003d\u003d0.2.1"},{"line_number":18,"context_line":"docker\u003d\u003d2.4.2"}],"source_content_type":"text/plain","patch_set":9,"id":"3fa7e38b_bacadc15","side":"PARENT","line":15,"updated":"2020-01-09 07:34:27.000000000","message":"Why do you drop this? Looking at the lower-constraints job result [1], decorator is installed, so it looks good to keep it.\n\n[1] https://zuul.opendev.org/t/openstack/build/467f7365268f43c4b1a92fcfbfff47a3/log/tox/lower-constraints-4.log#17","commit_id":"2c676b60b15b615e7a1e1c4255b4461f0f2a09a6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"ef64e0551d2119a7ed039193b018f81435142c3f","unresolved":false,"context_lines":[{"line_number":12,"context_line":"coverage\u003d\u003d4.0"},{"line_number":13,"context_line":"cryptography\u003d\u003d2.1"},{"line_number":14,"context_line":"debtcollector\u003d\u003d1.2.0"},{"line_number":15,"context_line":"decorator\u003d\u003d3.4.0"},{"line_number":16,"context_line":"deprecation\u003d\u003d1.0"},{"line_number":17,"context_line":"docker-pycreds\u003d\u003d0.2.1"},{"line_number":18,"context_line":"docker\u003d\u003d2.4.2"}],"source_content_type":"text/plain","patch_set":9,"id":"3fa7e38b_99002706","side":"PARENT","line":15,"in_reply_to":"3fa7e38b_1442e0ac","updated":"2020-01-13 09:56:42.000000000","message":"Thank you Akihiro for the sdk patch. That\u0027s a definitely a useful improvement. However IIUC it\u0027s not transitively enforced here, right?\n\nSean: I\u0027m still a bit confused about that behavior. If we allow later pip installs to upgrade packages compared to what we have in lower-constraints.txt then what exactly are we testing with a lower-constraints job?","commit_id":"2c676b60b15b615e7a1e1c4255b4461f0f2a09a6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"cb233ecc834a7c23e4678ec4c9b99fc521cf3820","unresolved":false,"context_lines":[{"line_number":12,"context_line":"coverage\u003d\u003d4.0"},{"line_number":13,"context_line":"cryptography\u003d\u003d2.1"},{"line_number":14,"context_line":"debtcollector\u003d\u003d1.2.0"},{"line_number":15,"context_line":"decorator\u003d\u003d3.4.0"},{"line_number":16,"context_line":"deprecation\u003d\u003d1.0"},{"line_number":17,"context_line":"docker-pycreds\u003d\u003d0.2.1"},{"line_number":18,"context_line":"docker\u003d\u003d2.4.2"}],"source_content_type":"text/plain","patch_set":9,"id":"3fa7e38b_c90275ba","side":"PARENT","line":15,"in_reply_to":"3fa7e38b_832e9cf6","updated":"2020-01-09 11:56:25.000000000","message":"I proposed a fix to openstacksdk.\nhttps://review.opendev.org/#/c/701706/","commit_id":"2c676b60b15b615e7a1e1c4255b4461f0f2a09a6"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"12cf1c44c71d8944374adff25cbaaaf57def5f11","unresolved":false,"context_lines":[{"line_number":12,"context_line":"coverage\u003d\u003d4.0"},{"line_number":13,"context_line":"cryptography\u003d\u003d2.1"},{"line_number":14,"context_line":"debtcollector\u003d\u003d1.2.0"},{"line_number":15,"context_line":"decorator\u003d\u003d3.4.0"},{"line_number":16,"context_line":"deprecation\u003d\u003d1.0"},{"line_number":17,"context_line":"docker-pycreds\u003d\u003d0.2.1"},{"line_number":18,"context_line":"docker\u003d\u003d2.4.2"}],"source_content_type":"text/plain","patch_set":9,"id":"3fa7e38b_a4dff765","side":"PARENT","line":15,"in_reply_to":"3fa7e38b_99002706","updated":"2020-01-13 13:31:44.000000000","message":"The trick is that we don\u0027t upgrade packages.\n\nhttps://opendev.org/openstack/python-openstackclient/src/branch/master/tox.ini#L142\n\nThe lower-constraints job tells it to install the requirements (the two -r lines) and constrain it using this lower-constraints.txt file (the -c) rather than using the published upper-constraints that jobs normally use:\n\nhttps://opendev.org/openstack/python-openstackclient/src/branch/master/tox.ini#L19\n\nThe *should* result in only the versions defined in here being installed so that we are testing that what we say is the lowest versions that can be used actually do install and work as expected.","commit_id":"2c676b60b15b615e7a1e1c4255b4461f0f2a09a6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"33f246103e1a02dd49e6fdfaa324639aec45036a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"coverage\u003d\u003d4.0"},{"line_number":13,"context_line":"cryptography\u003d\u003d2.1"},{"line_number":14,"context_line":"debtcollector\u003d\u003d1.2.0"},{"line_number":15,"context_line":"decorator\u003d\u003d3.4.0"},{"line_number":16,"context_line":"deprecation\u003d\u003d1.0"},{"line_number":17,"context_line":"docker-pycreds\u003d\u003d0.2.1"},{"line_number":18,"context_line":"docker\u003d\u003d2.4.2"}],"source_content_type":"text/plain","patch_set":9,"id":"3fa7e38b_e031860b","side":"PARENT","line":15,"in_reply_to":"3fa7e38b_bacadc15","updated":"2020-01-09 09:35:53.000000000","message":"3.4.0 was definitely wrong and first I did not know which version to go with instead. But now I think anything above 4.0.0 is good like 4.4.1 that got installed in the gate run you linked to.\n\nThere\u0027s still a piece I don\u0027t understand though: If I put 4.0.0 here tox still installs 4.4.1...","commit_id":"2c676b60b15b615e7a1e1c4255b4461f0f2a09a6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f5e24b9273a018d361819cade3d911e51fc7a57e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"coverage\u003d\u003d4.0"},{"line_number":13,"context_line":"cryptography\u003d\u003d2.1"},{"line_number":14,"context_line":"debtcollector\u003d\u003d1.2.0"},{"line_number":15,"context_line":"decorator\u003d\u003d3.4.0"},{"line_number":16,"context_line":"deprecation\u003d\u003d1.0"},{"line_number":17,"context_line":"docker-pycreds\u003d\u003d0.2.1"},{"line_number":18,"context_line":"docker\u003d\u003d2.4.2"}],"source_content_type":"text/plain","patch_set":9,"id":"3fa7e38b_832e9cf6","side":"PARENT","line":15,"in_reply_to":"3fa7e38b_c3b574d1","updated":"2020-01-09 10:14:05.000000000","message":"I checked the source code of decorator. @decorator.decorate used in openstacksdk only exists since decorator 4.0.0. I am okay with patch set 10. I will propose the corresponding change to openstacksdk from now.\n\nCould you mention why decorator in lower-constraints is updated per this discussion?","commit_id":"2c676b60b15b615e7a1e1c4255b4461f0f2a09a6"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"084dce36a8639f56d2ab4064c9420feb106df2be","unresolved":false,"context_lines":[{"line_number":12,"context_line":"coverage\u003d\u003d4.0"},{"line_number":13,"context_line":"cryptography\u003d\u003d2.1"},{"line_number":14,"context_line":"debtcollector\u003d\u003d1.2.0"},{"line_number":15,"context_line":"decorator\u003d\u003d3.4.0"},{"line_number":16,"context_line":"deprecation\u003d\u003d1.0"},{"line_number":17,"context_line":"docker-pycreds\u003d\u003d0.2.1"},{"line_number":18,"context_line":"docker\u003d\u003d2.4.2"}],"source_content_type":"text/plain","patch_set":9,"id":"3fa7e38b_1442e0ac","side":"PARENT","line":15,"in_reply_to":"3fa7e38b_e031860b","updated":"2020-01-09 13:15:03.000000000","message":"As far as a higher version being installed, in the lower-constraints job that can happen if one of the other dependencies specifies a higher minimum.\n\nIn other jobs, typically pip will install the highest version it can, limited by what is in upper-constraints (the -c in the tox.ini deps setting). So that may be what you\u0027re seeing with 4.4.1 being installed.","commit_id":"2c676b60b15b615e7a1e1c4255b4461f0f2a09a6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ccc48bd3d26bb1e4eb2c8fcf2552c07e7b58f23e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"coverage\u003d\u003d4.0"},{"line_number":13,"context_line":"cryptography\u003d\u003d2.1"},{"line_number":14,"context_line":"debtcollector\u003d\u003d1.2.0"},{"line_number":15,"context_line":"decorator\u003d\u003d3.4.0"},{"line_number":16,"context_line":"deprecation\u003d\u003d1.0"},{"line_number":17,"context_line":"docker-pycreds\u003d\u003d0.2.1"},{"line_number":18,"context_line":"docker\u003d\u003d2.4.2"}],"source_content_type":"text/plain","patch_set":9,"id":"3fa7e38b_e38af017","side":"PARENT","line":15,"in_reply_to":"3fa7e38b_e031860b","updated":"2020-01-09 10:00:19.000000000","message":"What is wrong if decorator 3.4.0 is used? openstacksdk lower-constraints.txt contains decorator\u003d\u003d3.4.0. Is it a problem in OSC?","commit_id":"2c676b60b15b615e7a1e1c4255b4461f0f2a09a6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"23e7e06b24295368dd56e1b34ab6004a47fe7b9d","unresolved":false,"context_lines":[{"line_number":12,"context_line":"coverage\u003d\u003d4.0"},{"line_number":13,"context_line":"cryptography\u003d\u003d2.1"},{"line_number":14,"context_line":"debtcollector\u003d\u003d1.2.0"},{"line_number":15,"context_line":"decorator\u003d\u003d3.4.0"},{"line_number":16,"context_line":"deprecation\u003d\u003d1.0"},{"line_number":17,"context_line":"docker-pycreds\u003d\u003d0.2.1"},{"line_number":18,"context_line":"docker\u003d\u003d2.4.2"}],"source_content_type":"text/plain","patch_set":9,"id":"3fa7e38b_c3b574d1","side":"PARENT","line":15,"in_reply_to":"3fa7e38b_e38af017","updated":"2020-01-09 10:05:05.000000000","message":"I confirmed the lower-constraints job of OSC failed with decorator 3.4.0.\n\ndecorator is installed as a dependency of openstacksdk, but surprisingly it works with openstacksdk lower-constraints job.\nAnyway it looks like we need to update the lower bound of decorator in openstacksdk.","commit_id":"2c676b60b15b615e7a1e1c4255b4461f0f2a09a6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e2deb014c4530990069b453c2b20f3011beaccc2","unresolved":false,"context_lines":[{"line_number":12,"context_line":"coverage\u003d\u003d4.0"},{"line_number":13,"context_line":"cryptography\u003d\u003d2.1"},{"line_number":14,"context_line":"debtcollector\u003d\u003d1.2.0"},{"line_number":15,"context_line":"decorator\u003d\u003d4.4.1"},{"line_number":16,"context_line":"deprecation\u003d\u003d1.0"},{"line_number":17,"context_line":"docker-pycreds\u003d\u003d0.2.1"},{"line_number":18,"context_line":"docker\u003d\u003d2.4.2"}],"source_content_type":"text/plain","patch_set":17,"id":"df33271e_e99ca0c1","line":15,"updated":"2020-03-30 10:31:16.000000000","message":"this bump of requirement isn\u0027t mentioned in commit message. Maybe You should add some explanation why it\u0027s bumped?","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b3550095f77f3a5b74a29f5cf7bb8241e69e3999","unresolved":false,"context_lines":[{"line_number":12,"context_line":"coverage\u003d\u003d4.0"},{"line_number":13,"context_line":"cryptography\u003d\u003d2.1"},{"line_number":14,"context_line":"debtcollector\u003d\u003d1.2.0"},{"line_number":15,"context_line":"decorator\u003d\u003d4.4.1"},{"line_number":16,"context_line":"deprecation\u003d\u003d1.0"},{"line_number":17,"context_line":"docker-pycreds\u003d\u003d0.2.1"},{"line_number":18,"context_line":"docker\u003d\u003d2.4.2"}],"source_content_type":"text/plain","patch_set":17,"id":"df33271e_e4320710","line":15,"in_reply_to":"df33271e_0438cb3a","updated":"2020-03-30 11:48:27.000000000","message":"Thank you Akihiro for remembering.","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b52ff01ddaf6b6c47a3f31d061e5766ac687d817","unresolved":false,"context_lines":[{"line_number":12,"context_line":"coverage\u003d\u003d4.0"},{"line_number":13,"context_line":"cryptography\u003d\u003d2.1"},{"line_number":14,"context_line":"debtcollector\u003d\u003d1.2.0"},{"line_number":15,"context_line":"decorator\u003d\u003d4.4.1"},{"line_number":16,"context_line":"deprecation\u003d\u003d1.0"},{"line_number":17,"context_line":"docker-pycreds\u003d\u003d0.2.1"},{"line_number":18,"context_line":"docker\u003d\u003d2.4.2"}],"source_content_type":"text/plain","patch_set":17,"id":"df33271e_0438cb3a","line":15,"in_reply_to":"df33271e_e99ca0c1","updated":"2020-03-30 11:37:58.000000000","message":"This is something special. During this review, it turns out that a newer version of decorator is required by oepnstacksdk and I sent a fix to SDK. https://review.opendev.org/#/c/701706/\n\nIt is worth mentioning in the commit message.","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e2deb014c4530990069b453c2b20f3011beaccc2","unresolved":false,"context_lines":[{"line_number":16,"context_line":"deprecation\u003d\u003d1.0"},{"line_number":17,"context_line":"docker-pycreds\u003d\u003d0.2.1"},{"line_number":18,"context_line":"docker\u003d\u003d2.4.2"},{"line_number":19,"context_line":"dogpile.cache\u003d\u003d0.6.5"},{"line_number":20,"context_line":"eventlet\u003d\u003d0.18.2"},{"line_number":21,"context_line":"extras\u003d\u003d1.0.0"},{"line_number":22,"context_line":"fasteners\u003d\u003d0.7.0"}],"source_content_type":"text/plain","patch_set":17,"id":"df33271e_09a8e4d8","line":19,"updated":"2020-03-30 10:31:16.000000000","message":"same here","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b52ff01ddaf6b6c47a3f31d061e5766ac687d817","unresolved":false,"context_lines":[{"line_number":16,"context_line":"deprecation\u003d\u003d1.0"},{"line_number":17,"context_line":"docker-pycreds\u003d\u003d0.2.1"},{"line_number":18,"context_line":"docker\u003d\u003d2.4.2"},{"line_number":19,"context_line":"dogpile.cache\u003d\u003d0.6.5"},{"line_number":20,"context_line":"eventlet\u003d\u003d0.18.2"},{"line_number":21,"context_line":"extras\u003d\u003d1.0.0"},{"line_number":22,"context_line":"fasteners\u003d\u003d0.7.0"}],"source_content_type":"text/plain","patch_set":17,"id":"df33271e_240cef92","line":19,"in_reply_to":"df33271e_09a8e4d8","updated":"2020-03-30 11:37:58.000000000","message":"This is bumped only by a requirement change in openstacksdk.\nIf we cover it in the commit message, it would be just like: \"lower-constraints.txt is updated according to the requirements change in openstacksdk.\"","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e2deb014c4530990069b453c2b20f3011beaccc2","unresolved":false,"context_lines":[{"line_number":38,"context_line":"jsonpatch\u003d\u003d1.16"},{"line_number":39,"context_line":"jsonpointer\u003d\u003d1.13"},{"line_number":40,"context_line":"jsonschema\u003d\u003d2.6.0"},{"line_number":41,"context_line":"keystoneauth1\u003d\u003d3.18.0"},{"line_number":42,"context_line":"kombu\u003d\u003d4.0.0"},{"line_number":43,"context_line":"linecache2\u003d\u003d1.0.0"},{"line_number":44,"context_line":"MarkupSafe\u003d\u003d1.1.0"}],"source_content_type":"text/plain","patch_set":17,"id":"df33271e_69b09044","line":41,"updated":"2020-03-30 10:31:16.000000000","message":"and here","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b3550095f77f3a5b74a29f5cf7bb8241e69e3999","unresolved":false,"context_lines":[{"line_number":38,"context_line":"jsonpatch\u003d\u003d1.16"},{"line_number":39,"context_line":"jsonpointer\u003d\u003d1.13"},{"line_number":40,"context_line":"jsonschema\u003d\u003d2.6.0"},{"line_number":41,"context_line":"keystoneauth1\u003d\u003d3.18.0"},{"line_number":42,"context_line":"kombu\u003d\u003d4.0.0"},{"line_number":43,"context_line":"linecache2\u003d\u003d1.0.0"},{"line_number":44,"context_line":"MarkupSafe\u003d\u003d1.1.0"}],"source_content_type":"text/plain","patch_set":17,"id":"df33271e_a452bfdc","line":41,"in_reply_to":"df33271e_69b09044","updated":"2020-03-30 11:48:27.000000000","message":"As Lajos commented on patch set 14.","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b52ff01ddaf6b6c47a3f31d061e5766ac687d817","unresolved":false,"context_lines":[{"line_number":38,"context_line":"jsonpatch\u003d\u003d1.16"},{"line_number":39,"context_line":"jsonpointer\u003d\u003d1.13"},{"line_number":40,"context_line":"jsonschema\u003d\u003d2.6.0"},{"line_number":41,"context_line":"keystoneauth1\u003d\u003d3.18.0"},{"line_number":42,"context_line":"kombu\u003d\u003d4.0.0"},{"line_number":43,"context_line":"linecache2\u003d\u003d1.0.0"},{"line_number":44,"context_line":"MarkupSafe\u003d\u003d1.1.0"}],"source_content_type":"text/plain","patch_set":17,"id":"df33271e_6429d7e4","line":41,"in_reply_to":"df33271e_69b09044","updated":"2020-03-30 11:37:58.000000000","message":"same as dogpile.cache","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e2deb014c4530990069b453c2b20f3011beaccc2","unresolved":false,"context_lines":[{"line_number":50,"context_line":"munch\u003d\u003d2.1.0"},{"line_number":51,"context_line":"netaddr\u003d\u003d0.7.18"},{"line_number":52,"context_line":"netifaces\u003d\u003d0.10.4"},{"line_number":53,"context_line":"openstacksdk\u003d\u003d0.38.0"},{"line_number":54,"context_line":"os-client-config\u003d\u003d1.28.0"},{"line_number":55,"context_line":"os-service-types\u003d\u003d1.7.0"},{"line_number":56,"context_line":"os-testr\u003d\u003d1.0.0"}],"source_content_type":"text/plain","patch_set":17,"id":"df33271e_a9b6183d","line":53,"updated":"2020-03-30 10:31:16.000000000","message":"this one is explained already :)","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"}],"openstackclient/network/v2/router.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"62e82acfdf90b68f2052b05008d8d609e61be6e9","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":185,"context_line":"            default\u003d[],"},{"line_number":186,"context_line":"            required_keys\u003d[\u0027destination\u0027, \u0027gateway\u0027],"},{"line_number":187,"context_line":"            help\u003d_(\"Routes added to the router \""},{"line_number":188,"context_line":"                   \"destination: destination subnet (in CIDR notation) \""},{"line_number":189,"context_line":"                   \"gateway: nexthop IP address \""},{"line_number":190,"context_line":"                   \"(repeat option to add multiple routes)\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_f232d85d","line":187,"range":{"start_line":187,"start_character":20,"end_line":187,"end_character":33},"updated":"2019-08-02 15:24:03.000000000","message":"s/Add routes ?","commit_id":"93cbe838b5e7fa9c6910e029553690d1204a23b6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"f55cf7eb1608b342c4d176d345ded96274636672","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":185,"context_line":"            default\u003d[],"},{"line_number":186,"context_line":"            required_keys\u003d[\u0027destination\u0027, \u0027gateway\u0027],"},{"line_number":187,"context_line":"            help\u003d_(\"Routes added to the router \""},{"line_number":188,"context_line":"                   \"destination: destination subnet (in CIDR notation) \""},{"line_number":189,"context_line":"                   \"gateway: nexthop IP address \""},{"line_number":190,"context_line":"                   \"(repeat option to add multiple routes)\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_46ec3cba","line":187,"range":{"start_line":187,"start_character":20,"end_line":187,"end_character":33},"in_reply_to":"7faddb67_f232d85d","updated":"2019-08-05 09:00:08.000000000","message":"Done","commit_id":"93cbe838b5e7fa9c6910e029553690d1204a23b6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"62e82acfdf90b68f2052b05008d8d609e61be6e9","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":224,"context_line":"            default\u003d[],"},{"line_number":225,"context_line":"            required_keys\u003d[\u0027destination\u0027, \u0027gateway\u0027],"},{"line_number":226,"context_line":"            help\u003d_(\"Routes removes from the router \""},{"line_number":227,"context_line":"                   \"destination: destination subnet (in CIDR notation) \""},{"line_number":228,"context_line":"                   \"gateway: nexthop IP address \""},{"line_number":229,"context_line":"                   \"(repeat option to remove multiple routes)\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_d2247c0f","line":226,"range":{"start_line":226,"start_character":20,"end_line":226,"end_character":34},"updated":"2019-08-02 15:24:03.000000000","message":"s/Remove routes ?","commit_id":"93cbe838b5e7fa9c6910e029553690d1204a23b6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"f55cf7eb1608b342c4d176d345ded96274636672","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":224,"context_line":"            default\u003d[],"},{"line_number":225,"context_line":"            required_keys\u003d[\u0027destination\u0027, \u0027gateway\u0027],"},{"line_number":226,"context_line":"            help\u003d_(\"Routes removes from the router \""},{"line_number":227,"context_line":"                   \"destination: destination subnet (in CIDR notation) \""},{"line_number":228,"context_line":"                   \"gateway: nexthop IP address \""},{"line_number":229,"context_line":"                   \"(repeat option to remove multiple routes)\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_06308455","line":226,"range":{"start_line":226,"start_character":20,"end_line":226,"end_character":34},"in_reply_to":"7faddb67_d2247c0f","updated":"2019-08-05 09:00:08.000000000","message":"Done","commit_id":"93cbe838b5e7fa9c6910e029553690d1204a23b6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"62e82acfdf90b68f2052b05008d8d609e61be6e9","unresolved":false,"context_lines":[{"line_number":624,"context_line":"                   \"overwrite the current value of \u0027routes\u0027 this is \""},{"line_number":625,"context_line":"                   \"deprecated in favor of \u0027router add/remove route\u0027 \""},{"line_number":626,"context_line":"                   \"because that is not prone to race conditions between \""},{"line_number":627,"context_line":"                   \"concurrent clients.\")"},{"line_number":628,"context_line":"        )"},{"line_number":629,"context_line":"        parser.add_argument("},{"line_number":630,"context_line":"            \u0027--no-route\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_52364c05","line":627,"updated":"2019-08-02 15:24:03.000000000","message":"It\u0027s good we\u0027re adding this note, but maybe we should make it a stronger note by moving things around?\n\n\"This is deprecated in favor of \u0027router add/remove route\u0027 since it is prone to race conditions between concurrent clients when not used together with --no-route to overwrite the current value of \u0027routes\u0027.\"","commit_id":"93cbe838b5e7fa9c6910e029553690d1204a23b6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"f55cf7eb1608b342c4d176d345ded96274636672","unresolved":false,"context_lines":[{"line_number":624,"context_line":"                   \"overwrite the current value of \u0027routes\u0027 this is \""},{"line_number":625,"context_line":"                   \"deprecated in favor of \u0027router add/remove route\u0027 \""},{"line_number":626,"context_line":"                   \"because that is not prone to race conditions between \""},{"line_number":627,"context_line":"                   \"concurrent clients.\")"},{"line_number":628,"context_line":"        )"},{"line_number":629,"context_line":"        parser.add_argument("},{"line_number":630,"context_line":"            \u0027--no-route\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_461afcc5","line":627,"in_reply_to":"7faddb67_52364c05","updated":"2019-08-05 09:00:08.000000000","message":"Done","commit_id":"93cbe838b5e7fa9c6910e029553690d1204a23b6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"62e82acfdf90b68f2052b05008d8d609e61be6e9","unresolved":false,"context_lines":[{"line_number":631,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":632,"context_line":"            help\u003d_(\"Clear routes associated with the router. \""},{"line_number":633,"context_line":"                   \"Specify both --route and --no-route to overwrite \""},{"line_number":634,"context_line":"                   \"current value of route.\")"},{"line_number":635,"context_line":"        )"},{"line_number":636,"context_line":"        routes_ha \u003d parser.add_mutually_exclusive_group()"},{"line_number":637,"context_line":"        routes_ha.add_argument("}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_d2d79cbe","line":634,"range":{"start_line":634,"start_character":37,"end_line":634,"end_character":42},"updated":"2019-08-02 15:24:03.000000000","message":"nit: s/routes - outside of scope of change, just noticed","commit_id":"93cbe838b5e7fa9c6910e029553690d1204a23b6"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"f55cf7eb1608b342c4d176d345ded96274636672","unresolved":false,"context_lines":[{"line_number":631,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":632,"context_line":"            help\u003d_(\"Clear routes associated with the router. \""},{"line_number":633,"context_line":"                   \"Specify both --route and --no-route to overwrite \""},{"line_number":634,"context_line":"                   \"current value of route.\")"},{"line_number":635,"context_line":"        )"},{"line_number":636,"context_line":"        routes_ha \u003d parser.add_mutually_exclusive_group()"},{"line_number":637,"context_line":"        routes_ha.add_argument("}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_a68090c0","line":634,"range":{"start_line":634,"start_character":37,"end_line":634,"end_character":42},"in_reply_to":"7faddb67_d2d79cbe","updated":"2019-08-05 09:00:08.000000000","message":"Done","commit_id":"93cbe838b5e7fa9c6910e029553690d1204a23b6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a923a3ac04525c26f5df7994476138ca802455ca","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":185,"context_line":"            default\u003d[],"},{"line_number":186,"context_line":"            required_keys\u003d[\u0027destination\u0027, \u0027gateway\u0027],"},{"line_number":187,"context_line":"            help\u003d_(\"Add routes to the router \""},{"line_number":188,"context_line":"                   \"destination: destination subnet (in CIDR notation) \""},{"line_number":189,"context_line":"                   \"gateway: nexthop IP address \""},{"line_number":190,"context_line":"                   \"(repeat option to add multiple routes)\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_cf2e8cf9","line":187,"range":{"start_line":187,"start_character":24,"end_line":187,"end_character":30},"updated":"2019-09-10 13:15:40.000000000","message":"-\u003e \"route\" (same as for L.226 below)","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"8445cde2488b19c1396ac2063c1608d141216661","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":185,"context_line":"            default\u003d[],"},{"line_number":186,"context_line":"            required_keys\u003d[\u0027destination\u0027, \u0027gateway\u0027],"},{"line_number":187,"context_line":"            help\u003d_(\"Add routes to the router \""},{"line_number":188,"context_line":"                   \"destination: destination subnet (in CIDR notation) \""},{"line_number":189,"context_line":"                   \"gateway: nexthop IP address \""},{"line_number":190,"context_line":"                   \"(repeat option to add multiple routes)\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_864b8457","line":187,"range":{"start_line":187,"start_character":24,"end_line":187,"end_character":30},"in_reply_to":"5faad753_cf2e8cf9","updated":"2019-09-11 12:33:11.000000000","message":"Done","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a923a3ac04525c26f5df7994476138ca802455ca","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":224,"context_line":"            default\u003d[],"},{"line_number":225,"context_line":"            required_keys\u003d[\u0027destination\u0027, \u0027gateway\u0027],"},{"line_number":226,"context_line":"            help\u003d_(\"Remove routes from the router \""},{"line_number":227,"context_line":"                   \"destination: destination subnet (in CIDR notation) \""},{"line_number":228,"context_line":"                   \"gateway: nexthop IP address \""},{"line_number":229,"context_line":"                   \"(repeat option to remove multiple routes)\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_0fd6e4f2","line":226,"range":{"start_line":226,"start_character":27,"end_line":226,"end_character":33},"updated":"2019-09-10 13:15:40.000000000","message":"This removes a single specified route only, so how about \"route\" instead?","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"8445cde2488b19c1396ac2063c1608d141216661","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":224,"context_line":"            default\u003d[],"},{"line_number":225,"context_line":"            required_keys\u003d[\u0027destination\u0027, \u0027gateway\u0027],"},{"line_number":226,"context_line":"            help\u003d_(\"Remove routes from the router \""},{"line_number":227,"context_line":"                   \"destination: destination subnet (in CIDR notation) \""},{"line_number":228,"context_line":"                   \"gateway: nexthop IP address \""},{"line_number":229,"context_line":"                   \"(repeat option to remove multiple routes)\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_4677cca1","line":226,"range":{"start_line":226,"start_character":27,"end_line":226,"end_character":33},"in_reply_to":"5faad753_0fd6e4f2","updated":"2019-09-11 12:33:11.000000000","message":"Done","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8146416cf0ee5dbeeac497a20c428965f3756627","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":224,"context_line":"            default\u003d[],"},{"line_number":225,"context_line":"            required_keys\u003d[\u0027destination\u0027, \u0027gateway\u0027],"},{"line_number":226,"context_line":"            help\u003d_(\"Remove routes from the router \""},{"line_number":227,"context_line":"                   \"destination: destination subnet (in CIDR notation) \""},{"line_number":228,"context_line":"                   \"gateway: nexthop IP address \""},{"line_number":229,"context_line":"                   \"(repeat option to remove multiple routes)\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_7b65d944","line":226,"range":{"start_line":226,"start_character":27,"end_line":226,"end_character":33},"in_reply_to":"5faad753_0fd6e4f2","updated":"2019-09-10 15:23:05.000000000","message":"The property name is routes on the API, isn\u0027t it good to have the same here? And the option can be repeated.\n\nThe devil\u0027s advocate from here: from the experience from this patch: https://review.opendev.org/650062, the cli can have other names than the API, so amotoki can be right here.","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"8445cde2488b19c1396ac2063c1608d141216661","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":224,"context_line":"            default\u003d[],"},{"line_number":225,"context_line":"            required_keys\u003d[\u0027destination\u0027, \u0027gateway\u0027],"},{"line_number":226,"context_line":"            help\u003d_(\"Remove routes from the router \""},{"line_number":227,"context_line":"                   \"destination: destination subnet (in CIDR notation) \""},{"line_number":228,"context_line":"                   \"gateway: nexthop IP address \""},{"line_number":229,"context_line":"                   \"(repeat option to remove multiple routes)\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_a617a0ed","line":226,"range":{"start_line":226,"start_character":27,"end_line":226,"end_character":33},"in_reply_to":"5faad753_7b65d944","updated":"2019-09-11 12:33:11.000000000","message":"Here we document the cli parameter, not the API, so I think we need to stick with the singular form. The plural form would conflict with the cli syntactical convention of repeating the parameter for multiple values.","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5e404a8e3a8cdddc707a32d7788e5572d6d0202f","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":224,"context_line":"            default\u003d[],"},{"line_number":225,"context_line":"            required_keys\u003d[\u0027destination\u0027, \u0027gateway\u0027],"},{"line_number":226,"context_line":"            help\u003d_(\"Remove routes from the router \""},{"line_number":227,"context_line":"                   \"destination: destination subnet (in CIDR notation) \""},{"line_number":228,"context_line":"                   \"gateway: nexthop IP address \""},{"line_number":229,"context_line":"                   \"(repeat option to remove multiple routes)\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"5faad753_46f10c6b","line":226,"range":{"start_line":226,"start_character":27,"end_line":226,"end_character":33},"in_reply_to":"5faad753_a617a0ed","updated":"2019-09-11 12:43:29.000000000","message":"Yeah, --route option corresponds to a single route, so the singular form looks reasonable to me.","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7867bd7d3701fb578b76d6dfda47772657f9d7ed","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class AddExtraRoutesToRouter(command.ShowOne):"},{"line_number":172,"context_line":"    _description \u003d _(\"Add static entries to a router\u0027s routing table.\")"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def get_parser(self, prog_name):"},{"line_number":175,"context_line":"        parser \u003d super(AddExtraRoutesToRouter, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_ef05f1c1","line":172,"range":{"start_line":172,"start_character":26,"end_line":172,"end_character":40},"updated":"2020-01-09 13:57:04.000000000","message":"you use \u0027static\u0027 here","commit_id":"e40e8cec2dd90f9aca530b406b2005dd13af19a2"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"ef64e0551d2119a7ed039193b018f81435142c3f","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class AddExtraRoutesToRouter(command.ShowOne):"},{"line_number":172,"context_line":"    _description \u003d _(\"Add static entries to a router\u0027s routing table.\")"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def get_parser(self, prog_name):"},{"line_number":175,"context_line":"        parser \u003d super(AddExtraRoutesToRouter, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_399d7309","line":172,"range":{"start_line":172,"start_character":26,"end_line":172,"end_character":40},"in_reply_to":"3fa7e38b_ef05f1c1","updated":"2020-01-13 09:56:42.000000000","message":"Done","commit_id":"e40e8cec2dd90f9aca530b406b2005dd13af19a2"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7867bd7d3701fb578b76d6dfda47772657f9d7ed","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        parser.add_argument("},{"line_number":177,"context_line":"            \u0027router\u0027,"},{"line_number":178,"context_line":"            metavar\u003d\u0027\u003crouter\u003e\u0027,"},{"line_number":179,"context_line":"            help\u003d_(\"Router to which extra routes will be added (name or ID).\")"},{"line_number":180,"context_line":"        )"},{"line_number":181,"context_line":"        parser.add_argument("},{"line_number":182,"context_line":"            \u0027--route\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_8f08fdd7","line":179,"range":{"start_line":179,"start_character":36,"end_line":179,"end_character":48},"updated":"2020-01-09 13:57:04.000000000","message":"and \u0027extra\u0027 here","commit_id":"e40e8cec2dd90f9aca530b406b2005dd13af19a2"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"ef64e0551d2119a7ed039193b018f81435142c3f","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        parser.add_argument("},{"line_number":177,"context_line":"            \u0027router\u0027,"},{"line_number":178,"context_line":"            metavar\u003d\u0027\u003crouter\u003e\u0027,"},{"line_number":179,"context_line":"            help\u003d_(\"Router to which extra routes will be added (name or ID).\")"},{"line_number":180,"context_line":"        )"},{"line_number":181,"context_line":"        parser.add_argument("},{"line_number":182,"context_line":"            \u0027--route\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_f97efbbe","line":179,"range":{"start_line":179,"start_character":36,"end_line":179,"end_character":48},"in_reply_to":"3fa7e38b_8f08fdd7","updated":"2020-01-13 09:56:42.000000000","message":"Done","commit_id":"e40e8cec2dd90f9aca530b406b2005dd13af19a2"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7867bd7d3701fb578b76d6dfda47772657f9d7ed","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":186,"context_line":"            default\u003d[],"},{"line_number":187,"context_line":"            required_keys\u003d[\u0027destination\u0027, \u0027gateway\u0027],"},{"line_number":188,"context_line":"            help\u003d_(\"Add route to the router. \""},{"line_number":189,"context_line":"                   \"destination: destination subnet (in CIDR notation), \""},{"line_number":190,"context_line":"                   \"gateway: nexthop IP address. \""},{"line_number":191,"context_line":"                   \"Repeat option to add multiple routes. \""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_af24d95f","line":188,"range":{"start_line":188,"start_character":24,"end_line":188,"end_character":29},"updated":"2020-01-09 13:57:04.000000000","message":"and just \u0027route\u0027 here\n\nI think the text should be as close to consistent as possible to avoid confusion.  Perhaps:\n\n\"Add extra routes to a router\"\n\n\"Router to which extra routes will be added (name or ID).\"\n\n\"Add extra routes to a router. \" ...\n\nSame comment applies to remove.","commit_id":"e40e8cec2dd90f9aca530b406b2005dd13af19a2"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"ef64e0551d2119a7ed039193b018f81435142c3f","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":186,"context_line":"            default\u003d[],"},{"line_number":187,"context_line":"            required_keys\u003d[\u0027destination\u0027, \u0027gateway\u0027],"},{"line_number":188,"context_line":"            help\u003d_(\"Add route to the router. \""},{"line_number":189,"context_line":"                   \"destination: destination subnet (in CIDR notation), \""},{"line_number":190,"context_line":"                   \"gateway: nexthop IP address. \""},{"line_number":191,"context_line":"                   \"Repeat option to add multiple routes. \""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_998b47c0","line":188,"range":{"start_line":188,"start_character":24,"end_line":188,"end_character":29},"in_reply_to":"3fa7e38b_952b2031","updated":"2020-01-13 09:56:42.000000000","message":"Done. Used \u0027extra static route\u0027, because in my understanding the \u0027extra\u0027 means the user can only manipulate the static routes which are not implicitly managed by the attached subnets of the router.","commit_id":"e40e8cec2dd90f9aca530b406b2005dd13af19a2"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"472fc99495b4f8ecebfa639090d192fde5eae86e","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":186,"context_line":"            default\u003d[],"},{"line_number":187,"context_line":"            required_keys\u003d[\u0027destination\u0027, \u0027gateway\u0027],"},{"line_number":188,"context_line":"            help\u003d_(\"Add route to the router. \""},{"line_number":189,"context_line":"                   \"destination: destination subnet (in CIDR notation), \""},{"line_number":190,"context_line":"                   \"gateway: nexthop IP address. \""},{"line_number":191,"context_line":"                   \"Repeat option to add multiple routes. \""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_952b2031","line":188,"range":{"start_line":188,"start_character":24,"end_line":188,"end_character":29},"in_reply_to":"3fa7e38b_af24d95f","updated":"2020-01-10 05:25:28.000000000","message":"Good catch. Totally agree.","commit_id":"e40e8cec2dd90f9aca530b406b2005dd13af19a2"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"43555cc47551edfce1b8d2afd08a6c2ebc54df25","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class AddExtraRoutesToRouter(command.ShowOne):"},{"line_number":172,"context_line":"    _description \u003d _(\"Add extra static entries to a router\u0027s routing table.\")"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def get_parser(self, prog_name):"},{"line_number":175,"context_line":"        parser \u003d super(AddExtraRoutesToRouter, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_3121f5fe","line":172,"range":{"start_line":172,"start_character":39,"end_line":172,"end_character":46},"updated":"2020-01-14 12:21:26.000000000","message":"IMHO \"extra static routes\" is easier to understand than \"extra static entries\". \"entries\" in a routing table works, but \"extra static routes\" is straight-forward.","commit_id":"d9c7739c255e6ee91c974e0a1b3ba120b8b5d07e"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"6d741d3dc4cb75d6a5ea4f8f644be82c55329a85","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class AddExtraRoutesToRouter(command.ShowOne):"},{"line_number":172,"context_line":"    _description \u003d _(\"Add extra static entries to a router\u0027s routing table.\")"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def get_parser(self, prog_name):"},{"line_number":175,"context_line":"        parser \u003d super(AddExtraRoutesToRouter, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_9413de59","line":172,"range":{"start_line":172,"start_character":39,"end_line":172,"end_character":46},"in_reply_to":"3fa7e38b_3121f5fe","updated":"2020-01-15 12:37:45.000000000","message":"Done","commit_id":"d9c7739c255e6ee91c974e0a1b3ba120b8b5d07e"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e2deb014c4530990069b453c2b20f3011beaccc2","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        )"},{"line_number":182,"context_line":"        parser.add_argument("},{"line_number":183,"context_line":"            \u0027--route\u0027,"},{"line_number":184,"context_line":"            metavar\u003d\u0027destination\u003d\u003csubnet\u003e,gateway\u003d\u003cip-address\u003e\u0027,"},{"line_number":185,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":186,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":187,"context_line":"            default\u003d[],"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_29f16802","line":184,"range":{"start_line":184,"start_character":42,"end_line":184,"end_character":49},"updated":"2020-03-30 10:31:16.000000000","message":"why \"gateway\" and not \"nexthop\"?","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f411586b98e7bc7ff36b7f8b9ab0f096a6109afc","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        )"},{"line_number":182,"context_line":"        parser.add_argument("},{"line_number":183,"context_line":"            \u0027--route\u0027,"},{"line_number":184,"context_line":"            metavar\u003d\u0027destination\u003d\u003csubnet\u003e,gateway\u003d\u003cip-address\u003e\u0027,"},{"line_number":185,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":186,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":187,"context_line":"            default\u003d[],"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_e9f1406d","line":184,"range":{"start_line":184,"start_character":42,"end_line":184,"end_character":49},"in_reply_to":"df33271e_29f16802","updated":"2020-03-30 10:57:13.000000000","message":"It is due to the consistency with the existing code in OSC. See SetRouter below. I don\u0027t know the reason why \u0027gateway\u0027 was chosen when implemented, but at least the consistency is better. If needed, we can deprecate and replace it once. (it is out of scope of the patch.)","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3e472ad9dbedb6742bdf46e57027cca1a61a9886","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        )"},{"line_number":182,"context_line":"        parser.add_argument("},{"line_number":183,"context_line":"            \u0027--route\u0027,"},{"line_number":184,"context_line":"            metavar\u003d\u0027destination\u003d\u003csubnet\u003e,gateway\u003d\u003cip-address\u003e\u0027,"},{"line_number":185,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":186,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":187,"context_line":"            default\u003d[],"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_e290364d","line":184,"range":{"start_line":184,"start_character":42,"end_line":184,"end_character":49},"in_reply_to":"df33271e_e9f1406d","updated":"2020-03-30 13:34:24.000000000","message":"ok, sounds good for me. I was just curious","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e2deb014c4530990069b453c2b20f3011beaccc2","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        )"},{"line_number":226,"context_line":"        parser.add_argument("},{"line_number":227,"context_line":"            \u0027--route\u0027,"},{"line_number":228,"context_line":"            metavar\u003d\u0027destination\u003d\u003csubnet\u003e,gateway\u003d\u003cip-address\u003e\u0027,"},{"line_number":229,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":230,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":231,"context_line":"            default\u003d[],"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_a9e4583d","line":228,"range":{"start_line":228,"start_character":42,"end_line":228,"end_character":49},"updated":"2020-03-30 10:31:16.000000000","message":"same question here","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3e472ad9dbedb6742bdf46e57027cca1a61a9886","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        )"},{"line_number":226,"context_line":"        parser.add_argument("},{"line_number":227,"context_line":"            \u0027--route\u0027,"},{"line_number":228,"context_line":"            metavar\u003d\u0027destination\u003d\u003csubnet\u003e,gateway\u003d\u003cip-address\u003e\u0027,"},{"line_number":229,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":230,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":231,"context_line":"            default\u003d[],"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_2287be11","line":228,"range":{"start_line":228,"start_character":42,"end_line":228,"end_character":49},"in_reply_to":"df33271e_84297b9c","updated":"2020-03-30 13:34:24.000000000","message":"thx :)","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b3550095f77f3a5b74a29f5cf7bb8241e69e3999","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        )"},{"line_number":226,"context_line":"        parser.add_argument("},{"line_number":227,"context_line":"            \u0027--route\u0027,"},{"line_number":228,"context_line":"            metavar\u003d\u0027destination\u003d\u003csubnet\u003e,gateway\u003d\u003cip-address\u003e\u0027,"},{"line_number":229,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":230,"context_line":"            dest\u003d\u0027routes\u0027,"},{"line_number":231,"context_line":"            default\u003d[],"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_84297b9c","line":228,"range":{"start_line":228,"start_character":42,"end_line":228,"end_character":49},"in_reply_to":"df33271e_a9e4583d","updated":"2020-03-30 11:48:27.000000000","message":"As Akihiro said above.","commit_id":"5c7648da99cd4af9c4406758af10bba14860b5e1"}],"releasenotes/notes/router-extraroute-atomic-d6d406ffb15695f2.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c15bca1a95afe658afffb4d1b768aa5487a9d432","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add new commands ``router add route`` and ``router remove route`` to"},{"line_number":5,"context_line":"    support new Neutron extension: ``extraroute-atomic`` (see `Neutron RFE"},{"line_number":6,"context_line":"    \u003chttps://bugs.launchpad.net/neutron/+bug/1826396\u003e`_)."},{"line_number":7,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3fa7e38b_4b28c496","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":7},"updated":"2020-01-08 21:26:09.000000000","message":"Trivial nit, but I\u0027ve always taken the stance that since release notes are read after a release has been done to see what is included, the text should be in past tense. So I think \"Added\" would be more appropriate, but that\u0027s just me, and really not that important.","commit_id":"41b225253279931e64a395d780d4b673b78faedc"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"33f246103e1a02dd49e6fdfaa324639aec45036a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add new commands ``router add route`` and ``router remove route`` to"},{"line_number":5,"context_line":"    support new Neutron extension: ``extraroute-atomic`` (see `Neutron RFE"},{"line_number":6,"context_line":"    \u003chttps://bugs.launchpad.net/neutron/+bug/1826396\u003e`_)."},{"line_number":7,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3fa7e38b_831bfc6c","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":7},"in_reply_to":"3fa7e38b_1ac8d01e","updated":"2020-01-09 09:35:53.000000000","message":"I\u0027m okay with both, just tell me which one to use.","commit_id":"41b225253279931e64a395d780d4b673b78faedc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"da45be111fc47c49c740e9152844b830f3af1e8e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add new commands ``router add route`` and ``router remove route`` to"},{"line_number":5,"context_line":"    support new Neutron extension: ``extraroute-atomic`` (see `Neutron RFE"},{"line_number":6,"context_line":"    \u003chttps://bugs.launchpad.net/neutron/+bug/1826396\u003e`_)."},{"line_number":7,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3fa7e38b_1ac8d01e","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":7},"in_reply_to":"3fa7e38b_4b28c496","updated":"2020-01-09 07:34:27.000000000","message":"I agree with Sean in general, but looking at the current release note [1] we use a present tense (\"Add\", \"Fix\"...) consistently, so the current version looks good.\n\n[1] https://docs.openstack.org/releasenotes/python-openstackclient/unreleased.html","commit_id":"41b225253279931e64a395d780d4b673b78faedc"}],"setup.cfg":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a923a3ac04525c26f5df7994476138ca802455ca","unresolved":false,"context_lines":[{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    router_add_port \u003d openstackclient.network.v2.router:AddPortToRouter"},{"line_number":473,"context_line":"    router_add_subnet \u003d openstackclient.network.v2.router:AddSubnetToRouter"},{"line_number":474,"context_line":"    router_add_route \u003d openstackclient.network.v2.router:AddExtraRoutesToRouter"},{"line_number":475,"context_line":"    router_create \u003d openstackclient.network.v2.router:CreateRouter"},{"line_number":476,"context_line":"    router_delete \u003d openstackclient.network.v2.router:DeleteRouter"},{"line_number":477,"context_line":"    router_list \u003d openstackclient.network.v2.router:ListRouter"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"5faad753_6f0e788e","line":474,"updated":"2019-09-10 13:15:40.000000000","message":"Needs to be placed beforee router_add_subnet? This list is sorted alphabetically.","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"8445cde2488b19c1396ac2063c1608d141216661","unresolved":false,"context_lines":[{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    router_add_port \u003d openstackclient.network.v2.router:AddPortToRouter"},{"line_number":473,"context_line":"    router_add_subnet \u003d openstackclient.network.v2.router:AddSubnetToRouter"},{"line_number":474,"context_line":"    router_add_route \u003d openstackclient.network.v2.router:AddExtraRoutesToRouter"},{"line_number":475,"context_line":"    router_create \u003d openstackclient.network.v2.router:CreateRouter"},{"line_number":476,"context_line":"    router_delete \u003d openstackclient.network.v2.router:DeleteRouter"},{"line_number":477,"context_line":"    router_list \u003d openstackclient.network.v2.router:ListRouter"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"5faad753_a6b48036","line":474,"in_reply_to":"5faad753_6f0e788e","updated":"2019-09-11 12:33:11.000000000","message":"Done","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a923a3ac04525c26f5df7994476138ca802455ca","unresolved":false,"context_lines":[{"line_number":477,"context_line":"    router_list \u003d openstackclient.network.v2.router:ListRouter"},{"line_number":478,"context_line":"    router_remove_port \u003d openstackclient.network.v2.router:RemovePortFromRouter"},{"line_number":479,"context_line":"    router_remove_subnet \u003d openstackclient.network.v2.router:RemoveSubnetFromRouter"},{"line_number":480,"context_line":"    router_remove_route \u003d openstackclient.network.v2.router:RemoveExtraRoutesFromRouter"},{"line_number":481,"context_line":"    router_set \u003d openstackclient.network.v2.router:SetRouter"},{"line_number":482,"context_line":"    router_show \u003d openstackclient.network.v2.router:ShowRouter"},{"line_number":483,"context_line":"    router_unset \u003d openstackclient.network.v2.router:UnsetRouter"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"5faad753_8f1174af","line":480,"updated":"2019-09-10 13:15:40.000000000","message":"ditto","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"8445cde2488b19c1396ac2063c1608d141216661","unresolved":false,"context_lines":[{"line_number":477,"context_line":"    router_list \u003d openstackclient.network.v2.router:ListRouter"},{"line_number":478,"context_line":"    router_remove_port \u003d openstackclient.network.v2.router:RemovePortFromRouter"},{"line_number":479,"context_line":"    router_remove_subnet \u003d openstackclient.network.v2.router:RemoveSubnetFromRouter"},{"line_number":480,"context_line":"    router_remove_route \u003d openstackclient.network.v2.router:RemoveExtraRoutesFromRouter"},{"line_number":481,"context_line":"    router_set \u003d openstackclient.network.v2.router:SetRouter"},{"line_number":482,"context_line":"    router_show \u003d openstackclient.network.v2.router:ShowRouter"},{"line_number":483,"context_line":"    router_unset \u003d openstackclient.network.v2.router:UnsetRouter"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"5faad753_46858c59","line":480,"in_reply_to":"5faad753_8f1174af","updated":"2019-09-11 12:33:11.000000000","message":"Done","commit_id":"a35a2698a3da90976bc706b23d6ca556a25cbf0e"}]}
