)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"876588254157deeea44044fd2bde5d131578b27d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This feature will change Cinder to transfer"},{"line_number":10,"context_line":"snapshots with volumes at the same time by default."},{"line_number":11,"context_line":"If user don\u0027t want transfer snapshots, they could use"},{"line_number":12,"context_line":"optional argument \u0027--no-snapshots\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: If848d131e5edcdb77d0b3c2ca45a99c4d5e14d1e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5f93b717_c055601f","line":11,"range":{"start_line":11,"start_character":8,"end_line":11,"end_character":13},"updated":"2018-01-24 16:46:53.000000000","message":"doesn\u0027t","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6952415f7f2397459c1e26ba232ff82a4467aad0","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This feature will change Cinder to transfer"},{"line_number":10,"context_line":"snapshots with volumes at the same time by default."},{"line_number":11,"context_line":"If user don\u0027t want transfer snapshots, they could use"},{"line_number":12,"context_line":"optional argument \u0027--no-snapshots\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: If848d131e5edcdb77d0b3c2ca45a99c4d5e14d1e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5f93b717_4b6643f0","line":11,"range":{"start_line":11,"start_character":8,"end_line":11,"end_character":13},"in_reply_to":"5f93b717_c055601f","updated":"2018-01-25 04:42:54.000000000","message":"Done","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"79fd087f9193a611242bf3a78306e1a98abea676","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This feature will change Cinder to transfer"},{"line_number":10,"context_line":"snapshots with volumes at the same time by default."},{"line_number":11,"context_line":"If user doesn\u0027t want transfer snapshots, they could use"},{"line_number":12,"context_line":"optional argument \u0027--no-snapshots\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: If848d131e5edcdb77d0b3c2ca45a99c4d5e14d1e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"5f93b717_de7aef22","line":11,"range":{"start_line":11,"start_character":16,"end_line":11,"end_character":21},"updated":"2018-01-26 03:09:06.000000000","message":"-\u003e \"want to\"","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"7097925feb946fddcfad54aee4f585b334faedb1","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This feature will change Cinder to transfer"},{"line_number":10,"context_line":"snapshots with volumes at the same time by default."},{"line_number":11,"context_line":"If user doesn\u0027t want transfer snapshots, they could use"},{"line_number":12,"context_line":"optional argument \u0027--no-snapshots\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: If848d131e5edcdb77d0b3c2ca45a99c4d5e14d1e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"5f93b717_6e63e4dd","line":11,"range":{"start_line":11,"start_character":16,"end_line":11,"end_character":21},"in_reply_to":"5f93b717_de7aef22","updated":"2018-01-26 06:56:51.000000000","message":"Done","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"79fd087f9193a611242bf3a78306e1a98abea676","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This feature will change Cinder to transfer"},{"line_number":10,"context_line":"snapshots with volumes at the same time by default."},{"line_number":11,"context_line":"If user doesn\u0027t want transfer snapshots, they could use"},{"line_number":12,"context_line":"optional argument \u0027--no-snapshots\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: If848d131e5edcdb77d0b3c2ca45a99c4d5e14d1e"},{"line_number":15,"context_line":"Implements: blueprint transfer-snps-with-vols"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"5f93b717_9e746737","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":17},"updated":"2018-01-26 03:09:06.000000000","message":"\"an new optional argument\"","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"7097925feb946fddcfad54aee4f585b334faedb1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This feature will change Cinder to transfer"},{"line_number":10,"context_line":"snapshots with volumes at the same time by default."},{"line_number":11,"context_line":"If user doesn\u0027t want transfer snapshots, they could use"},{"line_number":12,"context_line":"optional argument \u0027--no-snapshots\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: If848d131e5edcdb77d0b3c2ca45a99c4d5e14d1e"},{"line_number":15,"context_line":"Implements: blueprint transfer-snps-with-vols"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"5f93b717_2e9b9cc9","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":17},"in_reply_to":"5f93b717_697e83e5","updated":"2018-01-26 06:56:51.000000000","message":"Done","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"37c102a5f312a1770c08d370eab6131ab32884b7","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This feature will change Cinder to transfer"},{"line_number":10,"context_line":"snapshots with volumes at the same time by default."},{"line_number":11,"context_line":"If user doesn\u0027t want transfer snapshots, they could use"},{"line_number":12,"context_line":"optional argument \u0027--no-snapshots\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: If848d131e5edcdb77d0b3c2ca45a99c4d5e14d1e"},{"line_number":15,"context_line":"Implements: blueprint transfer-snps-with-vols"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"5f93b717_697e83e5","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":17},"in_reply_to":"5f93b717_9e746737","updated":"2018-01-26 03:10:30.000000000","message":"sorry, \"a new optional argument\".","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f27020128ef5ca838d86edc5b9add6aa12b55223","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This feature will change Cinder to transfer"},{"line_number":10,"context_line":"snapshots with volumes at the same time by default."},{"line_number":11,"context_line":"If user doesn\u0027t want to transfer snapshots, they could use"},{"line_number":12,"context_line":"a new optional argument \u0027--no-snapshots True\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: If848d131e5edcdb77d0b3c2ca45a99c4d5e14d1e"},{"line_number":15,"context_line":"Implements: blueprint transfer-snps-with-vols"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"df7087c5_28b91c2d","line":12,"range":{"start_line":12,"start_character":24,"end_line":12,"end_character":45},"updated":"2018-03-12 20:39:07.000000000","message":"--no-snapshots should work by itself rather than requiring a \"True\" to be supplied with it.","commit_id":"7e30f500ccd085f8be4799d1ddabac5797ea4949"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"35356f5fbb045158cd5985edba402755b7786cb3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This feature will change Cinder to transfer"},{"line_number":10,"context_line":"snapshots with volumes at the same time by default."},{"line_number":11,"context_line":"If user doesn\u0027t want to transfer snapshots, they could use"},{"line_number":12,"context_line":"a new optional argument \u0027--no-snapshots True\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: If848d131e5edcdb77d0b3c2ca45a99c4d5e14d1e"},{"line_number":15,"context_line":"Implements: blueprint transfer-snps-with-vols"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"df7087c5_09408c06","line":12,"range":{"start_line":12,"start_character":24,"end_line":12,"end_character":45},"in_reply_to":"df7087c5_28b91c2d","updated":"2018-03-15 08:21:35.000000000","message":"Yes, you\u0027re right.","commit_id":"7e30f500ccd085f8be4799d1ddabac5797ea4949"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5c56d76a4427603f26fa774f8c9e86666e234f57","unresolved":false,"context_lines":[{"line_number":12,"context_line":"a new optional argument \u0027--no-snapshots\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: If848d131e5edcdb77d0b3c2ca45a99c4d5e14d1e"},{"line_number":15,"context_line":"Implements: blueprint transfer-snps-with-vols"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"bf659307_efad539b","line":15,"range":{"start_line":15,"start_character":22,"end_line":15,"end_character":45},"updated":"2018-03-29 14:29:07.000000000","message":"This isn\u0027t a valid blueprint.","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"608140d2868fdb6a62b0837500142bc983501afe","unresolved":false,"context_lines":[{"line_number":12,"context_line":"a new optional argument \u0027--no-snapshots\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: If848d131e5edcdb77d0b3c2ca45a99c4d5e14d1e"},{"line_number":15,"context_line":"Implements: blueprint transfer-snps-with-vols"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"bf659307_d8d4c9eb","line":15,"range":{"start_line":15,"start_character":22,"end_line":15,"end_character":45},"in_reply_to":"bf659307_efad539b","updated":"2018-03-30 02:30:16.000000000","message":"There is the bp link: https://blueprints.launchpad.net/openstack/cinder/+spec/transfer-snps-with-vols.  It\u0027s existing, but no idea why can\u0027t link to the bp here.","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a4c2e267a645a725f7eee912b16ae37bbc52414","unresolved":false,"context_lines":[{"line_number":12,"context_line":"a new optional argument \u0027--no-snapshots\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: If848d131e5edcdb77d0b3c2ca45a99c4d5e14d1e"},{"line_number":15,"context_line":"Implements: blueprint transfer-snps-with-vols"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"bf659307_03b7b4da","line":15,"updated":"2018-04-06 02:29:06.000000000","message":"Is this right? It does not get me to this blueprint and I can\u0027t find it searching.","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d352be926b3823dfa1d4a693cf28753eb62b4af1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"a new optional argument \u0027--no-snapshots\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: If848d131e5edcdb77d0b3c2ca45a99c4d5e14d1e"},{"line_number":15,"context_line":"Implements: blueprint transfer-snps-with-vols"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"bf659307_06b3264f","line":15,"in_reply_to":"bf659307_03b7b4da","updated":"2018-04-08 09:02:33.000000000","message":"There is the bp link: https://blueprints.launchpad.net/openstack/cinder/+spec/transfer-snps-with-vols. Jay also asked this question before, this bp\u0027s existing, but really no idea why can\u0027t link to the bp here.","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"578db293a6b9f50c03b0194d8c202958ee86582f","unresolved":false,"context_lines":[{"line_number":14,"context_line":"to move this API out of contrib into Cinder V3 API."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: If848d131e5edcdb77d0b3c2ca45a99c4d5e14d1e"},{"line_number":17,"context_line":"Implements: blueprint transfer-snps-with-vols"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"bf659307_da1384b7","line":17,"range":{"start_line":17,"start_character":22,"end_line":17,"end_character":45},"updated":"2018-04-10 21:37:06.000000000","message":"This BluePrint needs to be created or the line should be removed.","commit_id":"56cf795fc62df2d97b984894714271c602cd9e57"}],"api-ref/source/v3/os-vol-transfer-v3.inc":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"6c7016ff840b6892a01bd73a6f5b360dc01026d5","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Accept a volume transfer"},{"line_number":10,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":".. rest_method::  POST /v3/{project_id}/volume_transfers/{transfer_id}/accept"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Accepts a volume transfer."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":45,"id":"5f7c97a3_cda9b624","line":12,"range":{"start_line":12,"start_character":17,"end_line":12,"end_character":77},"updated":"2018-06-07 08:48:16.000000000","message":"I guess you will have both os-volume-transfer and volume_transfers APIs?","commit_id":"7e7bcf9c5665b4de209511f8d099b38fb88d1c5c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"61ea5ed087716604ce0609bc4fbef677f3d1339d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Accept a volume transfer"},{"line_number":10,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":".. rest_method::  POST /v3/{project_id}/volume_transfers/{transfer_id}/accept"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Accepts a volume transfer."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":45,"id":"5f7c97a3_88608c0f","line":12,"range":{"start_line":12,"start_character":17,"end_line":12,"end_character":77},"in_reply_to":"5f7c97a3_6b76570f","updated":"2018-06-19 15:38:34.000000000","message":"I think we need to keep the old one in the API ref. This new API needs to be denoted with the API microversion where it becomes available, with the old contrib API kept for those using a version prior to the change.","commit_id":"7e7bcf9c5665b4de209511f8d099b38fb88d1c5c"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"54330bdb7946243bfd21ef857a681186622ac4f9","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Accept a volume transfer"},{"line_number":10,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":".. rest_method::  POST /v3/{project_id}/volume_transfers/{transfer_id}/accept"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Accepts a volume transfer."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":45,"id":"5f7c97a3_6b76570f","line":12,"range":{"start_line":12,"start_character":17,"end_line":12,"end_character":77},"in_reply_to":"5f7c97a3_cda9b624","updated":"2018-06-19 08:12:53.000000000","message":"yes, but I want to let users to use the new APIs from Rocky release.  so I removed the old ones.","commit_id":"7e7bcf9c5665b4de209511f8d099b38fb88d1c5c"}],"api-ref/source/v3/parameters.yaml":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cc1038d6d4591258e30f9014b91db9399c5c5eec","unresolved":false,"context_lines":[{"line_number":1918,"context_line":"no_snapshots:"},{"line_number":1919,"context_line":"  description: |"},{"line_number":1920,"context_line":"    Transfer volume without snapshots. This argument is only available in"},{"line_number":1921,"context_line":"    new V3 transfer API with microversion 3.53."},{"line_number":1922,"context_line":"  in: body"},{"line_number":1923,"context_line":"  required: false"},{"line_number":1924,"context_line":"  type: boolean"}],"source_content_type":"text/x-yaml","patch_set":51,"id":"5f7c97a3_f78aeeba","line":1921,"updated":"2018-07-18 13:42:37.000000000","message":"This will need to change.  We have already merged a 3.53.","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"}],"api-ref/source/v3/vol-transfer-v3.inc":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"01740a3fb660d6e77c76c9ca62d6434268304ef7","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":".. rest_status_code:: success ../status.yaml"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"   - 202"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Request"}],"source_content_type":"text/x-c++src","patch_set":51,"id":"5f7c97a3_1816f759","line":70,"updated":"2018-07-16 14:17:18.000000000","message":"Also 400?","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"13cc309e7c1ba11b443065786ac2f97467094f66","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":".. rest_status_code:: success ../status.yaml"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"   - 202"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Request"}],"source_content_type":"text/x-c++src","patch_set":51,"id":"5f7c97a3_6d2a7d78","line":70,"in_reply_to":"5f7c97a3_1816f759","updated":"2018-07-19 01:43:12.000000000","message":"yeah","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"}],"cinder/api/contrib/volume_transfer.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"876588254157deeea44044fd2bde5d131578b27d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                                        remove_whitespaces\u003dTrue)"},{"line_number":97,"context_line":"            name \u003d name.strip()"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        no_snapshots \u003d strutils.bool_from_string(transfer.get("},{"line_number":100,"context_line":"            \u0027no_snapshots\u0027, False))"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        LOG.info(\"Creating transfer of volume %s\","},{"line_number":103,"context_line":"                 volume_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_203a04e7","line":100,"range":{"start_line":99,"start_character":8,"end_line":100,"end_character":35},"updated":"2018-01-24 16:46:53.000000000","message":"Need microversion here","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6952415f7f2397459c1e26ba232ff82a4467aad0","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                                        remove_whitespaces\u003dTrue)"},{"line_number":97,"context_line":"            name \u003d name.strip()"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        no_snapshots \u003d strutils.bool_from_string(transfer.get("},{"line_number":100,"context_line":"            \u0027no_snapshots\u0027, False))"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        LOG.info(\"Creating transfer of volume %s\","},{"line_number":103,"context_line":"                 volume_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_eb62afd8","line":100,"range":{"start_line":99,"start_character":8,"end_line":100,"end_character":35},"in_reply_to":"5f93b717_203a04e7","updated":"2018-01-25 04:42:54.000000000","message":"okay","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"876588254157deeea44044fd2bde5d131578b27d","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        try:"},{"line_number":106,"context_line":"            new_transfer \u003d self.transfer_api.create(context, volume_id, name,"},{"line_number":107,"context_line":"                                                    no_snapshots)"},{"line_number":108,"context_line":"        # Not found exception will be handled at the wsgi level"},{"line_number":109,"context_line":"        except exception.InvalidVolume as error:"},{"line_number":110,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_e00c1c44","line":107,"range":{"start_line":107,"start_character":52,"end_line":107,"end_character":64},"updated":"2018-01-24 16:46:53.000000000","message":"no_snapshots\u003dno_snapshots","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6952415f7f2397459c1e26ba232ff82a4467aad0","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        try:"},{"line_number":106,"context_line":"            new_transfer \u003d self.transfer_api.create(context, volume_id, name,"},{"line_number":107,"context_line":"                                                    no_snapshots)"},{"line_number":108,"context_line":"        # Not found exception will be handled at the wsgi level"},{"line_number":109,"context_line":"        except exception.InvalidVolume as error:"},{"line_number":110,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_ab9a67c2","line":107,"range":{"start_line":107,"start_character":52,"end_line":107,"end_character":64},"in_reply_to":"5f93b717_e00c1c44","updated":"2018-01-25 04:42:54.000000000","message":"Done","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"}],"cinder/api/microversions.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cc1038d6d4591258e30f9014b91db9399c5c5eec","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"SUPPORT_VOLUME_TYPE_FILTER \u003d \u00273.52\u0027"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"TRANSFER_WITH_SNAPSHOTS \u003d \u00273.53\u0027"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"def get_mv_header(version):"}],"source_content_type":"text/x-python","patch_set":51,"id":"5f7c97a3_377386ea","line":146,"updated":"2018-07-18 13:42:37.000000000","message":"As noted earlier this will need to change.","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"}],"cinder/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a4c2e267a645a725f7eee912b16ae37bbc52414","unresolved":false,"context_lines":[{"line_number":407,"context_line":""},{"line_number":408,"context_line":"3.52"},{"line_number":409,"context_line":"----"},{"line_number":410,"context_line":"  Support transfer volume with snapshots."}],"source_content_type":"text/x-rst","patch_set":26,"id":"bf659307_83c42494","line":410,"range":{"start_line":410,"start_character":0,"end_line":410,"end_character":2},"updated":"2018-04-06 02:29:06.000000000","message":"Leading space needs to be removed.","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d352be926b3823dfa1d4a693cf28753eb62b4af1","unresolved":false,"context_lines":[{"line_number":407,"context_line":""},{"line_number":408,"context_line":"3.52"},{"line_number":409,"context_line":"----"},{"line_number":410,"context_line":"  Support transfer volume with snapshots."}],"source_content_type":"text/x-rst","patch_set":26,"id":"bf659307_667d426d","line":410,"range":{"start_line":410,"start_character":0,"end_line":410,"end_character":2},"in_reply_to":"bf659307_83c42494","updated":"2018-04-08 09:02:33.000000000","message":"Done","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"}],"cinder/api/schemas/volume_transfer.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"6c7016ff840b6892a01bd73a6f5b360dc01026d5","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                                    \u0027format\u0027:"},{"line_number":32,"context_line":"                                        \"name_skip_leading_trailing_spaces\"},"},{"line_number":33,"context_line":"                                   {\u0027type\u0027: \u0027null\u0027}]},"},{"line_number":34,"context_line":"                \u0027no_snapshots\u0027: parameter_types.boolean"},{"line_number":35,"context_line":"            },"},{"line_number":36,"context_line":"            \u0027required\u0027: [\u0027volume_id\u0027],"},{"line_number":37,"context_line":"            \u0027additionalProperties\u0027: False,"}],"source_content_type":"text/x-python","patch_set":45,"id":"5f7c97a3_4d5a8683","line":34,"range":{"start_line":34,"start_character":15,"end_line":34,"end_character":55},"updated":"2018-06-07 08:48:16.000000000","message":"Please copy the create schema and create a new one for API 3.53","commit_id":"7e7bcf9c5665b4de209511f8d099b38fb88d1c5c"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"54330bdb7946243bfd21ef857a681186622ac4f9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                                    \u0027format\u0027:"},{"line_number":32,"context_line":"                                        \"name_skip_leading_trailing_spaces\"},"},{"line_number":33,"context_line":"                                   {\u0027type\u0027: \u0027null\u0027}]},"},{"line_number":34,"context_line":"                \u0027no_snapshots\u0027: parameter_types.boolean"},{"line_number":35,"context_line":"            },"},{"line_number":36,"context_line":"            \u0027required\u0027: [\u0027volume_id\u0027],"},{"line_number":37,"context_line":"            \u0027additionalProperties\u0027: False,"}],"source_content_type":"text/x-python","patch_set":45,"id":"5f7c97a3_2b805fbf","line":34,"range":{"start_line":34,"start_character":15,"end_line":34,"end_character":55},"in_reply_to":"5f7c97a3_4d5a8683","updated":"2018-06-19 08:12:53.000000000","message":"Done","commit_id":"7e7bcf9c5665b4de209511f8d099b38fb88d1c5c"}],"cinder/api/v3/router.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"6c7016ff840b6892a01bd73a6f5b360dc01026d5","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        mapper.resource(\u0027resource_filter\u0027, \u0027resource_filters\u0027,"},{"line_number":195,"context_line":"                        controller\u003dself.resources[\u0027resource_filters\u0027])"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        self.resources[\u0027volume_transfers\u0027] \u003d ("},{"line_number":198,"context_line":"            volume_transfer.create_resource())"},{"line_number":199,"context_line":"        mapper.resource(\"volume_transfer\", \"volume_transfers\","},{"line_number":200,"context_line":"                        controller\u003dself.resources[\u0027volume_transfers\u0027],"},{"line_number":201,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":202,"context_line":"                        member\u003d{\u0027accept\u0027: \u0027POST\u0027})"}],"source_content_type":"text/x-python","patch_set":45,"id":"5f7c97a3_6dd2e2d3","line":202,"range":{"start_line":197,"start_character":7,"end_line":202,"end_character":50},"updated":"2018-06-07 08:48:16.000000000","message":"Now we have two transfer APIs:\n/project/os-volume-transfer/xxxx AND\n/project/volume-transfer/xxxx\n\nI guess it\u0027s not mentioned in your spec.","commit_id":"7e7bcf9c5665b4de209511f8d099b38fb88d1c5c"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"54330bdb7946243bfd21ef857a681186622ac4f9","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        mapper.resource(\u0027resource_filter\u0027, \u0027resource_filters\u0027,"},{"line_number":195,"context_line":"                        controller\u003dself.resources[\u0027resource_filters\u0027])"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        self.resources[\u0027volume_transfers\u0027] \u003d ("},{"line_number":198,"context_line":"            volume_transfer.create_resource())"},{"line_number":199,"context_line":"        mapper.resource(\"volume_transfer\", \"volume_transfers\","},{"line_number":200,"context_line":"                        controller\u003dself.resources[\u0027volume_transfers\u0027],"},{"line_number":201,"context_line":"                        collection\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":202,"context_line":"                        member\u003d{\u0027accept\u0027: \u0027POST\u0027})"}],"source_content_type":"text/x-python","patch_set":45,"id":"5f7c97a3_2b6a9fec","line":202,"range":{"start_line":197,"start_character":7,"end_line":202,"end_character":50},"in_reply_to":"5f7c97a3_6dd2e2d3","updated":"2018-06-19 08:12:53.000000000","message":"yes, the spec also need update for this,  this change is from Sean\u0027s suggestion when reviewing this patch.","commit_id":"7e7bcf9c5665b4de209511f8d099b38fb88d1c5c"}],"cinder/api/v3/volume_transfer.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"6c7016ff840b6892a01bd73a6f5b360dc01026d5","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            name \u003d name.strip()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        no_snapshots \u003d False"},{"line_number":50,"context_line":"        if req_version.matches(mv.TRANSFER_WITH_SNAPSHOTS):"},{"line_number":51,"context_line":"            no_snapshots \u003d strutils.bool_from_string(transfer.get("},{"line_number":52,"context_line":"                \u0027no_snapshots\u0027, False))"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"5f7c97a3_6823b0a8","line":50,"range":{"start_line":50,"start_character":7,"end_line":50,"end_character":59},"updated":"2018-06-07 08:48:16.000000000","message":"You will not need this statement if you create different json schema for v3.0-v3.52 and v3.52 APIs","commit_id":"7e7bcf9c5665b4de209511f8d099b38fb88d1c5c"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"54330bdb7946243bfd21ef857a681186622ac4f9","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            name \u003d name.strip()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        no_snapshots \u003d False"},{"line_number":50,"context_line":"        if req_version.matches(mv.TRANSFER_WITH_SNAPSHOTS):"},{"line_number":51,"context_line":"            no_snapshots \u003d strutils.bool_from_string(transfer.get("},{"line_number":52,"context_line":"                \u0027no_snapshots\u0027, False))"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"5f7c97a3_6b49778c","line":50,"range":{"start_line":50,"start_character":7,"end_line":50,"end_character":59},"in_reply_to":"5f7c97a3_6823b0a8","updated":"2018-06-19 08:12:53.000000000","message":"Done","commit_id":"7e7bcf9c5665b4de209511f8d099b38fb88d1c5c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"02a3acc45c55f50392663c4f5bcc11bd77d3e5a9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2011 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":48,"id":"5f7c97a3_3e487b5a","line":1,"updated":"2018-06-20 13:03:42.000000000","message":"This copyright line needs to be removed. OpenStack Foundation headers should only be used by Foundation employees.","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3da76dd3609e9f724d1d49504dc93268866deeed","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2011 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":48,"id":"5f7c97a3_3df7e5d6","line":1,"in_reply_to":"5f7c97a3_3e487b5a","updated":"2018-06-23 03:33:19.000000000","message":"Sure, thanks.","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"a7e17a35b00aaf68d04cec6c0a083d1407b5a825","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                                                    no_snapshots\u003dno_snapshots)"},{"line_number":56,"context_line":"        # Not found exception will be handled at the wsgi level"},{"line_number":57,"context_line":"        except exception.InvalidVolume as error:"},{"line_number":58,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        transfer \u003d self._view_builder.create(req,"},{"line_number":61,"context_line":"                                             dict(new_transfer))"}],"source_content_type":"text/x-python","patch_set":51,"id":"5f7c97a3_d8363f03","line":58,"updated":"2018-07-16 14:16:26.000000000","message":"Will the InvalidSnapshot exception land here as well?","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"13cc309e7c1ba11b443065786ac2f97467094f66","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                                                    no_snapshots\u003dno_snapshots)"},{"line_number":56,"context_line":"        # Not found exception will be handled at the wsgi level"},{"line_number":57,"context_line":"        except exception.InvalidVolume as error:"},{"line_number":58,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        transfer \u003d self._view_builder.create(req,"},{"line_number":61,"context_line":"                                             dict(new_transfer))"}],"source_content_type":"text/x-python","patch_set":51,"id":"5f7c97a3_0d2989f0","line":58,"in_reply_to":"5f7c97a3_d8363f03","updated":"2018-07-19 01:43:12.000000000","message":"Yes, should be here. Sean has updated this to Invalid exception.","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"}],"cinder/api/views/transfers.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"876588254157deeea44044fd2bde5d131578b27d","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                \u0027created_at\u0027: transfer.get(\u0027created_at\u0027),"},{"line_number":56,"context_line":"                \u0027name\u0027: transfer.get(\u0027display_name\u0027),"},{"line_number":57,"context_line":"                \u0027volume_id\u0027: transfer.get(\u0027volume_id\u0027),"},{"line_number":58,"context_line":"                \u0027no_snapshots\u0027: transfer.get(\u0027no_snapshots\u0027),"},{"line_number":59,"context_line":"                \u0027links\u0027: self._get_links(request, transfer[\u0027id\u0027])"},{"line_number":60,"context_line":"            }"},{"line_number":61,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_63fed606","line":58,"range":{"start_line":58,"start_character":16,"end_line":58,"end_character":61},"updated":"2018-01-24 16:46:53.000000000","message":"Need microversion here","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6952415f7f2397459c1e26ba232ff82a4467aad0","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                \u0027created_at\u0027: transfer.get(\u0027created_at\u0027),"},{"line_number":56,"context_line":"                \u0027name\u0027: transfer.get(\u0027display_name\u0027),"},{"line_number":57,"context_line":"                \u0027volume_id\u0027: transfer.get(\u0027volume_id\u0027),"},{"line_number":58,"context_line":"                \u0027no_snapshots\u0027: transfer.get(\u0027no_snapshots\u0027),"},{"line_number":59,"context_line":"                \u0027links\u0027: self._get_links(request, transfer[\u0027id\u0027])"},{"line_number":60,"context_line":"            }"},{"line_number":61,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_b1ef3a86","line":58,"range":{"start_line":58,"start_character":16,"end_line":58,"end_character":61},"in_reply_to":"5f93b717_63fed606","updated":"2018-01-25 04:42:54.000000000","message":"Done","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"876588254157deeea44044fd2bde5d131578b27d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                \u0027name\u0027: transfer.get(\u0027display_name\u0027),"},{"line_number":70,"context_line":"                \u0027volume_id\u0027: transfer.get(\u0027volume_id\u0027),"},{"line_number":71,"context_line":"                \u0027auth_key\u0027: transfer.get(\u0027auth_key\u0027),"},{"line_number":72,"context_line":"                \u0027no_snapshots\u0027: transfer.get(\u0027no_snapshots\u0027),"},{"line_number":73,"context_line":"                \u0027links\u0027: self._get_links(request, transfer[\u0027id\u0027])"},{"line_number":74,"context_line":"            }"},{"line_number":75,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_430dda35","line":72,"range":{"start_line":72,"start_character":16,"end_line":72,"end_character":61},"updated":"2018-01-24 16:46:53.000000000","message":"ditto","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6952415f7f2397459c1e26ba232ff82a4467aad0","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                \u0027name\u0027: transfer.get(\u0027display_name\u0027),"},{"line_number":70,"context_line":"                \u0027volume_id\u0027: transfer.get(\u0027volume_id\u0027),"},{"line_number":71,"context_line":"                \u0027auth_key\u0027: transfer.get(\u0027auth_key\u0027),"},{"line_number":72,"context_line":"                \u0027no_snapshots\u0027: transfer.get(\u0027no_snapshots\u0027),"},{"line_number":73,"context_line":"                \u0027links\u0027: self._get_links(request, transfer[\u0027id\u0027])"},{"line_number":74,"context_line":"            }"},{"line_number":75,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_d1f4465e","line":72,"range":{"start_line":72,"start_character":16,"end_line":72,"end_character":61},"in_reply_to":"5f93b717_430dda35","updated":"2018-01-25 04:42:54.000000000","message":"Done","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"}],"cinder/db/api.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"876588254157deeea44044fd2bde5d131578b27d","unresolved":false,"context_lines":[{"line_number":1288,"context_line":"                    no_snapshots\u003dFalse):"},{"line_number":1289,"context_line":"    \"\"\"Accept a volume transfer.\"\"\""},{"line_number":1290,"context_line":"    return IMPL.transfer_accept(context, transfer_id, user_id, project_id,"},{"line_number":1291,"context_line":"                                no_snapshots)"},{"line_number":1292,"context_line":""},{"line_number":1293,"context_line":""},{"line_number":1294,"context_line":"###################"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_a3c4de41","line":1291,"range":{"start_line":1291,"start_character":32,"end_line":1291,"end_character":43},"updated":"2018-01-24 16:46:53.000000000","message":"no_snapshots\u003dno_snapshots","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6952415f7f2397459c1e26ba232ff82a4467aad0","unresolved":false,"context_lines":[{"line_number":1288,"context_line":"                    no_snapshots\u003dFalse):"},{"line_number":1289,"context_line":"    \"\"\"Accept a volume transfer.\"\"\""},{"line_number":1290,"context_line":"    return IMPL.transfer_accept(context, transfer_id, user_id, project_id,"},{"line_number":1291,"context_line":"                                no_snapshots)"},{"line_number":1292,"context_line":""},{"line_number":1293,"context_line":""},{"line_number":1294,"context_line":"###################"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_3440f835","line":1291,"range":{"start_line":1291,"start_character":32,"end_line":1291,"end_character":43},"in_reply_to":"5f93b717_a3c4de41","updated":"2018-01-25 04:42:54.000000000","message":"Done","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d1ea7b06c1369324b06361a28a46f97aa0e83448","unresolved":false,"context_lines":[{"line_number":5506,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5507,"context_line":"                                          expected):"},{"line_number":5508,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"},{"line_number":5509,"context_line":"                             \u0027%(snapsho_id)s expected in available state.\u0027)"},{"line_number":5510,"context_line":"                           % {\u0027transfer_id\u0027: transfer_id,"},{"line_number":5511,"context_line":"                              \u0027snapsho_id\u0027: snapshot[\u0027id\u0027]})"},{"line_number":5512,"context_line":"                    LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_e25d8ce9","line":5509,"range":{"start_line":5509,"start_character":32,"end_line":5509,"end_character":42},"updated":"2018-01-15 20:13:57.000000000","message":"snapshot_id?","commit_id":"3b59a61891dd076092ff0d3084b2764e2ee7e7d9"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"9e547fd3a32ad96f54de1ba1b925d79c73ac6d8b","unresolved":false,"context_lines":[{"line_number":5506,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5507,"context_line":"                                          expected):"},{"line_number":5508,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"},{"line_number":5509,"context_line":"                             \u0027%(snapsho_id)s expected in available state.\u0027)"},{"line_number":5510,"context_line":"                           % {\u0027transfer_id\u0027: transfer_id,"},{"line_number":5511,"context_line":"                              \u0027snapsho_id\u0027: snapshot[\u0027id\u0027]})"},{"line_number":5512,"context_line":"                    LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_0399971d","line":5509,"range":{"start_line":5509,"start_character":32,"end_line":5509,"end_character":42},"in_reply_to":"7f96bb07_e25d8ce9","updated":"2018-01-16 00:43:24.000000000","message":"Done","commit_id":"3b59a61891dd076092ff0d3084b2764e2ee7e7d9"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"876588254157deeea44044fd2bde5d131578b27d","unresolved":false,"context_lines":[{"line_number":5508,"context_line":"                  \u0027updated_at\u0027: literal_column(\u0027updated_at\u0027)}))"},{"line_number":5509,"context_line":""},{"line_number":5510,"context_line":"        # Update snapshots for transfer snapshots with volume."},{"line_number":5511,"context_line":"        if no_snapshots is False:"},{"line_number":5512,"context_line":"            snapshots \u003d snapshot_get_all_for_volume(context, volume_id)"},{"line_number":5513,"context_line":"            for snapshot in snapshots:"},{"line_number":5514,"context_line":"                expected \u003d {\u0027id\u0027: snapshot[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_83a522b8","line":5511,"range":{"start_line":5511,"start_character":11,"end_line":5511,"end_character":32},"updated":"2018-01-24 16:46:53.000000000","message":"not no_snapshots","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6952415f7f2397459c1e26ba232ff82a4467aad0","unresolved":false,"context_lines":[{"line_number":5508,"context_line":"                  \u0027updated_at\u0027: literal_column(\u0027updated_at\u0027)}))"},{"line_number":5509,"context_line":""},{"line_number":5510,"context_line":"        # Update snapshots for transfer snapshots with volume."},{"line_number":5511,"context_line":"        if no_snapshots is False:"},{"line_number":5512,"context_line":"            snapshots \u003d snapshot_get_all_for_volume(context, volume_id)"},{"line_number":5513,"context_line":"            for snapshot in snapshots:"},{"line_number":5514,"context_line":"                expected \u003d {\u0027id\u0027: snapshot[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_3469d8bd","line":5511,"range":{"start_line":5511,"start_character":11,"end_line":5511,"end_character":32},"in_reply_to":"5f93b717_83a522b8","updated":"2018-01-25 04:42:54.000000000","message":"Done","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"876588254157deeea44044fd2bde5d131578b27d","unresolved":false,"context_lines":[{"line_number":5516,"context_line":"                update \u003d {\u0027user_id\u0027: user_id,"},{"line_number":5517,"context_line":"                          \u0027project_id\u0027: project_id,"},{"line_number":5518,"context_line":"                          \u0027updated_at\u0027: models.Snapshot.updated_at}"},{"line_number":5519,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5520,"context_line":"                                          expected):"},{"line_number":5521,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"},{"line_number":5522,"context_line":"                             \u0027%(snapshot_id)s expected in available state.\u0027)"},{"line_number":5523,"context_line":"                           % {\u0027transfer_id\u0027: transfer_id,"},{"line_number":5524,"context_line":"                              \u0027snapshot_id\u0027: snapshot[\u0027id\u0027]})"},{"line_number":5525,"context_line":"                    LOG.error(msg)"},{"line_number":5526,"context_line":"                    raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":5527,"context_line":""},{"line_number":5528,"context_line":""},{"line_number":5529,"context_line":"###############################"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_63b7b6da","line":5526,"range":{"start_line":5519,"start_character":15,"end_line":5526,"end_character":61},"updated":"2018-01-24 16:46:53.000000000","message":"what will happen if we failed to update the snapshots while it succeed on volume resource","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6952415f7f2397459c1e26ba232ff82a4467aad0","unresolved":false,"context_lines":[{"line_number":5516,"context_line":"                update \u003d {\u0027user_id\u0027: user_id,"},{"line_number":5517,"context_line":"                          \u0027project_id\u0027: project_id,"},{"line_number":5518,"context_line":"                          \u0027updated_at\u0027: models.Snapshot.updated_at}"},{"line_number":5519,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5520,"context_line":"                                          expected):"},{"line_number":5521,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"},{"line_number":5522,"context_line":"                             \u0027%(snapshot_id)s expected in available state.\u0027)"},{"line_number":5523,"context_line":"                           % {\u0027transfer_id\u0027: transfer_id,"},{"line_number":5524,"context_line":"                              \u0027snapshot_id\u0027: snapshot[\u0027id\u0027]})"},{"line_number":5525,"context_line":"                    LOG.error(msg)"},{"line_number":5526,"context_line":"                    raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":5527,"context_line":""},{"line_number":5528,"context_line":""},{"line_number":5529,"context_line":"###############################"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_d49f54b2","line":5526,"range":{"start_line":5519,"start_character":15,"end_line":5526,"end_character":61},"in_reply_to":"5f93b717_63b7b6da","updated":"2018-01-25 04:42:54.000000000","message":"it will left the snapshots behind, just transfer the volume successfully.","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"69b1e61bbe9267fb7d69047cb643d9139dae3f44","unresolved":false,"context_lines":[{"line_number":5515,"context_line":"                            \u0027status\u0027: \u0027available\u0027}"},{"line_number":5516,"context_line":"                update \u003d {\u0027user_id\u0027: user_id,"},{"line_number":5517,"context_line":"                          \u0027project_id\u0027: project_id,"},{"line_number":5518,"context_line":"                          \u0027updated_at\u0027: models.Snapshot.updated_at}"},{"line_number":5519,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5520,"context_line":"                                          expected):"},{"line_number":5521,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f93b717_0314804d","line":5518,"range":{"start_line":5518,"start_character":25,"end_line":5518,"end_character":66},"updated":"2018-01-26 02:17:47.000000000","message":"\"updated_at\" should be updated as well here.","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"79fd087f9193a611242bf3a78306e1a98abea676","unresolved":false,"context_lines":[{"line_number":5515,"context_line":"                            \u0027status\u0027: \u0027available\u0027}"},{"line_number":5516,"context_line":"                update \u003d {\u0027user_id\u0027: user_id,"},{"line_number":5517,"context_line":"                          \u0027project_id\u0027: project_id,"},{"line_number":5518,"context_line":"                          \u0027updated_at\u0027: models.Snapshot.updated_at}"},{"line_number":5519,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5520,"context_line":"                                          expected):"},{"line_number":5521,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f93b717_c9731780","line":5518,"range":{"start_line":5518,"start_character":25,"end_line":5518,"end_character":66},"in_reply_to":"5f93b717_0314804d","updated":"2018-01-26 03:09:06.000000000","message":"Looks like better to use \"literal_column(\u0027updated_at\u0027)\" here.","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"7097925feb946fddcfad54aee4f585b334faedb1","unresolved":false,"context_lines":[{"line_number":5515,"context_line":"                            \u0027status\u0027: \u0027available\u0027}"},{"line_number":5516,"context_line":"                update \u003d {\u0027user_id\u0027: user_id,"},{"line_number":5517,"context_line":"                          \u0027project_id\u0027: project_id,"},{"line_number":5518,"context_line":"                          \u0027updated_at\u0027: models.Snapshot.updated_at}"},{"line_number":5519,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5520,"context_line":"                                          expected):"},{"line_number":5521,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f93b717_0e46e024","line":5518,"range":{"start_line":5518,"start_character":25,"end_line":5518,"end_character":66},"in_reply_to":"5f93b717_c9731780","updated":"2018-01-26 06:56:51.000000000","message":"Done","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"69b1e61bbe9267fb7d69047cb643d9139dae3f44","unresolved":false,"context_lines":[{"line_number":5523,"context_line":"                           % {\u0027transfer_id\u0027: transfer_id,"},{"line_number":5524,"context_line":"                              \u0027snapshot_id\u0027: snapshot[\u0027id\u0027]})"},{"line_number":5525,"context_line":"                    LOG.error(msg)"},{"line_number":5526,"context_line":"                    raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":5527,"context_line":""},{"line_number":5528,"context_line":""},{"line_number":5529,"context_line":"###############################"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f93b717_8307301d","line":5526,"range":{"start_line":5526,"start_character":36,"end_line":5526,"end_character":49},"updated":"2018-01-26 02:17:47.000000000","message":"InvalidSnapshot?","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"79fd087f9193a611242bf3a78306e1a98abea676","unresolved":false,"context_lines":[{"line_number":5523,"context_line":"                           % {\u0027transfer_id\u0027: transfer_id,"},{"line_number":5524,"context_line":"                              \u0027snapshot_id\u0027: snapshot[\u0027id\u0027]})"},{"line_number":5525,"context_line":"                    LOG.error(msg)"},{"line_number":5526,"context_line":"                    raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":5527,"context_line":""},{"line_number":5528,"context_line":""},{"line_number":5529,"context_line":"###############################"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f93b717_292ddb42","line":5526,"range":{"start_line":5526,"start_character":36,"end_line":5526,"end_character":49},"in_reply_to":"5f93b717_8307301d","updated":"2018-01-26 03:09:06.000000000","message":"Agree with \"InvalidSnapshot\".","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"7097925feb946fddcfad54aee4f585b334faedb1","unresolved":false,"context_lines":[{"line_number":5523,"context_line":"                           % {\u0027transfer_id\u0027: transfer_id,"},{"line_number":5524,"context_line":"                              \u0027snapshot_id\u0027: snapshot[\u0027id\u0027]})"},{"line_number":5525,"context_line":"                    LOG.error(msg)"},{"line_number":5526,"context_line":"                    raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":5527,"context_line":""},{"line_number":5528,"context_line":""},{"line_number":5529,"context_line":"###############################"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f93b717_cec23886","line":5526,"range":{"start_line":5526,"start_character":36,"end_line":5526,"end_character":49},"in_reply_to":"5f93b717_8307301d","updated":"2018-01-26 06:56:51.000000000","message":"yes","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"771c8aa5c818c39fd60e775ddb1729b93d6f34ea","unresolved":false,"context_lines":[{"line_number":5515,"context_line":"                            \u0027status\u0027: \u0027available\u0027}"},{"line_number":5516,"context_line":"                update \u003d {\u0027user_id\u0027: user_id,"},{"line_number":5517,"context_line":"                          \u0027project_id\u0027: project_id,"},{"line_number":5518,"context_line":"                          \u0027updated_at\u0027: literal_column(\u0027updated_at\u0027)}"},{"line_number":5519,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5520,"context_line":"                                          expected):"},{"line_number":5521,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f93b717_c73bfb35","line":5518,"range":{"start_line":5518,"start_character":23,"end_line":5518,"end_character":69},"updated":"2018-01-26 08:57:44.000000000","message":"I personally prefer to remove this line, it would be confusing that we transfered the snapshots while it\u0027s updated attribute is left unchanged.","commit_id":"b34cdc397c97dd6e1bcb941db013187f7697e065"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"eede38a81c27eea40f647de34d6a66de2f2c3060","unresolved":false,"context_lines":[{"line_number":5515,"context_line":"                            \u0027status\u0027: \u0027available\u0027}"},{"line_number":5516,"context_line":"                update \u003d {\u0027user_id\u0027: user_id,"},{"line_number":5517,"context_line":"                          \u0027project_id\u0027: project_id,"},{"line_number":5518,"context_line":"                          \u0027updated_at\u0027: literal_column(\u0027updated_at\u0027)}"},{"line_number":5519,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5520,"context_line":"                                          expected):"},{"line_number":5521,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f93b717_b3a7ec4f","line":5518,"range":{"start_line":5518,"start_character":23,"end_line":5518,"end_character":69},"in_reply_to":"5f93b717_282607b9","updated":"2018-01-29 03:22:43.000000000","message":"I mean we should update the time, and the code below:\n```\n \u0027updated_at\u0027: literal_column(\u0027updated_at\u0027)\n```\nis telling database not to update it(update it with the previous value).","commit_id":"b34cdc397c97dd6e1bcb941db013187f7697e065"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"c72619ebfd4d605adf8757696390229a99ead42d","unresolved":false,"context_lines":[{"line_number":5515,"context_line":"                            \u0027status\u0027: \u0027available\u0027}"},{"line_number":5516,"context_line":"                update \u003d {\u0027user_id\u0027: user_id,"},{"line_number":5517,"context_line":"                          \u0027project_id\u0027: project_id,"},{"line_number":5518,"context_line":"                          \u0027updated_at\u0027: literal_column(\u0027updated_at\u0027)}"},{"line_number":5519,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5520,"context_line":"                                          expected):"},{"line_number":5521,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f93b717_ee5526fb","line":5518,"range":{"start_line":5518,"start_character":23,"end_line":5518,"end_character":69},"in_reply_to":"5f93b717_b3a7ec4f","updated":"2018-02-01 06:50:08.000000000","message":"thanks Tommy, I got this.  Will update soon.","commit_id":"b34cdc397c97dd6e1bcb941db013187f7697e065"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"aa3e81cfde2e2b32a3b792f842877a7f95c2bfa8","unresolved":false,"context_lines":[{"line_number":5515,"context_line":"                            \u0027status\u0027: \u0027available\u0027}"},{"line_number":5516,"context_line":"                update \u003d {\u0027user_id\u0027: user_id,"},{"line_number":5517,"context_line":"                          \u0027project_id\u0027: project_id,"},{"line_number":5518,"context_line":"                          \u0027updated_at\u0027: literal_column(\u0027updated_at\u0027)}"},{"line_number":5519,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5520,"context_line":"                                          expected):"},{"line_number":5521,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f93b717_282607b9","line":5518,"range":{"start_line":5518,"start_character":23,"end_line":5518,"end_character":69},"in_reply_to":"5f93b717_c73bfb35","updated":"2018-01-29 01:04:59.000000000","message":"Sorry， I didn\u0027t get your point.  This line is to update the snapshot\u0027s updated attribute when we transferred the snapshots. Do you suggest that we do not need to update the time?","commit_id":"b34cdc397c97dd6e1bcb941db013187f7697e065"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a4c2e267a645a725f7eee912b16ae37bbc52414","unresolved":false,"context_lines":[{"line_number":5523,"context_line":"                           % {\u0027transfer_id\u0027: transfer_id,"},{"line_number":5524,"context_line":"                              \u0027snapshot_id\u0027: snapshot[\u0027id\u0027]})"},{"line_number":5525,"context_line":"                    LOG.error(msg)"},{"line_number":5526,"context_line":"                    raise exception.InvalidSnapshot(reason\u003dmsg)"},{"line_number":5527,"context_line":""},{"line_number":5528,"context_line":""},{"line_number":5529,"context_line":"###############################"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_0305747a","line":5526,"updated":"2018-04-06 02:29:06.000000000","message":"Now seeing this, I realize we did not call this out in the spec.\n\nShould we just stop mid transfer, leaving some snapshots transferred and some not? Or should we try to roll things back and get things, including the volume, rolled back to the original owner?\n\nI don\u0027t think we want this as it is now as this will end up failing the operation, but if it fails here the volume will already have been transferred over to the new project.","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d352be926b3823dfa1d4a693cf28753eb62b4af1","unresolved":false,"context_lines":[{"line_number":5523,"context_line":"                           % {\u0027transfer_id\u0027: transfer_id,"},{"line_number":5524,"context_line":"                              \u0027snapshot_id\u0027: snapshot[\u0027id\u0027]})"},{"line_number":5525,"context_line":"                    LOG.error(msg)"},{"line_number":5526,"context_line":"                    raise exception.InvalidSnapshot(reason\u003dmsg)"},{"line_number":5527,"context_line":""},{"line_number":5528,"context_line":""},{"line_number":5529,"context_line":"###############################"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_46c03e7d","line":5526,"in_reply_to":"bf659307_0305747a","updated":"2018-04-08 09:02:33.000000000","message":"You\u0027re right, this is not best choice and a bit rude now.  I will try to roll volume and snapshots back to original owner here, let user can do the transfer operation again with snapshots or not(but if rolling operation fails too, it will left the mid transfer status here).","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a4c2e267a645a725f7eee912b16ae37bbc52414","unresolved":false,"context_lines":[{"line_number":5524,"context_line":"                              \u0027snapshot_id\u0027: snapshot[\u0027id\u0027]})"},{"line_number":5525,"context_line":"                    LOG.error(msg)"},{"line_number":5526,"context_line":"                    raise exception.InvalidSnapshot(reason\u003dmsg)"},{"line_number":5527,"context_line":""},{"line_number":5528,"context_line":""},{"line_number":5529,"context_line":"###############################"},{"line_number":5530,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_232f58f7","line":5527,"updated":"2018-04-06 02:29:06.000000000","message":"This is also an async operation, so I think we should have user messages for failure conditions.\n\nhttps://docs.openstack.org/cinder/latest/contributor/user_messages.html","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d352be926b3823dfa1d4a693cf28753eb62b4af1","unresolved":false,"context_lines":[{"line_number":5524,"context_line":"                              \u0027snapshot_id\u0027: snapshot[\u0027id\u0027]})"},{"line_number":5525,"context_line":"                    LOG.error(msg)"},{"line_number":5526,"context_line":"                    raise exception.InvalidSnapshot(reason\u003dmsg)"},{"line_number":5527,"context_line":""},{"line_number":5528,"context_line":""},{"line_number":5529,"context_line":"###############################"},{"line_number":5530,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_a636fab3","line":5527,"in_reply_to":"bf659307_232f58f7","updated":"2018-04-08 09:02:33.000000000","message":"sure","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"ad00b0c4c4923d548af4bf19249a4279f74865df","unresolved":false,"context_lines":[{"line_number":5543,"context_line":"                            \u0027status\u0027: \u0027available\u0027}"},{"line_number":5544,"context_line":"                update \u003d {\u0027user_id\u0027: user_id,"},{"line_number":5545,"context_line":"                          \u0027project_id\u0027: project_id,"},{"line_number":5546,"context_line":"                          \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5547,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5548,"context_line":"                                          expected):"},{"line_number":5549,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"bf659307_23e15ffd","line":5546,"updated":"2018-04-09 19:45:32.000000000","message":"We update updated_at for the snapshot transfer, but not for the volume?\n\nI think we should be doing this for the volume as well...","commit_id":"781db4427a28b2c0b2fd7271918f286df2afe115"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"b8d74f6605e477030f30810b5283a966079570b5","unresolved":false,"context_lines":[{"line_number":5543,"context_line":"                            \u0027status\u0027: \u0027available\u0027}"},{"line_number":5544,"context_line":"                update \u003d {\u0027user_id\u0027: user_id,"},{"line_number":5545,"context_line":"                          \u0027project_id\u0027: project_id,"},{"line_number":5546,"context_line":"                          \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5547,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5548,"context_line":"                                          expected):"},{"line_number":5549,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"bf659307_25ede08a","line":5546,"in_reply_to":"bf659307_23e15ffd","updated":"2018-04-10 00:47:38.000000000","message":"yes, should update volume too.","commit_id":"781db4427a28b2c0b2fd7271918f286df2afe115"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"c82093ea29e9c046ec46dae97aca576cf534a617","unresolved":false,"context_lines":[{"line_number":5492,"context_line":"              \u0027project_id\u0027: old_project_id,"},{"line_number":5493,"context_line":"              \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5494,"context_line":"    if not conditional_update(context, models.Volume, update, expected):"},{"line_number":5495,"context_line":"        msg \u003d (_(\u0027Rolling back transferred volume %(volume_id)s expected \u0027"},{"line_number":5496,"context_line":"                 \u0027in available status.\u0027)"},{"line_number":5497,"context_line":"               % {\u0027volume_id\u0027: volume_id})"},{"line_number":5498,"context_line":"        LOG.error(msg)"},{"line_number":5499,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":36,"id":"9f6a8fd7_0e0d643d","line":5496,"range":{"start_line":5495,"start_character":18,"end_line":5496,"end_character":38},"updated":"2018-05-01 20:47:08.000000000","message":"This error message doesn\u0027t make sense?  Do you mean \u0027volume is not in the expected \u0027available\u0027 status\u0027  ?","commit_id":"fdfb12c95ee404974740d97e4f4c1d5cbc1beb93"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6f1190f8675753722ad67a872dc9cecc85a27e8d","unresolved":false,"context_lines":[{"line_number":5492,"context_line":"              \u0027project_id\u0027: old_project_id,"},{"line_number":5493,"context_line":"              \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5494,"context_line":"    if not conditional_update(context, models.Volume, update, expected):"},{"line_number":5495,"context_line":"        msg \u003d (_(\u0027Rolling back transferred volume %(volume_id)s expected \u0027"},{"line_number":5496,"context_line":"                 \u0027in available status.\u0027)"},{"line_number":5497,"context_line":"               % {\u0027volume_id\u0027: volume_id})"},{"line_number":5498,"context_line":"        LOG.error(msg)"},{"line_number":5499,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":36,"id":"9f6a8fd7_7b929bf8","line":5496,"range":{"start_line":5495,"start_character":18,"end_line":5496,"end_character":38},"in_reply_to":"9f6a8fd7_0e0d643d","updated":"2018-05-02 01:40:58.000000000","message":"yes,  I mean \u0027rolling back volume,  which should be in available status.\u0027   Will update those msgs, thanks.","commit_id":"fdfb12c95ee404974740d97e4f4c1d5cbc1beb93"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"c82093ea29e9c046ec46dae97aca576cf534a617","unresolved":false,"context_lines":[{"line_number":5506,"context_line":"                  \u0027project_id\u0027: old_project_id,"},{"line_number":5507,"context_line":"                  \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5508,"context_line":"        if not conditional_update(context, models.Snapshot, update, expected):"},{"line_number":5509,"context_line":"            msg \u003d (_(\u0027Rolling back transferred snapshots: Snapshot id \u0027"},{"line_number":5510,"context_line":"                     \u0027%(snapshot_id)s expected in available state.\u0027)"},{"line_number":5511,"context_line":"                   % {\u0027snapshot_id\u0027: snapshot_id})"},{"line_number":5512,"context_line":"            LOG.error(msg)"},{"line_number":5513,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":36,"id":"9f6a8fd7_ce068c21","line":5510,"range":{"start_line":5509,"start_character":22,"end_line":5510,"end_character":66},"updated":"2018-05-01 20:47:08.000000000","message":"Same comment here.","commit_id":"fdfb12c95ee404974740d97e4f4c1d5cbc1beb93"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6f1190f8675753722ad67a872dc9cecc85a27e8d","unresolved":false,"context_lines":[{"line_number":5506,"context_line":"                  \u0027project_id\u0027: old_project_id,"},{"line_number":5507,"context_line":"                  \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5508,"context_line":"        if not conditional_update(context, models.Snapshot, update, expected):"},{"line_number":5509,"context_line":"            msg \u003d (_(\u0027Rolling back transferred snapshots: Snapshot id \u0027"},{"line_number":5510,"context_line":"                     \u0027%(snapshot_id)s expected in available state.\u0027)"},{"line_number":5511,"context_line":"                   % {\u0027snapshot_id\u0027: snapshot_id})"},{"line_number":5512,"context_line":"            LOG.error(msg)"},{"line_number":5513,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":36,"id":"9f6a8fd7_9b8d2fd5","line":5510,"range":{"start_line":5509,"start_character":22,"end_line":5510,"end_character":66},"in_reply_to":"9f6a8fd7_ce068c21","updated":"2018-05-02 01:40:58.000000000","message":"Done","commit_id":"fdfb12c95ee404974740d97e4f4c1d5cbc1beb93"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"c82093ea29e9c046ec46dae97aca576cf534a617","unresolved":false,"context_lines":[{"line_number":5537,"context_line":"            snapshots \u003d snapshot_get_all_for_volume(context, volume_id)"},{"line_number":5538,"context_line":"            transferred_snapshots \u003d []"},{"line_number":5539,"context_line":"            for snapshot in snapshots:"},{"line_number":5540,"context_line":"                LOG.info(\u0027Begin to transfer snapshots: %s\u0027, snapshot[\u0027id\u0027])"},{"line_number":5541,"context_line":"                old_user_id \u003d snapshot[\u0027user_id\u0027]"},{"line_number":5542,"context_line":"                old_project_id \u003d snapshot[\u0027project_id\u0027]"},{"line_number":5543,"context_line":"                expected \u003d {\u0027id\u0027: snapshot[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":36,"id":"9f6a8fd7_a901d206","line":5540,"range":{"start_line":5540,"start_character":44,"end_line":5540,"end_character":53},"updated":"2018-05-01 20:47:08.000000000","message":"snapshot","commit_id":"fdfb12c95ee404974740d97e4f4c1d5cbc1beb93"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6f1190f8675753722ad67a872dc9cecc85a27e8d","unresolved":false,"context_lines":[{"line_number":5537,"context_line":"            snapshots \u003d snapshot_get_all_for_volume(context, volume_id)"},{"line_number":5538,"context_line":"            transferred_snapshots \u003d []"},{"line_number":5539,"context_line":"            for snapshot in snapshots:"},{"line_number":5540,"context_line":"                LOG.info(\u0027Begin to transfer snapshots: %s\u0027, snapshot[\u0027id\u0027])"},{"line_number":5541,"context_line":"                old_user_id \u003d snapshot[\u0027user_id\u0027]"},{"line_number":5542,"context_line":"                old_project_id \u003d snapshot[\u0027project_id\u0027]"},{"line_number":5543,"context_line":"                expected \u003d {\u0027id\u0027: snapshot[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":36,"id":"9f6a8fd7_3bbe6365","line":5540,"range":{"start_line":5540,"start_character":44,"end_line":5540,"end_character":53},"in_reply_to":"9f6a8fd7_a901d206","updated":"2018-05-02 01:40:58.000000000","message":"Done","commit_id":"fdfb12c95ee404974740d97e4f4c1d5cbc1beb93"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"c82093ea29e9c046ec46dae97aca576cf534a617","unresolved":false,"context_lines":[{"line_number":5547,"context_line":"                          \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5548,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5549,"context_line":"                                          expected):"},{"line_number":5550,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"},{"line_number":5551,"context_line":"                             \u0027%(snapshot_id)s expected in available state.\u0027)"},{"line_number":5552,"context_line":"                           % {\u0027transfer_id\u0027: transfer_id,"},{"line_number":5553,"context_line":"                              \u0027snapshot_id\u0027: snapshot[\u0027id\u0027]})"},{"line_number":5554,"context_line":"                    LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":36,"id":"9f6a8fd7_690bba23","line":5551,"range":{"start_line":5550,"start_character":30,"end_line":5551,"end_character":74},"updated":"2018-05-01 20:47:08.000000000","message":"Same comment here.","commit_id":"fdfb12c95ee404974740d97e4f4c1d5cbc1beb93"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6f1190f8675753722ad67a872dc9cecc85a27e8d","unresolved":false,"context_lines":[{"line_number":5547,"context_line":"                          \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5548,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5549,"context_line":"                                          expected):"},{"line_number":5550,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot id \u0027"},{"line_number":5551,"context_line":"                             \u0027%(snapshot_id)s expected in available state.\u0027)"},{"line_number":5552,"context_line":"                           % {\u0027transfer_id\u0027: transfer_id,"},{"line_number":5553,"context_line":"                              \u0027snapshot_id\u0027: snapshot[\u0027id\u0027]})"},{"line_number":5554,"context_line":"                    LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":36,"id":"9f6a8fd7_5bc1d7e3","line":5551,"range":{"start_line":5550,"start_character":30,"end_line":5551,"end_character":74},"in_reply_to":"9f6a8fd7_690bba23","updated":"2018-05-02 01:40:58.000000000","message":"Done","commit_id":"fdfb12c95ee404974740d97e4f4c1d5cbc1beb93"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"02a3acc45c55f50392663c4f5bcc11bd77d3e5a9","unresolved":false,"context_lines":[{"line_number":5501,"context_line":"              \u0027project_id\u0027: old_project_id,"},{"line_number":5502,"context_line":"              \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5503,"context_line":"    if not conditional_update(context, models.Volume, update, expected):"},{"line_number":5504,"context_line":"        msg \u003d (_(\u0027Volume: %(volume_id)s is not in the expected available \u0027"},{"line_number":5505,"context_line":"                 \u0027status. Rolling back it.\u0027)"},{"line_number":5506,"context_line":"               % {\u0027volume_id\u0027: volume_id})"},{"line_number":5507,"context_line":"        LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":48,"id":"5f7c97a3_3e615bd4","line":5504,"range":{"start_line":5504,"start_character":15,"end_line":5504,"end_character":17},"updated":"2018-06-20 13:03:42.000000000","message":"Log messages should not be translated.","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3da76dd3609e9f724d1d49504dc93268866deeed","unresolved":false,"context_lines":[{"line_number":5501,"context_line":"              \u0027project_id\u0027: old_project_id,"},{"line_number":5502,"context_line":"              \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5503,"context_line":"    if not conditional_update(context, models.Volume, update, expected):"},{"line_number":5504,"context_line":"        msg \u003d (_(\u0027Volume: %(volume_id)s is not in the expected available \u0027"},{"line_number":5505,"context_line":"                 \u0027status. Rolling back it.\u0027)"},{"line_number":5506,"context_line":"               % {\u0027volume_id\u0027: volume_id})"},{"line_number":5507,"context_line":"        LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":48,"id":"5f7c97a3_7d223d56","line":5504,"range":{"start_line":5504,"start_character":15,"end_line":5504,"end_character":17},"in_reply_to":"5f7c97a3_3e615bd4","updated":"2018-06-23 03:33:19.000000000","message":"Done","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"02a3acc45c55f50392663c4f5bcc11bd77d3e5a9","unresolved":false,"context_lines":[{"line_number":5503,"context_line":"    if not conditional_update(context, models.Volume, update, expected):"},{"line_number":5504,"context_line":"        msg \u003d (_(\u0027Volume: %(volume_id)s is not in the expected available \u0027"},{"line_number":5505,"context_line":"                 \u0027status. Rolling back it.\u0027)"},{"line_number":5506,"context_line":"               % {\u0027volume_id\u0027: volume_id})"},{"line_number":5507,"context_line":"        LOG.error(msg)"},{"line_number":5508,"context_line":"        return"},{"line_number":5509,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"5f7c97a3_1e9c9fbd","line":5506,"range":{"start_line":5506,"start_character":15,"end_line":5506,"end_character":16},"updated":"2018-06-20 13:03:42.000000000","message":"Since this is just used for logging, move all of this into the LOG.error call and change % to , to pass in the formatting values as args to the logger call.","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3da76dd3609e9f724d1d49504dc93268866deeed","unresolved":false,"context_lines":[{"line_number":5503,"context_line":"    if not conditional_update(context, models.Volume, update, expected):"},{"line_number":5504,"context_line":"        msg \u003d (_(\u0027Volume: %(volume_id)s is not in the expected available \u0027"},{"line_number":5505,"context_line":"                 \u0027status. Rolling back it.\u0027)"},{"line_number":5506,"context_line":"               % {\u0027volume_id\u0027: volume_id})"},{"line_number":5507,"context_line":"        LOG.error(msg)"},{"line_number":5508,"context_line":"        return"},{"line_number":5509,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"5f7c97a3_9d271964","line":5506,"range":{"start_line":5506,"start_character":15,"end_line":5506,"end_character":16},"in_reply_to":"5f7c97a3_1e9c9fbd","updated":"2018-06-23 03:33:19.000000000","message":"Done","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"02a3acc45c55f50392663c4f5bcc11bd77d3e5a9","unresolved":false,"context_lines":[{"line_number":5515,"context_line":"                  \u0027project_id\u0027: old_project_id,"},{"line_number":5516,"context_line":"                  \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5517,"context_line":"        if not conditional_update(context, models.Snapshot, update, expected):"},{"line_number":5518,"context_line":"            msg \u003d (_(\u0027Snapshot: %(snapshot_id)s is not in the expected \u0027"},{"line_number":5519,"context_line":"                     \u0027available state. Rolling back it.\u0027)"},{"line_number":5520,"context_line":"                   % {\u0027snapshot_id\u0027: snapshot_id})"},{"line_number":5521,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":48,"id":"5f7c97a3_7eacb3ed","line":5518,"updated":"2018-06-20 13:03:42.000000000","message":"Same as above.","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3da76dd3609e9f724d1d49504dc93268866deeed","unresolved":false,"context_lines":[{"line_number":5515,"context_line":"                  \u0027project_id\u0027: old_project_id,"},{"line_number":5516,"context_line":"                  \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5517,"context_line":"        if not conditional_update(context, models.Snapshot, update, expected):"},{"line_number":5518,"context_line":"            msg \u003d (_(\u0027Snapshot: %(snapshot_id)s is not in the expected \u0027"},{"line_number":5519,"context_line":"                     \u0027available state. Rolling back it.\u0027)"},{"line_number":5520,"context_line":"                   % {\u0027snapshot_id\u0027: snapshot_id})"},{"line_number":5521,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":48,"id":"5f7c97a3_5d1d010d","line":5518,"in_reply_to":"5f7c97a3_7eacb3ed","updated":"2018-06-23 03:33:19.000000000","message":"Done","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"02a3acc45c55f50392663c4f5bcc11bd77d3e5a9","unresolved":false,"context_lines":[{"line_number":5556,"context_line":"                          \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5557,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5558,"context_line":"                                          expected):"},{"line_number":5559,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot \u0027"},{"line_number":5560,"context_line":"                             \u0027%(snapshot_id)s is not in the expected \u0027"},{"line_number":5561,"context_line":"                             \u0027available state.\u0027)"},{"line_number":5562,"context_line":"                           % {\u0027transfer_id\u0027: transfer_id,"}],"source_content_type":"text/x-python","patch_set":48,"id":"5f7c97a3_fe81a34e","line":5559,"range":{"start_line":5559,"start_character":20,"end_line":5559,"end_character":23},"updated":"2018-06-20 13:03:42.000000000","message":"Here is fine because the translated string is being used in as the exception message.","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3da76dd3609e9f724d1d49504dc93268866deeed","unresolved":false,"context_lines":[{"line_number":5556,"context_line":"                          \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5557,"context_line":"                if not conditional_update(context, models.Snapshot, update,"},{"line_number":5558,"context_line":"                                          expected):"},{"line_number":5559,"context_line":"                    msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot \u0027"},{"line_number":5560,"context_line":"                             \u0027%(snapshot_id)s is not in the expected \u0027"},{"line_number":5561,"context_line":"                             \u0027available state.\u0027)"},{"line_number":5562,"context_line":"                           % {\u0027transfer_id\u0027: transfer_id,"}],"source_content_type":"text/x-python","patch_set":48,"id":"5f7c97a3_fd15ede6","line":5559,"range":{"start_line":5559,"start_character":20,"end_line":5559,"end_character":23},"in_reply_to":"5f7c97a3_fe81a34e","updated":"2018-06-23 03:33:19.000000000","message":"sure","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cc1038d6d4591258e30f9014b91db9399c5c5eec","unresolved":false,"context_lines":[{"line_number":5501,"context_line":"              \u0027project_id\u0027: old_project_id,"},{"line_number":5502,"context_line":"              \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5503,"context_line":"    if not conditional_update(context, models.Volume, update, expected):"},{"line_number":5504,"context_line":"        LOG.error(\u0027Volume: %(volume_id)s is not in the expected available \u0027"},{"line_number":5505,"context_line":"                  \u0027status. Rolling back it.\u0027, {\u0027volume_id\u0027: volume_id})"},{"line_number":5506,"context_line":"        return"},{"line_number":5507,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"5f7c97a3_5707221e","line":5504,"range":{"start_line":5504,"start_character":8,"end_line":5504,"end_character":17},"updated":"2018-07-18 13:42:37.000000000","message":"Think this would be better as a LOG.warning.","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cc1038d6d4591258e30f9014b91db9399c5c5eec","unresolved":false,"context_lines":[{"line_number":5502,"context_line":"              \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5503,"context_line":"    if not conditional_update(context, models.Volume, update, expected):"},{"line_number":5504,"context_line":"        LOG.error(\u0027Volume: %(volume_id)s is not in the expected available \u0027"},{"line_number":5505,"context_line":"                  \u0027status. Rolling back it.\u0027, {\u0027volume_id\u0027: volume_id})"},{"line_number":5506,"context_line":"        return"},{"line_number":5507,"context_line":""},{"line_number":5508,"context_line":"    for snapshot_id in transffered_snapshots:"}],"source_content_type":"text/x-python","patch_set":51,"id":"5f7c97a3_17244ac2","line":5505,"range":{"start_line":5505,"start_character":27,"end_line":5505,"end_character":43},"updated":"2018-07-18 13:42:37.000000000","message":"Rolling it back.","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cc1038d6d4591258e30f9014b91db9399c5c5eec","unresolved":false,"context_lines":[{"line_number":5513,"context_line":"                  \u0027project_id\u0027: old_project_id,"},{"line_number":5514,"context_line":"                  \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5515,"context_line":"        if not conditional_update(context, models.Snapshot, update, expected):"},{"line_number":5516,"context_line":"            LOG.error(\u0027Snapshot: %(snapshot_id)s is not in the expected \u0027"},{"line_number":5517,"context_line":"                      \u0027available state. Rolling back it.\u0027,"},{"line_number":5518,"context_line":"                      {\u0027snapshot_id\u0027: snapshot_id})"},{"line_number":5519,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":51,"id":"5f7c97a3_17fd2a08","line":5516,"range":{"start_line":5516,"start_character":12,"end_line":5516,"end_character":21},"updated":"2018-07-18 13:42:37.000000000","message":"Same here.","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cc1038d6d4591258e30f9014b91db9399c5c5eec","unresolved":false,"context_lines":[{"line_number":5514,"context_line":"                  \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":5515,"context_line":"        if not conditional_update(context, models.Snapshot, update, expected):"},{"line_number":5516,"context_line":"            LOG.error(\u0027Snapshot: %(snapshot_id)s is not in the expected \u0027"},{"line_number":5517,"context_line":"                      \u0027available state. Rolling back it.\u0027,"},{"line_number":5518,"context_line":"                      {\u0027snapshot_id\u0027: snapshot_id})"},{"line_number":5519,"context_line":"            return"},{"line_number":5520,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"5f7c97a3_d71b327d","line":5517,"range":{"start_line":5517,"start_character":40,"end_line":5517,"end_character":56},"updated":"2018-07-18 13:42:37.000000000","message":"Rolling it back.","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"8d2d5ecf45dbd6dbd5095e3d341b84b645c47405","unresolved":false,"context_lines":[{"line_number":5559,"context_line":"                             \u0027available state.\u0027)"},{"line_number":5560,"context_line":"                           % {\u0027transfer_id\u0027: transfer_id,"},{"line_number":5561,"context_line":"                              \u0027snapshot_id\u0027: snapshot[\u0027id\u0027]})"},{"line_number":5562,"context_line":"                    LOG.warning(msg)"},{"line_number":5563,"context_line":"                    _roll_back_transferred_volume_and_snapshots("},{"line_number":5564,"context_line":"                        context, volume_id, old_user_id, old_project_id,"},{"line_number":5565,"context_line":"                        transferred_snapshots)"}],"source_content_type":"text/x-python","patch_set":53,"id":"5f7c97a3_beb2ef03","line":5562,"range":{"start_line":5562,"start_character":20,"end_line":5562,"end_character":31},"updated":"2018-07-19 15:14:44.000000000","message":"This should have stayed LOG.error but can fix with a follow-up patch.","commit_id":"c0efaa1d46b762693f8fe3a09d0359ead3e097c4"}],"cinder/db/sqlalchemy/migrate_repo/versions/117_add_transfer_no_snapshots.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"876588254157deeea44044fd2bde5d131578b27d","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"def upgrade(migrate_engine):"},{"line_number":17,"context_line":"    \"\"\"Add the connector column to the volume_attachment table.\"\"\""},{"line_number":18,"context_line":"    meta \u003d MetaData(bind\u003dmigrate_engine)"},{"line_number":19,"context_line":"    transfers \u003d Table(\u0027transfers\u0027, meta, autoload\u003dTrue)"},{"line_number":20,"context_line":"    if not hasattr(transfers.c, \u0027no_snapshots\u0027):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_a31a9e14","line":17,"range":{"start_line":17,"start_character":4,"end_line":17,"end_character":66},"updated":"2018-01-24 16:46:53.000000000","message":"Please update the comments","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6952415f7f2397459c1e26ba232ff82a4467aad0","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"def upgrade(migrate_engine):"},{"line_number":17,"context_line":"    \"\"\"Add the connector column to the volume_attachment table.\"\"\""},{"line_number":18,"context_line":"    meta \u003d MetaData(bind\u003dmigrate_engine)"},{"line_number":19,"context_line":"    transfers \u003d Table(\u0027transfers\u0027, meta, autoload\u003dTrue)"},{"line_number":20,"context_line":"    if not hasattr(transfers.c, \u0027no_snapshots\u0027):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_54ab44d5","line":17,"range":{"start_line":17,"start_character":4,"end_line":17,"end_character":66},"in_reply_to":"5f93b717_a31a9e14","updated":"2018-01-25 04:42:54.000000000","message":"Done","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"}],"cinder/db/sqlalchemy/models.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"69b1e61bbe9267fb7d69047cb643d9139dae3f44","unresolved":false,"context_lines":[{"line_number":829,"context_line":"    salt \u003d Column(String(255))"},{"line_number":830,"context_line":"    crypt_hash \u003d Column(String(255))"},{"line_number":831,"context_line":"    expires_at \u003d Column(DateTime)"},{"line_number":832,"context_line":"    no_snapshots \u003d Column(Boolean, default\u003dFalse)"},{"line_number":833,"context_line":"    volume \u003d relationship(Volume, backref\u003d\"transfer\","},{"line_number":834,"context_line":"                          foreign_keys\u003dvolume_id,"},{"line_number":835,"context_line":"                          primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f93b717_3e28b384","line":832,"range":{"start_line":832,"start_character":3,"end_line":832,"end_character":49},"updated":"2018-01-26 02:17:47.000000000","message":"I am little curious here, will this break the default behaviour to those volumes that both have snapshots and have been created for transfer before this change (migration) ?.","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"79fd087f9193a611242bf3a78306e1a98abea676","unresolved":false,"context_lines":[{"line_number":829,"context_line":"    salt \u003d Column(String(255))"},{"line_number":830,"context_line":"    crypt_hash \u003d Column(String(255))"},{"line_number":831,"context_line":"    expires_at \u003d Column(DateTime)"},{"line_number":832,"context_line":"    no_snapshots \u003d Column(Boolean, default\u003dFalse)"},{"line_number":833,"context_line":"    volume \u003d relationship(Volume, backref\u003d\"transfer\","},{"line_number":834,"context_line":"                          foreign_keys\u003dvolume_id,"},{"line_number":835,"context_line":"                          primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f93b717_69e203d8","line":832,"range":{"start_line":832,"start_character":3,"end_line":832,"end_character":49},"in_reply_to":"5f93b717_3e28b384","updated":"2018-01-26 03:09:06.000000000","message":"I think it\u0027s fine with this as volume transfer is a onetime task, when transfer is accepted, the db entry is marked deleted.\n\nFor those snapshots whose parent volume has been transfered before this patch, it seems nothing could be done for them, as we also support transfer volumes with \"no_snapshots\u003dTrue\" in this patch.","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"7097925feb946fddcfad54aee4f585b334faedb1","unresolved":false,"context_lines":[{"line_number":829,"context_line":"    salt \u003d Column(String(255))"},{"line_number":830,"context_line":"    crypt_hash \u003d Column(String(255))"},{"line_number":831,"context_line":"    expires_at \u003d Column(DateTime)"},{"line_number":832,"context_line":"    no_snapshots \u003d Column(Boolean, default\u003dFalse)"},{"line_number":833,"context_line":"    volume \u003d relationship(Volume, backref\u003d\"transfer\","},{"line_number":834,"context_line":"                          foreign_keys\u003dvolume_id,"},{"line_number":835,"context_line":"                          primaryjoin\u003d\u0027and_(\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f93b717_4e0b888d","line":832,"range":{"start_line":832,"start_character":3,"end_line":832,"end_character":49},"in_reply_to":"5f93b717_69e203d8","updated":"2018-01-26 06:56:51.000000000","message":"Yes, it will not impact those snapshots whose volume has been transferred before this patch.  And after this patch,  if user didn\u0027t use the new API, it will keep the old behavior and no_snapshots is True by default. \n\nIf user use the new API,  then Cinder will transfer those snapshots with volume by default as same as we design that.","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"}],"cinder/tests/unit/api/v3/test_volume_transfer.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"02a3acc45c55f50392663c4f5bcc11bd77d3e5a9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2012 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":48,"id":"5f7c97a3_9ed50f4a","line":1,"updated":"2018-06-20 13:03:42.000000000","message":"?","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3da76dd3609e9f724d1d49504dc93268866deeed","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2012 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":48,"id":"5f7c97a3_ddd6f127","line":1,"in_reply_to":"5f7c97a3_9ed50f4a","updated":"2018-06-23 03:33:19.000000000","message":"sorry, forgot to update this.","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"85bccf4e6afda071c30bcc37107a2a23034c9aee","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self.assertEqual(\u0027test_transfer\u0027, res_dict[\u0027transfers\u0027][0][\u0027name\u0027])"},{"line_number":110,"context_line":"        self.assertEqual(4, len(res_dict[\u0027transfers\u0027][1]))"},{"line_number":111,"context_line":"        self.assertEqual(\u0027test_transfer\u0027, res_dict[\u0027transfers\u0027][1][\u0027name\u0027])"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        db.transfer_destroy(context.get_admin_context(), transfer2[\u0027id\u0027])"},{"line_number":114,"context_line":"        db.transfer_destroy(context.get_admin_context(), transfer1[\u0027id\u0027])"},{"line_number":115,"context_line":"        db.volume_destroy(context.get_admin_context(), volume_id_1)"},{"line_number":116,"context_line":"        db.volume_destroy(context.get_admin_context(), volume_id_2)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def test_list_transfers_detail_json(self):"},{"line_number":119,"context_line":"        volume_id_1 \u003d self._create_volume(size\u003d5)"}],"source_content_type":"text/x-python","patch_set":53,"id":"5f7c97a3_4a299aef","line":116,"range":{"start_line":112,"start_character":0,"end_line":116,"end_character":67},"updated":"2018-07-19 11:52:44.000000000","message":"It\u0027s better to add cleanUp in _create_volume and _create_transfer methods but it could be done in a separate patch so I won\u0027t block patch for it","commit_id":"c0efaa1d46b762693f8fe3a09d0359ead3e097c4"}],"cinder/tests/unit/test_volume_transfer.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"81f52dfd6573612e6931557d2fd587439d22c6cf","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        usages \u003d db.quota_usage_get_all_by_project(self.ctxt,"},{"line_number":350,"context_line":"                                                   self.ctxt.project_id)"},{"line_number":351,"context_line":"        self.assertEqual(1, usages.get(\u0027volumes\u0027, {}).get(\u0027in_use\u0027, 0))"},{"line_number":352,"context_line":"        self.assertEqual(1, usages.get(\u0027snapshots\u0027, {}).get(\u0027in_use\u0027, 0))"}],"source_content_type":"text/x-python","patch_set":24,"id":"bf659307_45375000","line":352,"updated":"2018-04-02 13:06:57.000000000","message":"There should be a similar test of a failure case where transfer does not succeed because at least one snapshot is not in the available state.","commit_id":"900753b4b603c594fb649af140fce332db6ca070"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3a4b9ec22eb78a36433ddcad84d3bb33e593f3fa","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        usages \u003d db.quota_usage_get_all_by_project(self.ctxt,"},{"line_number":350,"context_line":"                                                   self.ctxt.project_id)"},{"line_number":351,"context_line":"        self.assertEqual(1, usages.get(\u0027volumes\u0027, {}).get(\u0027in_use\u0027, 0))"},{"line_number":352,"context_line":"        self.assertEqual(1, usages.get(\u0027snapshots\u0027, {}).get(\u0027in_use\u0027, 0))"}],"source_content_type":"text/x-python","patch_set":24,"id":"bf659307_578054f5","line":352,"in_reply_to":"bf659307_45375000","updated":"2018-04-03 07:22:36.000000000","message":"Sure, np.","commit_id":"900753b4b603c594fb649af140fce332db6ca070"}],"cinder/tests/unit/volume/test_rpcapi.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5c56d76a4427603f26fa774f8c9e86666e234f57","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                           no_snapshots\u003dTrue,"},{"line_number":278,"context_line":"                           expected_kwargs_diff\u003d{"},{"line_number":279,"context_line":"                               \u0027volume_id\u0027: self.fake_volume_obj.id},"},{"line_number":280,"context_line":"                           version\u003d\u00273.16\u0027)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    @ddt.data(None, \u0027mycluster\u0027)"},{"line_number":283,"context_line":"    def test_extend_volume(self, cluster_name):"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_2f358b8f","line":280,"range":{"start_line":280,"start_character":36,"end_line":280,"end_character":41},"updated":"2018-03-29 14:29:07.000000000","message":"I think this needs to be changed.","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"608140d2868fdb6a62b0837500142bc983501afe","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                           no_snapshots\u003dTrue,"},{"line_number":278,"context_line":"                           expected_kwargs_diff\u003d{"},{"line_number":279,"context_line":"                               \u0027volume_id\u0027: self.fake_volume_obj.id},"},{"line_number":280,"context_line":"                           version\u003d\u00273.16\u0027)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    @ddt.data(None, \u0027mycluster\u0027)"},{"line_number":283,"context_line":"    def test_extend_volume(self, cluster_name):"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_d3fcaab6","line":280,"range":{"start_line":280,"start_character":36,"end_line":280,"end_character":41},"in_reply_to":"bf659307_2f358b8f","updated":"2018-03-30 02:30:16.000000000","message":"yep, thanks.","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"}],"cinder/transfer/api.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"876588254157deeea44044fd2bde5d131578b27d","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            raise exception.InvalidVolume("},{"line_number":125,"context_line":"                reason\u003d_(\"transferring encrypted volume is not supported\"))"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        if no_snapshots is False:"},{"line_number":128,"context_line":"            snapshots \u003d self.db.snapshot_get_all_for_volume(context, volume_id)"},{"line_number":129,"context_line":"            for snapshot in snapshots:"},{"line_number":130,"context_line":"                if snapshot[\u0027status\u0027] !\u003d \"available\":"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_c38d6a7c","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":33},"updated":"2018-01-24 16:46:53.000000000","message":"if not no_snapshots","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6952415f7f2397459c1e26ba232ff82a4467aad0","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            raise exception.InvalidVolume("},{"line_number":125,"context_line":"                reason\u003d_(\"transferring encrypted volume is not supported\"))"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        if no_snapshots is False:"},{"line_number":128,"context_line":"            snapshots \u003d self.db.snapshot_get_all_for_volume(context, volume_id)"},{"line_number":129,"context_line":"            for snapshot in snapshots:"},{"line_number":130,"context_line":"                if snapshot[\u0027status\u0027] !\u003d \"available\":"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_ff2a698e","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":33},"in_reply_to":"5f93b717_c38d6a7c","updated":"2018-01-25 04:42:54.000000000","message":"Done","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"c0dca88b21d4f617bc56ee2d17e9affbc16a4c66","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                                    context.project_id,"},{"line_number":278,"context_line":"                                    transfer[\u0027no_snapshots\u0027])"},{"line_number":279,"context_line":"            QUOTAS.commit(context, reservations)"},{"line_number":280,"context_line":"            QUOTAS.commit(context, s_res)"},{"line_number":281,"context_line":"            if donor_reservations:"},{"line_number":282,"context_line":"                QUOTAS.commit(context, donor_reservations, project_id\u003ddonor_id)"},{"line_number":283,"context_line":"            if s_d_res:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_68d778c1","line":280,"range":{"start_line":280,"start_character":10,"end_line":280,"end_character":41},"updated":"2018-01-25 10:00:03.000000000","message":"s_res can be \"not defined\" here","commit_id":"abe3e53ff21e3f71426f82be464bf22b5bdb45c8"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3d7f61b12100c4bc19f2867e04af24659e41cc40","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                                    context.project_id,"},{"line_number":278,"context_line":"                                    transfer[\u0027no_snapshots\u0027])"},{"line_number":279,"context_line":"            QUOTAS.commit(context, reservations)"},{"line_number":280,"context_line":"            QUOTAS.commit(context, s_res)"},{"line_number":281,"context_line":"            if donor_reservations:"},{"line_number":282,"context_line":"                QUOTAS.commit(context, donor_reservations, project_id\u003ddonor_id)"},{"line_number":283,"context_line":"            if s_d_res:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_38f8cbe3","line":280,"range":{"start_line":280,"start_character":10,"end_line":280,"end_character":41},"in_reply_to":"5f93b717_68d778c1","updated":"2018-01-26 00:35:53.000000000","message":"yeah, forgot this after bump MV.","commit_id":"abe3e53ff21e3f71426f82be464bf22b5bdb45c8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"c0dca88b21d4f617bc56ee2d17e9affbc16a4c66","unresolved":false,"context_lines":[{"line_number":280,"context_line":"            QUOTAS.commit(context, s_res)"},{"line_number":281,"context_line":"            if donor_reservations:"},{"line_number":282,"context_line":"                QUOTAS.commit(context, donor_reservations, project_id\u003ddonor_id)"},{"line_number":283,"context_line":"            if s_d_res:"},{"line_number":284,"context_line":"                QUOTAS.commit(context, donor_reservations, project_id\u003ddonor_id)"},{"line_number":285,"context_line":"            LOG.info(\"Volume %s has been transferred.\", volume_id)"},{"line_number":286,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_a8eee085","line":283,"range":{"start_line":283,"start_character":15,"end_line":283,"end_character":22},"updated":"2018-01-25 10:00:03.000000000","message":"ditto.","commit_id":"abe3e53ff21e3f71426f82be464bf22b5bdb45c8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"c0dca88b21d4f617bc56ee2d17e9affbc16a4c66","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        except Exception:"},{"line_number":287,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":288,"context_line":"                QUOTAS.rollback(context, reservations)"},{"line_number":289,"context_line":"                QUOTAS.rollback(context, s_res)"},{"line_number":290,"context_line":"                if donor_reservations:"},{"line_number":291,"context_line":"                    QUOTAS.rollback(context, donor_reservations,"},{"line_number":292,"context_line":"                                    project_id\u003ddonor_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_e8f4e85d","line":289,"range":{"start_line":289,"start_character":40,"end_line":289,"end_character":46},"updated":"2018-01-25 10:00:03.000000000","message":"ditto","commit_id":"abe3e53ff21e3f71426f82be464bf22b5bdb45c8"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"c0dca88b21d4f617bc56ee2d17e9affbc16a4c66","unresolved":false,"context_lines":[{"line_number":290,"context_line":"                if donor_reservations:"},{"line_number":291,"context_line":"                    QUOTAS.rollback(context, donor_reservations,"},{"line_number":292,"context_line":"                                    project_id\u003ddonor_id)"},{"line_number":293,"context_line":"                if s_d_res:"},{"line_number":294,"context_line":"                    QUOTAS.rollback(context, donor_reservations,"},{"line_number":295,"context_line":"                                    project_id\u003ddonor_id)"},{"line_number":296,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f93b717_08e4b4ab","line":293,"range":{"start_line":293,"start_character":15,"end_line":293,"end_character":27},"updated":"2018-01-25 10:00:03.000000000","message":"ditto","commit_id":"abe3e53ff21e3f71426f82be464bf22b5bdb45c8"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"79fd087f9193a611242bf3a78306e1a98abea676","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                reserve_opts \u003d {\u0027snapshots\u0027: snapshot_num}"},{"line_number":168,"context_line":"            else:"},{"line_number":169,"context_line":"                reserve_opts \u003d {\u0027snapshots\u0027: snapshot_num,"},{"line_number":170,"context_line":"                                \u0027gigabytes\u0027: volume_size * snapshot_num}"},{"line_number":171,"context_line":"            QUOTAS.add_volume_type_opts(context,"},{"line_number":172,"context_line":"                                        reserve_opts,"},{"line_number":173,"context_line":"                                        volume_type_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f93b717_deae6f2d","line":170,"range":{"start_line":170,"start_character":45,"end_line":170,"end_character":71},"updated":"2018-01-26 03:09:06.000000000","message":"-1: snapshot may have different volume_size if the parent volume has been resized, so we should handle snapshot quota one by one.","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"7097925feb946fddcfad54aee4f585b334faedb1","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                reserve_opts \u003d {\u0027snapshots\u0027: snapshot_num}"},{"line_number":168,"context_line":"            else:"},{"line_number":169,"context_line":"                reserve_opts \u003d {\u0027snapshots\u0027: snapshot_num,"},{"line_number":170,"context_line":"                                \u0027gigabytes\u0027: volume_size * snapshot_num}"},{"line_number":171,"context_line":"            QUOTAS.add_volume_type_opts(context,"},{"line_number":172,"context_line":"                                        reserve_opts,"},{"line_number":173,"context_line":"                                        volume_type_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f93b717_ee34d44c","line":170,"range":{"start_line":170,"start_character":45,"end_line":170,"end_character":71},"in_reply_to":"5f93b717_deae6f2d","updated":"2018-01-26 06:56:51.000000000","message":"okay, we just need to add all snapshot.volume_size.","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"8e086856bb04160f76add84758375ea592dfe4c9","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                for snapshot in snapshots:"},{"line_number":171,"context_line":"                    volume_sizes +\u003d snapshot.volume_size"},{"line_number":172,"context_line":"                reserve_opts \u003d {\u0027snapshots\u0027: len(snapshots),"},{"line_number":173,"context_line":"                                \u0027gigabytes\u0027: volume_sizes}"},{"line_number":174,"context_line":"            QUOTAS.add_volume_type_opts(context,"},{"line_number":175,"context_line":"                                        reserve_opts,"},{"line_number":176,"context_line":"                                        volume_type_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f93b717_b1d071f9","line":173,"updated":"2018-01-26 07:32:26.000000000","message":"As the number of snapshots and the total size of snapshots are calculated multiple times here and below, I\u0027d suggest doing the calucation in the \"accept\" function, just before \"_handle_snapshot_quota\".","commit_id":"b34cdc397c97dd6e1bcb941db013187f7697e065"},{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"085078270e4d72da5025dbaf04d59807dea6cc24","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                for snapshot in snapshots:"},{"line_number":171,"context_line":"                    volume_sizes +\u003d snapshot.volume_size"},{"line_number":172,"context_line":"                reserve_opts \u003d {\u0027snapshots\u0027: len(snapshots),"},{"line_number":173,"context_line":"                                \u0027gigabytes\u0027: volume_sizes}"},{"line_number":174,"context_line":"            QUOTAS.add_volume_type_opts(context,"},{"line_number":175,"context_line":"                                        reserve_opts,"},{"line_number":176,"context_line":"                                        volume_type_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f93b717_28d04750","line":173,"in_reply_to":"5f93b717_0d155d4a","updated":"2018-01-29 01:24:01.000000000","message":"Not much difference here or in \u0027accept\u0027 function, but the key point is to reduce code duplication, this could also be done in this function.\n\nHere in \u0027_handle_snapshot_quota\u0027 we have four lines calling \u0027len(snapshots)\u0027, two for loops to calculate total size of snapshots, you can easily use an local variable to replace \u0027len(snapshots)\u0027, and replace two for loops with only one, something like:\n\nnum_snaps \u003d len(snapshots)\nif CONF.no_snapshot_gb_quota:\n    volume_sizes \u003d 0\n    reserve_opts \u003d ...\n    donor_reserve_opts \u003d ...\nelse:\n    for snapshot in snapshots:\n        volume_sizes +\u003d ...\n    reserve_opts \u003d ...\n    donor_reserve_opts \u003d ...\n\ntry:\n    (consuming reserve_opts)\nexcept:\n    ...\n\ntry:\n    (consuming donor_reserve_opts)\nexcept:\n    ...\n\nreturn ...","commit_id":"b34cdc397c97dd6e1bcb941db013187f7697e065"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"c72619ebfd4d605adf8757696390229a99ead42d","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                for snapshot in snapshots:"},{"line_number":171,"context_line":"                    volume_sizes +\u003d snapshot.volume_size"},{"line_number":172,"context_line":"                reserve_opts \u003d {\u0027snapshots\u0027: len(snapshots),"},{"line_number":173,"context_line":"                                \u0027gigabytes\u0027: volume_sizes}"},{"line_number":174,"context_line":"            QUOTAS.add_volume_type_opts(context,"},{"line_number":175,"context_line":"                                        reserve_opts,"},{"line_number":176,"context_line":"                                        volume_type_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f93b717_8e5d8216","line":173,"in_reply_to":"5f93b717_28d04750","updated":"2018-02-01 06:50:08.000000000","message":"That\u0027s better, thanks.","commit_id":"b34cdc397c97dd6e1bcb941db013187f7697e065"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"aa3e81cfde2e2b32a3b792f842877a7f95c2bfa8","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                for snapshot in snapshots:"},{"line_number":171,"context_line":"                    volume_sizes +\u003d snapshot.volume_size"},{"line_number":172,"context_line":"                reserve_opts \u003d {\u0027snapshots\u0027: len(snapshots),"},{"line_number":173,"context_line":"                                \u0027gigabytes\u0027: volume_sizes}"},{"line_number":174,"context_line":"            QUOTAS.add_volume_type_opts(context,"},{"line_number":175,"context_line":"                                        reserve_opts,"},{"line_number":176,"context_line":"                                        volume_type_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f93b717_0d155d4a","line":173,"in_reply_to":"5f93b717_b1d071f9","updated":"2018-01-29 01:04:59.000000000","message":"Why? Is there any different in here or in \u0027accept\u0027 function?\n\nIn here, we may don\u0027t need to calculate the size since if conf.no_snapshot_gb_quota\u003dTrue.","commit_id":"b34cdc397c97dd6e1bcb941db013187f7697e065"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"16e67a525b6a51d8b613eb0341facde2255dc234","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        volume_sizes \u003d 0"},{"line_number":167,"context_line":"        if not CONF.no_snapshot_gb_quota:"},{"line_number":168,"context_line":"            for snapshot in snapshots:"},{"line_number":169,"context_line":"                volume_sizes +\u003d snapshot.volume_size"},{"line_number":170,"context_line":"        try:"},{"line_number":171,"context_line":"            reserve_opts \u003d {\u0027snapshots\u0027: snapshots_num,"},{"line_number":172,"context_line":"                            \u0027gigabytes\u0027: volume_sizes}"}],"source_content_type":"text/x-python","patch_set":21,"id":"df7087c5_c844201e","line":169,"updated":"2018-03-12 20:45:30.000000000","message":"This adds the snapshot size into the volume quota?\n\nIs this done elsewhere in Cinder, too?","commit_id":"7e30f500ccd085f8be4799d1ddabac5797ea4949"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"35356f5fbb045158cd5985edba402755b7786cb3","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        volume_sizes \u003d 0"},{"line_number":167,"context_line":"        if not CONF.no_snapshot_gb_quota:"},{"line_number":168,"context_line":"            for snapshot in snapshots:"},{"line_number":169,"context_line":"                volume_sizes +\u003d snapshot.volume_size"},{"line_number":170,"context_line":"        try:"},{"line_number":171,"context_line":"            reserve_opts \u003d {\u0027snapshots\u0027: snapshots_num,"},{"line_number":172,"context_line":"                            \u0027gigabytes\u0027: volume_sizes}"}],"source_content_type":"text/x-python","patch_set":21,"id":"df7087c5_e992f856","line":169,"in_reply_to":"df7087c5_c844201e","updated":"2018-03-15 08:21:35.000000000","message":"This is for to adjust the snapshot\u0027s quota in new project which accept the transferring volume and snapshots.  We use \u0027volume_sizes\u0027 as snapshot\u0027s size like the creation process of snapshot.  I think this is not done elsewhere since this is the accept process.","commit_id":"7e30f500ccd085f8be4799d1ddabac5797ea4949"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6446c46e31e8cfd17ac032934acc4b465c6661e8","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        volume_sizes \u003d 0"},{"line_number":167,"context_line":"        if not CONF.no_snapshot_gb_quota:"},{"line_number":168,"context_line":"            for snapshot in snapshots:"},{"line_number":169,"context_line":"                volume_sizes +\u003d snapshot.volume_size"},{"line_number":170,"context_line":"        try:"},{"line_number":171,"context_line":"            reserve_opts \u003d {\u0027snapshots\u0027: snapshots_num,"},{"line_number":172,"context_line":"                            \u0027gigabytes\u0027: volume_sizes}"}],"source_content_type":"text/x-python","patch_set":21,"id":"bf659307_50321012","line":169,"in_reply_to":"df7087c5_c844201e","updated":"2018-03-28 01:01:05.000000000","message":"this didn\u0027t add the snapshot size into volume quota.  I just use \u0027volume_sizes\u0027 to calculate the snapshot size.  Maybe need to refresh this arg name...","commit_id":"7e30f500ccd085f8be4799d1ddabac5797ea4949"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"81f52dfd6573612e6931557d2fd587439d22c6cf","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            if donor_reservations:"},{"line_number":283,"context_line":"                QUOTAS.commit(context, donor_reservations, project_id\u003ddonor_id)"},{"line_number":284,"context_line":"            if s_d_res:"},{"line_number":285,"context_line":"                QUOTAS.commit(context, donor_reservations, project_id\u003ddonor_id)"},{"line_number":286,"context_line":"            LOG.info(\"Volume %s has been transferred.\", volume_id)"},{"line_number":287,"context_line":"        except Exception:"},{"line_number":288,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":24,"id":"bf659307_a562ec08","line":285,"range":{"start_line":285,"start_character":39,"end_line":285,"end_character":57},"updated":"2018-04-02 13:06:57.000000000","message":"Is this correct?  Not s_d_res?","commit_id":"900753b4b603c594fb649af140fce332db6ca070"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3a4b9ec22eb78a36433ddcad84d3bb33e593f3fa","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            if donor_reservations:"},{"line_number":283,"context_line":"                QUOTAS.commit(context, donor_reservations, project_id\u003ddonor_id)"},{"line_number":284,"context_line":"            if s_d_res:"},{"line_number":285,"context_line":"                QUOTAS.commit(context, donor_reservations, project_id\u003ddonor_id)"},{"line_number":286,"context_line":"            LOG.info(\"Volume %s has been transferred.\", volume_id)"},{"line_number":287,"context_line":"        except Exception:"},{"line_number":288,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":24,"id":"bf659307_37bfe0aa","line":285,"range":{"start_line":285,"start_character":39,"end_line":285,"end_character":57},"in_reply_to":"bf659307_a562ec08","updated":"2018-04-03 07:22:36.000000000","message":"Yes, good catch!","commit_id":"900753b4b603c594fb649af140fce332db6ca070"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"81f52dfd6573612e6931557d2fd587439d22c6cf","unresolved":false,"context_lines":[{"line_number":293,"context_line":"                    QUOTAS.rollback(context, donor_reservations,"},{"line_number":294,"context_line":"                                    project_id\u003ddonor_id)"},{"line_number":295,"context_line":"                if s_d_res:"},{"line_number":296,"context_line":"                    QUOTAS.rollback(context, donor_reservations,"},{"line_number":297,"context_line":"                                    project_id\u003ddonor_id)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        vol_ref \u003d self.db.volume_get(context, volume_id)"}],"source_content_type":"text/x-python","patch_set":24,"id":"bf659307_85532839","line":296,"range":{"start_line":296,"start_character":45,"end_line":296,"end_character":63},"updated":"2018-04-02 13:06:57.000000000","message":"Same","commit_id":"900753b4b603c594fb649af140fce332db6ca070"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3a4b9ec22eb78a36433ddcad84d3bb33e593f3fa","unresolved":false,"context_lines":[{"line_number":293,"context_line":"                    QUOTAS.rollback(context, donor_reservations,"},{"line_number":294,"context_line":"                                    project_id\u003ddonor_id)"},{"line_number":295,"context_line":"                if s_d_res:"},{"line_number":296,"context_line":"                    QUOTAS.rollback(context, donor_reservations,"},{"line_number":297,"context_line":"                                    project_id\u003ddonor_id)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        vol_ref \u003d self.db.volume_get(context, volume_id)"}],"source_content_type":"text/x-python","patch_set":24,"id":"bf659307_d7df840a","line":296,"range":{"start_line":296,"start_character":45,"end_line":296,"end_character":63},"in_reply_to":"bf659307_85532839","updated":"2018-04-03 07:22:36.000000000","message":"Done","commit_id":"900753b4b603c594fb649af140fce332db6ca070"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a4c2e267a645a725f7eee912b16ae37bbc52414","unresolved":false,"context_lines":[{"line_number":250,"context_line":"            LOG.exception(\"Failed to update quota donating volume\""},{"line_number":251,"context_line":"                          \" transfer id %s\", transfer_id)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        s_res \u003d None"},{"line_number":254,"context_line":"        s_d_res \u003d None"},{"line_number":255,"context_line":"        if transfer[\u0027no_snapshots\u0027] is False:"},{"line_number":256,"context_line":"            snapshots \u003d objects.SnapshotList.get_all_for_volume("}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_030494c5","line":253,"range":{"start_line":253,"start_character":8,"end_line":253,"end_character":13},"updated":"2018-04-06 02:29:06.000000000","message":"It would be great to use a little more verbose variable names to make it easier to track what these are.","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d352be926b3823dfa1d4a693cf28753eb62b4af1","unresolved":false,"context_lines":[{"line_number":250,"context_line":"            LOG.exception(\"Failed to update quota donating volume\""},{"line_number":251,"context_line":"                          \" transfer id %s\", transfer_id)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        s_res \u003d None"},{"line_number":254,"context_line":"        s_d_res \u003d None"},{"line_number":255,"context_line":"        if transfer[\u0027no_snapshots\u0027] is False:"},{"line_number":256,"context_line":"            snapshots \u003d objects.SnapshotList.get_all_for_volume("}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_6659c2fc","line":253,"range":{"start_line":253,"start_character":8,"end_line":253,"end_character":13},"in_reply_to":"bf659307_030494c5","updated":"2018-04-08 09:02:33.000000000","message":"sure.","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"79632ed5aca6f3c2357fbe3c327d0c7b53f4aec1","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            for snapshot in snapshots:"},{"line_number":130,"context_line":"                if snapshot[\u0027status\u0027] !\u003d \"available\":"},{"line_number":131,"context_line":"                    raise exception.InvalidSnapshot("},{"line_number":132,"context_line":"                        reason\u003d_(\"status must be available\"))"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        volume_utils.notify_about_volume_usage(context, volume_ref,"},{"line_number":135,"context_line":"                                               \"transfer.create.start\")"}],"source_content_type":"text/x-python","patch_set":37,"id":"9f6a8fd7_58bf90cf","line":132,"updated":"2018-05-02 14:16:19.000000000","message":"This should include info about which snapshot has an invalid status.","commit_id":"5710b44b928c4371606839ba21356f1dfb5bb3a5"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"5d712b5d374474eb4cb7783a24c7eb632ba998db","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            for snapshot in snapshots:"},{"line_number":130,"context_line":"                if snapshot[\u0027status\u0027] !\u003d \"available\":"},{"line_number":131,"context_line":"                    raise exception.InvalidSnapshot("},{"line_number":132,"context_line":"                        reason\u003d_(\"status must be available\"))"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        volume_utils.notify_about_volume_usage(context, volume_ref,"},{"line_number":135,"context_line":"                                               \"transfer.create.start\")"}],"source_content_type":"text/x-python","patch_set":37,"id":"5f7c97a3_428855c5","line":132,"in_reply_to":"9f6a8fd7_58bf90cf","updated":"2018-05-04 08:20:58.000000000","message":"Done","commit_id":"5710b44b928c4371606839ba21356f1dfb5bb3a5"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"02a3acc45c55f50392663c4f5bcc11bd77d3e5a9","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                                                **reserve_opts)"},{"line_number":193,"context_line":"        except exception.OverQuota as e:"},{"line_number":194,"context_line":"            donor_reservations \u003d None"},{"line_number":195,"context_line":"            LOG.exception(\"Failed to update quota donating volume\u0027s snapshots\")"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        return reservations, donor_reservations"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"5f7c97a3_9e43cf11","line":195,"range":{"start_line":195,"start_character":50,"end_line":195,"end_character":58},"updated":"2018-06-20 13:03:42.000000000","message":"providing?","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3da76dd3609e9f724d1d49504dc93268866deeed","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                                                **reserve_opts)"},{"line_number":193,"context_line":"        except exception.OverQuota as e:"},{"line_number":194,"context_line":"            donor_reservations \u003d None"},{"line_number":195,"context_line":"            LOG.exception(\"Failed to update quota donating volume\u0027s snapshots\")"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        return reservations, donor_reservations"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"5f7c97a3_1de8e9dc","line":195,"range":{"start_line":195,"start_character":50,"end_line":195,"end_character":58},"in_reply_to":"5f7c97a3_9e43cf11","updated":"2018-06-23 03:33:19.000000000","message":"Done","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"61c0c015c829f909c7fac5de7bc5127b260f89f3","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                if snapshot[\u0027status\u0027] !\u003d \"available\":"},{"line_number":131,"context_line":"                    msg \u003d _(\"snapshot: %s status must be \""},{"line_number":132,"context_line":"                            \"available\") % snapshot[\u0027id\u0027]"},{"line_number":133,"context_line":"                    raise exception.InvalidSnapshot(reason\u003dmsg)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        volume_utils.notify_about_volume_usage(context, volume_ref,"},{"line_number":136,"context_line":"                                               \"transfer.create.start\")"}],"source_content_type":"text/x-python","patch_set":51,"id":"5f7c97a3_18483788","line":133,"updated":"2018-07-16 14:15:13.000000000","message":"There should also be a check here that validates that the encryption_key_id field for each snapshot is None.\n\nI believe this should always be true, but we should check anyway to make sure we don\u0027t end up causing problems with volumes/snapshots that aren\u0027t in quite the right state for whatever reason.","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cc1038d6d4591258e30f9014b91db9399c5c5eec","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                                                **reserve_opts)"},{"line_number":193,"context_line":"        except exception.OverQuota as e:"},{"line_number":194,"context_line":"            donor_reservations \u003d None"},{"line_number":195,"context_line":"            LOG.exception(\"Failed to update quota providing volume\u0027s \""},{"line_number":196,"context_line":"                          \"snapshots\")"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        return reservations, donor_reservations"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"5f7c97a3_3ad92b83","line":196,"range":{"start_line":195,"start_character":25,"end_line":196,"end_character":38},"updated":"2018-07-18 13:42:37.000000000","message":"I think this should be in _() .  Also I think this would make more sense if it indicated that this was due to over quota.  I.E. \"Failed to update volume providing snapshots quota: Over quota.\"","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0df37056ed33d3f939a05e9afb7316f8d30da61e","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                                                **reserve_opts)"},{"line_number":193,"context_line":"        except exception.OverQuota as e:"},{"line_number":194,"context_line":"            donor_reservations \u003d None"},{"line_number":195,"context_line":"            LOG.exception(\"Failed to update quota providing volume\u0027s \""},{"line_number":196,"context_line":"                          \"snapshots\")"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        return reservations, donor_reservations"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"5f7c97a3_40617b10","line":196,"range":{"start_line":195,"start_character":25,"end_line":196,"end_character":38},"in_reply_to":"5f7c97a3_0d77490a","updated":"2018-07-19 13:35:34.000000000","message":"Correct, _() is not needed here.","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"13cc309e7c1ba11b443065786ac2f97467094f66","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                                                **reserve_opts)"},{"line_number":193,"context_line":"        except exception.OverQuota as e:"},{"line_number":194,"context_line":"            donor_reservations \u003d None"},{"line_number":195,"context_line":"            LOG.exception(\"Failed to update quota providing volume\u0027s \""},{"line_number":196,"context_line":"                          \"snapshots\")"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        return reservations, donor_reservations"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"5f7c97a3_0d77490a","line":196,"range":{"start_line":195,"start_character":25,"end_line":196,"end_character":38},"in_reply_to":"5f7c97a3_3ad92b83","updated":"2018-07-19 01:43:12.000000000","message":"Seems no need _() since didn\u0027t use it in exception message. But update the sentence to make more sense.","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"}],"cinder/volume/api.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"876588254157deeea44044fd2bde5d131578b27d","unresolved":false,"context_lines":[{"line_number":832,"context_line":"                                                     volume,"},{"line_number":833,"context_line":"                                                     new_user,"},{"line_number":834,"context_line":"                                                     new_project,"},{"line_number":835,"context_line":"                                                     no_snapshots)"},{"line_number":836,"context_line":"        LOG.info(\"Transfer volume completed successfully.\","},{"line_number":837,"context_line":"                 resource\u003dvolume)"},{"line_number":838,"context_line":"        return results"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_23f20e08","line":835,"range":{"start_line":835,"start_character":53,"end_line":835,"end_character":65},"updated":"2018-01-24 16:46:53.000000000","message":"no_snapshots\u003dno_snapshots","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6952415f7f2397459c1e26ba232ff82a4467aad0","unresolved":false,"context_lines":[{"line_number":832,"context_line":"                                                     volume,"},{"line_number":833,"context_line":"                                                     new_user,"},{"line_number":834,"context_line":"                                                     new_project,"},{"line_number":835,"context_line":"                                                     no_snapshots)"},{"line_number":836,"context_line":"        LOG.info(\"Transfer volume completed successfully.\","},{"line_number":837,"context_line":"                 resource\u003dvolume)"},{"line_number":838,"context_line":"        return results"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_ba2cef99","line":835,"range":{"start_line":835,"start_character":53,"end_line":835,"end_character":65},"in_reply_to":"5f93b717_23f20e08","updated":"2018-01-25 04:42:54.000000000","message":"Done","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"}],"cinder/volume/drivers/solidfire.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d1ea7b06c1369324b06361a28a46f97aa0e83448","unresolved":false,"context_lines":[{"line_number":1954,"context_line":"        self._issue_api_request(\u0027ModifyVolume\u0027, params)"},{"line_number":1955,"context_line":""},{"line_number":1956,"context_line":"    def accept_transfer(self, context, volume,"},{"line_number":1957,"context_line":"                        new_user, new_project, no_snapshots\u003dFalse):"},{"line_number":1958,"context_line":""},{"line_number":1959,"context_line":"        sfaccount \u003d self._get_sfaccount(volume[\u0027project_id\u0027])"},{"line_number":1960,"context_line":"        params \u003d {\u0027accountID\u0027: sfaccount[\u0027accountID\u0027]}"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_e287cc0e","line":1957,"updated":"2018-01-15 20:13:57.000000000","message":"I suspect this driver will need to fail if no_snapshots\u003dFalse for now, until support is added to make that case work correctly?","commit_id":"3b59a61891dd076092ff0d3084b2764e2ee7e7d9"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"2e0cda54dab7b00b507cfcc49a9e97b6cc17e56a","unresolved":false,"context_lines":[{"line_number":1954,"context_line":"        self._issue_api_request(\u0027ModifyVolume\u0027, params)"},{"line_number":1955,"context_line":""},{"line_number":1956,"context_line":"    def accept_transfer(self, context, volume,"},{"line_number":1957,"context_line":"                        new_user, new_project, no_snapshots\u003dFalse):"},{"line_number":1958,"context_line":""},{"line_number":1959,"context_line":"        sfaccount \u003d self._get_sfaccount(volume[\u0027project_id\u0027])"},{"line_number":1960,"context_line":"        params \u003d {\u0027accountID\u0027: sfaccount[\u0027accountID\u0027]}"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_1e1d7065","line":1957,"in_reply_to":"7f96bb07_e287cc0e","updated":"2018-01-16 00:46:14.000000000","message":"ah, I\u0027m not sure if driver need to fail if no_snapshots\u003dFalse.  I added this argument just for maybe driver need this.  I will remove  it now and let driver guys to decide if this is needed.","commit_id":"3b59a61891dd076092ff0d3084b2764e2ee7e7d9"}],"cinder/volume/drivers/vmware/vmdk.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d1ea7b06c1369324b06361a28a46f97aa0e83448","unresolved":false,"context_lines":[{"line_number":2170,"context_line":"        self._create_cloned_volume(volume, src_vref)"},{"line_number":2171,"context_line":""},{"line_number":2172,"context_line":"    def accept_transfer(self, context, volume, new_user, new_project,"},{"line_number":2173,"context_line":"                        no_snapshots\u003dFalse):"},{"line_number":2174,"context_line":"        \"\"\"Accept the transfer of a volume for a new user/project.\"\"\""},{"line_number":2175,"context_line":"        backing \u003d self.volumeops.get_backing(volume.name, volume.id)"},{"line_number":2176,"context_line":"        if backing:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_c299706e","line":2173,"updated":"2018-01-15 20:13:57.000000000","message":"Ditto, won\u0027t no_snapshots\u003dFalse cause problems here unless some code is added to handle transfer of snapshots?","commit_id":"3b59a61891dd076092ff0d3084b2764e2ee7e7d9"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"2e0cda54dab7b00b507cfcc49a9e97b6cc17e56a","unresolved":false,"context_lines":[{"line_number":2170,"context_line":"        self._create_cloned_volume(volume, src_vref)"},{"line_number":2171,"context_line":""},{"line_number":2172,"context_line":"    def accept_transfer(self, context, volume, new_user, new_project,"},{"line_number":2173,"context_line":"                        no_snapshots\u003dFalse):"},{"line_number":2174,"context_line":"        \"\"\"Accept the transfer of a volume for a new user/project.\"\"\""},{"line_number":2175,"context_line":"        backing \u003d self.volumeops.get_backing(volume.name, volume.id)"},{"line_number":2176,"context_line":"        if backing:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_be255cad","line":2173,"in_reply_to":"7f96bb07_c299706e","updated":"2018-01-16 00:46:14.000000000","message":"will remove this argument now.","commit_id":"3b59a61891dd076092ff0d3084b2764e2ee7e7d9"}],"cinder/volume/manager.py":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"876588254157deeea44044fd2bde5d131578b27d","unresolved":false,"context_lines":[{"line_number":1852,"context_line":"                 resource\u003dsnapshot)"},{"line_number":1853,"context_line":""},{"line_number":1854,"context_line":"    def accept_transfer(self, context, volume_id, new_user, new_project,"},{"line_number":1855,"context_line":"                        no_snapshots\u003dFalse):"},{"line_number":1856,"context_line":"        # NOTE(flaper87): Verify the driver is enabled"},{"line_number":1857,"context_line":"        # before going forward. The exception will be caught"},{"line_number":1858,"context_line":"        # and the volume status updated."}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_03c27286","line":1855,"range":{"start_line":1855,"start_character":23,"end_line":1855,"end_character":42},"updated":"2018-01-24 16:46:53.000000000","message":"it\u0027s not used here?","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6952415f7f2397459c1e26ba232ff82a4467aad0","unresolved":false,"context_lines":[{"line_number":1852,"context_line":"                 resource\u003dsnapshot)"},{"line_number":1853,"context_line":""},{"line_number":1854,"context_line":"    def accept_transfer(self, context, volume_id, new_user, new_project,"},{"line_number":1855,"context_line":"                        no_snapshots\u003dFalse):"},{"line_number":1856,"context_line":"        # NOTE(flaper87): Verify the driver is enabled"},{"line_number":1857,"context_line":"        # before going forward. The exception will be caught"},{"line_number":1858,"context_line":"        # and the volume status updated."}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_ba514f11","line":1855,"range":{"start_line":1855,"start_character":23,"end_line":1855,"end_character":42},"in_reply_to":"5f93b717_03c27286","updated":"2018-01-25 04:42:54.000000000","message":"yes, now it\u0027s not used,  but in case future we want to use it in driver, I put this argument here.","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"}],"cinder/volume/rpcapi.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"a4581b1693803c974ec78e86ef48491a8ba53353","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        3.15 - Add revert_to_snapshot method"},{"line_number":136,"context_line":"    \"\"\""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    RPC_API_VERSION \u003d \u00273.15\u0027"},{"line_number":139,"context_line":"    RPC_DEFAULT_VERSION \u003d \u00273.0\u0027"},{"line_number":140,"context_line":"    TOPIC \u003d constants.VOLUME_TOPIC"},{"line_number":141,"context_line":"    BINARY \u003d constants.VOLUME_BINARY"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_20aa2518","line":138,"range":{"start_line":138,"start_character":4,"end_line":138,"end_character":28},"updated":"2018-01-18 10:31:39.000000000","message":"Please bump the RPC version and add a comment explaining the change.","commit_id":"17f9373b46d30a18c95ef7af0475d43c8900e406"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"086b51c9f1b5d457423d79039c21987ed0173639","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        3.15 - Add revert_to_snapshot method"},{"line_number":136,"context_line":"    \"\"\""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    RPC_API_VERSION \u003d \u00273.15\u0027"},{"line_number":139,"context_line":"    RPC_DEFAULT_VERSION \u003d \u00273.0\u0027"},{"line_number":140,"context_line":"    TOPIC \u003d constants.VOLUME_TOPIC"},{"line_number":141,"context_line":"    BINARY \u003d constants.VOLUME_BINARY"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_ca191fd7","line":138,"range":{"start_line":138,"start_character":4,"end_line":138,"end_character":28},"in_reply_to":"7f96bb07_20aa2518","updated":"2018-01-18 11:08:35.000000000","message":"I am agree with you. This way of realization is better.","commit_id":"17f9373b46d30a18c95ef7af0475d43c8900e406"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"edb4ec2db3df606e7729ae8c310ee6c80ccdb5c1","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        3.15 - Add revert_to_snapshot method"},{"line_number":136,"context_line":"    \"\"\""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    RPC_API_VERSION \u003d \u00273.15\u0027"},{"line_number":139,"context_line":"    RPC_DEFAULT_VERSION \u003d \u00273.0\u0027"},{"line_number":140,"context_line":"    TOPIC \u003d constants.VOLUME_TOPIC"},{"line_number":141,"context_line":"    BINARY \u003d constants.VOLUME_BINARY"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_627b39f4","line":138,"range":{"start_line":138,"start_character":4,"end_line":138,"end_character":28},"in_reply_to":"7f96bb07_ca191fd7","updated":"2018-01-19 01:08:18.000000000","message":"@Michal and Brin,  okay","commit_id":"17f9373b46d30a18c95ef7af0475d43c8900e406"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"a4581b1693803c974ec78e86ef48491a8ba53353","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        cctxt \u003d self._get_cctxt(fanout\u003dTrue)"},{"line_number":239,"context_line":"        cctxt.cast(ctxt, \u0027publish_service_capabilities\u0027)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def accept_transfer(self, ctxt, volume, new_user, new_project,"},{"line_number":242,"context_line":"                        no_snapshots\u003dFalse):"},{"line_number":243,"context_line":"        cctxt \u003d self._get_cctxt(volume.service_topic_queue)"},{"line_number":244,"context_line":"        return cctxt.call(ctxt, \u0027accept_transfer\u0027, volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":245,"context_line":"                          new_user\u003dnew_user, new_project\u003dnew_project,"},{"line_number":246,"context_line":"                          no_snapshots\u003dno_snapshots)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def extend_volume(self, ctxt, volume, new_size, reservations):"},{"line_number":249,"context_line":"        cctxt \u003d self._get_cctxt(volume.service_topic_queue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_207f85ab","line":246,"range":{"start_line":241,"start_character":0,"end_line":246,"end_character":52},"updated":"2018-01-18 10:31:39.000000000","message":"This should be done in backward compatible way. See detach_volume for an example of how to remove an argument when RPC API is locked to a certain version.","commit_id":"17f9373b46d30a18c95ef7af0475d43c8900e406"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"edb4ec2db3df606e7729ae8c310ee6c80ccdb5c1","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        cctxt \u003d self._get_cctxt(fanout\u003dTrue)"},{"line_number":239,"context_line":"        cctxt.cast(ctxt, \u0027publish_service_capabilities\u0027)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def accept_transfer(self, ctxt, volume, new_user, new_project,"},{"line_number":242,"context_line":"                        no_snapshots\u003dFalse):"},{"line_number":243,"context_line":"        cctxt \u003d self._get_cctxt(volume.service_topic_queue)"},{"line_number":244,"context_line":"        return cctxt.call(ctxt, \u0027accept_transfer\u0027, volume_id\u003dvolume[\u0027id\u0027],"},{"line_number":245,"context_line":"                          new_user\u003dnew_user, new_project\u003dnew_project,"},{"line_number":246,"context_line":"                          no_snapshots\u003dno_snapshots)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def extend_volume(self, ctxt, volume, new_size, reservations):"},{"line_number":249,"context_line":"        cctxt \u003d self._get_cctxt(volume.service_topic_queue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_827e85e1","line":246,"range":{"start_line":241,"start_character":0,"end_line":246,"end_character":52},"in_reply_to":"7f96bb07_207f85ab","updated":"2018-01-19 01:08:18.000000000","message":"sure, np","commit_id":"17f9373b46d30a18c95ef7af0475d43c8900e406"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"876588254157deeea44044fd2bde5d131578b27d","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        3.14 - Adds enable_replication, disable_replication,"},{"line_number":134,"context_line":"               failover_replication, and list_replication_targets."},{"line_number":135,"context_line":"        3.15 - Add revert_to_snapshot method"},{"line_number":136,"context_line":"        3.16 - Add no_snapshots to transfer method"},{"line_number":137,"context_line":"    \"\"\""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    RPC_API_VERSION \u003d \u00273.16\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_e33ae6cb","line":136,"range":{"start_line":136,"start_character":35,"end_line":136,"end_character":43},"updated":"2018-01-24 16:46:53.000000000","message":"accept_transfer","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6952415f7f2397459c1e26ba232ff82a4467aad0","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        3.14 - Adds enable_replication, disable_replication,"},{"line_number":134,"context_line":"               failover_replication, and list_replication_targets."},{"line_number":135,"context_line":"        3.15 - Add revert_to_snapshot method"},{"line_number":136,"context_line":"        3.16 - Add no_snapshots to transfer method"},{"line_number":137,"context_line":"    \"\"\""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    RPC_API_VERSION \u003d \u00273.16\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f93b717_7a5bc72d","line":136,"range":{"start_line":136,"start_character":35,"end_line":136,"end_character":43},"in_reply_to":"5f93b717_e33ae6cb","updated":"2018-01-25 04:42:54.000000000","message":"Done","commit_id":"f44ec6de33effda2319e80ffb08bc386aced36d1"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5c56d76a4427603f26fa774f8c9e86666e234f57","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                    \u0027new_project\u0027: new_project,"},{"line_number":247,"context_line":"                    \u0027no_snapshots\u0027: no_snapshots"},{"line_number":248,"context_line":"                    }"},{"line_number":249,"context_line":"        cctxt \u003d self._get_cctxt(volume.service_topic_queue, (\u00273.16\u0027, \u00273.0\u0027))"},{"line_number":250,"context_line":"        if not self.client.can_send_version(\u00273.16\u0027):"},{"line_number":251,"context_line":"            msg_args.pop(\u0027no_snapshots\u0027)"},{"line_number":252,"context_line":"        return cctxt.call(ctxt, \u0027accept_transfer\u0027, **msg_args)"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_af20bb49","line":249,"range":{"start_line":249,"start_character":62,"end_line":249,"end_character":66},"updated":"2018-03-29 14:29:07.000000000","message":"I think this is old.","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"608140d2868fdb6a62b0837500142bc983501afe","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                    \u0027new_project\u0027: new_project,"},{"line_number":247,"context_line":"                    \u0027no_snapshots\u0027: no_snapshots"},{"line_number":248,"context_line":"                    }"},{"line_number":249,"context_line":"        cctxt \u003d self._get_cctxt(volume.service_topic_queue, (\u00273.16\u0027, \u00273.0\u0027))"},{"line_number":250,"context_line":"        if not self.client.can_send_version(\u00273.16\u0027):"},{"line_number":251,"context_line":"            msg_args.pop(\u0027no_snapshots\u0027)"},{"line_number":252,"context_line":"        return cctxt.call(ctxt, \u0027accept_transfer\u0027, **msg_args)"}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_f3568e5c","line":249,"range":{"start_line":249,"start_character":62,"end_line":249,"end_character":66},"in_reply_to":"bf659307_af20bb49","updated":"2018-03-30 02:30:16.000000000","message":"Sorry Jay, I didn\u0027t get this point,  the RPC_API_VERSION in master is 3.15.  So there should be 3.16.  Anything wrong here?","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5c56d76a4427603f26fa774f8c9e86666e234f57","unresolved":false,"context_lines":[{"line_number":247,"context_line":"                    \u0027no_snapshots\u0027: no_snapshots"},{"line_number":248,"context_line":"                    }"},{"line_number":249,"context_line":"        cctxt \u003d self._get_cctxt(volume.service_topic_queue, (\u00273.16\u0027, \u00273.0\u0027))"},{"line_number":250,"context_line":"        if not self.client.can_send_version(\u00273.16\u0027):"},{"line_number":251,"context_line":"            msg_args.pop(\u0027no_snapshots\u0027)"},{"line_number":252,"context_line":"        return cctxt.call(ctxt, \u0027accept_transfer\u0027, **msg_args)"},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"bf659307_6f1623f4","line":250,"range":{"start_line":250,"start_character":45,"end_line":250,"end_character":50},"updated":"2018-03-29 14:29:07.000000000","message":"This needs an update as well.","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"}],"doc/source/cli/cli-manage-volumes.rst":[{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"8729964bc76664087d64b37cc5f64e596bc017ac","unresolved":false,"context_lines":[{"line_number":409,"context_line":"snapshots by default. That means if volume has some snapshots, when user"},{"line_number":410,"context_line":"transfer volume from one owner to another, then those snapshots will be"},{"line_number":411,"context_line":"transferred with volume too. If user didn\u0027t want to transfer snapshots,"},{"line_number":412,"context_line":"they need to specify the a new optional argument `--\u003cno_snapshots\u003e True`."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"df7087c5_c80fe985","line":412,"range":{"start_line":412,"start_character":47,"end_line":412,"end_character":73},"updated":"2018-03-15 12:03:36.000000000","message":"Please update this as well :)","commit_id":"8146a076bf044c17d49ea63099fbe8ea4988e3a4"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"6446c46e31e8cfd17ac032934acc4b465c6661e8","unresolved":false,"context_lines":[{"line_number":409,"context_line":"snapshots by default. That means if volume has some snapshots, when user"},{"line_number":410,"context_line":"transfer volume from one owner to another, then those snapshots will be"},{"line_number":411,"context_line":"transferred with volume too. If user didn\u0027t want to transfer snapshots,"},{"line_number":412,"context_line":"they need to specify the a new optional argument `--\u003cno_snapshots\u003e True`."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"bf659307_509690f2","line":412,"range":{"start_line":412,"start_character":47,"end_line":412,"end_character":73},"in_reply_to":"df7087c5_c80fe985","updated":"2018-03-28 01:01:05.000000000","message":"sure, thanks","commit_id":"8146a076bf044c17d49ea63099fbe8ea4988e3a4"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5c56d76a4427603f26fa774f8c9e86666e234f57","unresolved":false,"context_lines":[{"line_number":406,"context_line":"recipient, or new owner, accepts the transfer by using the ID and key."},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"After microversion 3.52, Cinder will support to transfer volume with"},{"line_number":409,"context_line":"snapshots by default. That means if volume has some snapshots, when user"},{"line_number":410,"context_line":"transfer volume from one owner to another, then those snapshots will be"},{"line_number":411,"context_line":"transferred with volume too. If user didn\u0027t want to transfer snapshots,"},{"line_number":412,"context_line":"they need to specify the a new optional argument `--\u003cno_snapshots\u003e`."},{"line_number":413,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"bf659307_afe51b0b","line":410,"range":{"start_line":409,"start_character":63,"end_line":410,"end_character":15},"updated":"2018-03-29 14:29:07.000000000","message":"when a user transfers a volume","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"608140d2868fdb6a62b0837500142bc983501afe","unresolved":false,"context_lines":[{"line_number":406,"context_line":"recipient, or new owner, accepts the transfer by using the ID and key."},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"After microversion 3.52, Cinder will support to transfer volume with"},{"line_number":409,"context_line":"snapshots by default. That means if volume has some snapshots, when user"},{"line_number":410,"context_line":"transfer volume from one owner to another, then those snapshots will be"},{"line_number":411,"context_line":"transferred with volume too. If user didn\u0027t want to transfer snapshots,"},{"line_number":412,"context_line":"they need to specify the a new optional argument `--\u003cno_snapshots\u003e`."},{"line_number":413,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"bf659307_93c4f2f6","line":410,"range":{"start_line":409,"start_character":63,"end_line":410,"end_character":15},"in_reply_to":"bf659307_afe51b0b","updated":"2018-03-30 02:30:16.000000000","message":"Done","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5c56d76a4427603f26fa774f8c9e86666e234f57","unresolved":false,"context_lines":[{"line_number":408,"context_line":"After microversion 3.52, Cinder will support to transfer volume with"},{"line_number":409,"context_line":"snapshots by default. That means if volume has some snapshots, when user"},{"line_number":410,"context_line":"transfer volume from one owner to another, then those snapshots will be"},{"line_number":411,"context_line":"transferred with volume too. If user didn\u0027t want to transfer snapshots,"},{"line_number":412,"context_line":"they need to specify the a new optional argument `--\u003cno_snapshots\u003e`."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":23,"id":"bf659307_2fc34b5f","line":411,"range":{"start_line":411,"start_character":29,"end_line":411,"end_character":43},"updated":"2018-03-29 14:29:07.000000000","message":"If users don\u0027t want","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5c56d76a4427603f26fa774f8c9e86666e234f57","unresolved":false,"context_lines":[{"line_number":408,"context_line":"After microversion 3.52, Cinder will support to transfer volume with"},{"line_number":409,"context_line":"snapshots by default. That means if volume has some snapshots, when user"},{"line_number":410,"context_line":"transfer volume from one owner to another, then those snapshots will be"},{"line_number":411,"context_line":"transferred with volume too. If user didn\u0027t want to transfer snapshots,"},{"line_number":412,"context_line":"they need to specify the a new optional argument `--\u003cno_snapshots\u003e`."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":23,"id":"bf659307_0fbe87d4","line":411,"range":{"start_line":411,"start_character":23,"end_line":411,"end_character":27},"updated":"2018-03-29 14:29:07.000000000","message":"as well","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"608140d2868fdb6a62b0837500142bc983501afe","unresolved":false,"context_lines":[{"line_number":408,"context_line":"After microversion 3.52, Cinder will support to transfer volume with"},{"line_number":409,"context_line":"snapshots by default. That means if volume has some snapshots, when user"},{"line_number":410,"context_line":"transfer volume from one owner to another, then those snapshots will be"},{"line_number":411,"context_line":"transferred with volume too. If user didn\u0027t want to transfer snapshots,"},{"line_number":412,"context_line":"they need to specify the a new optional argument `--\u003cno_snapshots\u003e`."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":23,"id":"bf659307_b3a81620","line":411,"range":{"start_line":411,"start_character":23,"end_line":411,"end_character":27},"in_reply_to":"bf659307_0fbe87d4","updated":"2018-03-30 02:30:16.000000000","message":"Done","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"608140d2868fdb6a62b0837500142bc983501afe","unresolved":false,"context_lines":[{"line_number":408,"context_line":"After microversion 3.52, Cinder will support to transfer volume with"},{"line_number":409,"context_line":"snapshots by default. That means if volume has some snapshots, when user"},{"line_number":410,"context_line":"transfer volume from one owner to another, then those snapshots will be"},{"line_number":411,"context_line":"transferred with volume too. If user didn\u0027t want to transfer snapshots,"},{"line_number":412,"context_line":"they need to specify the a new optional argument `--\u003cno_snapshots\u003e`."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":23,"id":"bf659307_936952fa","line":411,"range":{"start_line":411,"start_character":29,"end_line":411,"end_character":43},"in_reply_to":"bf659307_2fc34b5f","updated":"2018-03-30 02:30:16.000000000","message":"Done","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a4c2e267a645a725f7eee912b16ae37bbc52414","unresolved":false,"context_lines":[{"line_number":408,"context_line":"After microversion 3.52, Cinder will support to transfer volume with"},{"line_number":409,"context_line":"snapshots by default. That means if volume has some snapshots, when a user"},{"line_number":410,"context_line":"transfers a volume from one owner to another, then those snapshots will be"},{"line_number":411,"context_line":"transferred with volume as well. If users don\u0027t want to transfer snapshots,"},{"line_number":412,"context_line":"they need to specify the a new optional argument `--\u003cno_snapshots\u003e`."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":26,"id":"bf659307_230998dc","line":411,"range":{"start_line":411,"start_character":12,"end_line":411,"end_character":23},"updated":"2018-04-06 02:29:06.000000000","message":"s/with volume/with the volume/","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d352be926b3823dfa1d4a693cf28753eb62b4af1","unresolved":false,"context_lines":[{"line_number":408,"context_line":"After microversion 3.52, Cinder will support to transfer volume with"},{"line_number":409,"context_line":"snapshots by default. That means if volume has some snapshots, when a user"},{"line_number":410,"context_line":"transfers a volume from one owner to another, then those snapshots will be"},{"line_number":411,"context_line":"transferred with volume as well. If users don\u0027t want to transfer snapshots,"},{"line_number":412,"context_line":"they need to specify the a new optional argument `--\u003cno_snapshots\u003e`."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":26,"id":"bf659307_862ad629","line":411,"range":{"start_line":411,"start_character":12,"end_line":411,"end_character":23},"in_reply_to":"bf659307_230998dc","updated":"2018-04-08 09:02:33.000000000","message":"Done","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a4c2e267a645a725f7eee912b16ae37bbc52414","unresolved":false,"context_lines":[{"line_number":409,"context_line":"snapshots by default. That means if volume has some snapshots, when a user"},{"line_number":410,"context_line":"transfers a volume from one owner to another, then those snapshots will be"},{"line_number":411,"context_line":"transferred with volume as well. If users don\u0027t want to transfer snapshots,"},{"line_number":412,"context_line":"they need to specify the a new optional argument `--\u003cno_snapshots\u003e`."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":".. note::"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"bf659307_e312c009","line":412,"range":{"start_line":412,"start_character":21,"end_line":412,"end_character":30},"updated":"2018-04-06 02:29:06.000000000","message":"s/the a new/the new/","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a4c2e267a645a725f7eee912b16ae37bbc52414","unresolved":false,"context_lines":[{"line_number":448,"context_line":""},{"line_number":449,"context_line":"      $ openstack volume transfer request create \u003cvolume\u003e"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    \u003cvolume\u003e"},{"line_number":452,"context_line":"       Name or ID of volume to transfer."},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    --\u003cno_snapshots\u003e"}],"source_content_type":"text/x-rst","patch_set":26,"id":"bf659307_e387200f","line":451,"updated":"2018-04-06 02:29:06.000000000","message":"We might want to list out the command line arguments as they are done on line 632 so they are a definition list.","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d352be926b3823dfa1d4a693cf28753eb62b4af1","unresolved":false,"context_lines":[{"line_number":448,"context_line":""},{"line_number":449,"context_line":"      $ openstack volume transfer request create \u003cvolume\u003e"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    \u003cvolume\u003e"},{"line_number":452,"context_line":"       Name or ID of volume to transfer."},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    --\u003cno_snapshots\u003e"}],"source_content_type":"text/x-rst","patch_set":26,"id":"bf659307_e61ab215","line":451,"in_reply_to":"bf659307_e387200f","updated":"2018-04-08 09:02:33.000000000","message":"Done","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a4c2e267a645a725f7eee912b16ae37bbc52414","unresolved":false,"context_lines":[{"line_number":451,"context_line":"    \u003cvolume\u003e"},{"line_number":452,"context_line":"       Name or ID of volume to transfer."},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    --\u003cno_snapshots\u003e"},{"line_number":455,"context_line":"       True or False to transfer volume without snapshots."},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"   The volume must be in an ``available`` state or the request will be"}],"source_content_type":"text/x-rst","patch_set":26,"id":"bf659307_43012caf","line":454,"updated":"2018-04-06 02:29:06.000000000","message":"Remove the \u003c\u003e around no_snapshots, and change no_snapshots to no-snapshots.","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d352be926b3823dfa1d4a693cf28753eb62b4af1","unresolved":false,"context_lines":[{"line_number":451,"context_line":"    \u003cvolume\u003e"},{"line_number":452,"context_line":"       Name or ID of volume to transfer."},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    --\u003cno_snapshots\u003e"},{"line_number":455,"context_line":"       True or False to transfer volume without snapshots."},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"   The volume must be in an ``available`` state or the request will be"}],"source_content_type":"text/x-rst","patch_set":26,"id":"bf659307_461cbe12","line":454,"in_reply_to":"bf659307_43012caf","updated":"2018-04-08 09:02:33.000000000","message":"Done","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a4c2e267a645a725f7eee912b16ae37bbc52414","unresolved":false,"context_lines":[{"line_number":452,"context_line":"       Name or ID of volume to transfer."},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    --\u003cno_snapshots\u003e"},{"line_number":455,"context_line":"       True or False to transfer volume without snapshots."},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"   The volume must be in an ``available`` state or the request will be"},{"line_number":458,"context_line":"   denied. If the transfer request is valid in the database (that is, it"}],"source_content_type":"text/x-rst","patch_set":26,"id":"bf659307_032d7445","line":455,"updated":"2018-04-06 02:29:06.000000000","message":"I don\u0027t believe we want to have to pass \"True\" or \"False\" to this, it will just be a flag that is set on the command line.","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d352be926b3823dfa1d4a693cf28753eb62b4af1","unresolved":false,"context_lines":[{"line_number":452,"context_line":"       Name or ID of volume to transfer."},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    --\u003cno_snapshots\u003e"},{"line_number":455,"context_line":"       True or False to transfer volume without snapshots."},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"   The volume must be in an ``available`` state or the request will be"},{"line_number":458,"context_line":"   denied. If the transfer request is valid in the database (that is, it"}],"source_content_type":"text/x-rst","patch_set":26,"id":"bf659307_86df3639","line":455,"in_reply_to":"bf659307_032d7445","updated":"2018-04-08 09:02:33.000000000","message":"yes","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"79632ed5aca6f3c2357fbe3c327d0c7b53f4aec1","unresolved":false,"context_lines":[{"line_number":449,"context_line":"transfer ID and authorization key to the volume recipient. The volume"},{"line_number":450,"context_line":"recipient, or new owner, accepts the transfer by using the ID and key."},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"After microversion 3.52, Cinder will support to transfer volume with"},{"line_number":453,"context_line":"snapshots by default. That means if volume has some snapshots, when a user"},{"line_number":454,"context_line":"transfers a volume from one owner to another, then those snapshots will be"},{"line_number":455,"context_line":"transferred with the volume as well. If users don\u0027t want to transfer snapshots,"},{"line_number":456,"context_line":"they need to specify the new optional argument `--\u003cno_snapshots\u003e`."}],"source_content_type":"text/x-rst","patch_set":37,"id":"9f6a8fd7_78acd48b","line":453,"range":{"start_line":452,"start_character":0,"end_line":453,"end_character":21},"updated":"2018-05-02 14:16:19.000000000","message":"I\u0027m not sure this description is correct.\n\nIsn\u0027t it the case that for all versions snapshots will be transferred as part of the volume transfer, but 3.52+ allows the caller to request for this not to happen?\n\nThis means that the behavior for v2 and 3.x \u003c 3.52 changes as well.  This is ok since the current behavior is broken, but it should be described accurately.","commit_id":"5710b44b928c4371606839ba21356f1dfb5bb3a5"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"5d712b5d374474eb4cb7783a24c7eb632ba998db","unresolved":false,"context_lines":[{"line_number":449,"context_line":"transfer ID and authorization key to the volume recipient. The volume"},{"line_number":450,"context_line":"recipient, or new owner, accepts the transfer by using the ID and key."},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"After microversion 3.52, Cinder will support to transfer volume with"},{"line_number":453,"context_line":"snapshots by default. That means if volume has some snapshots, when a user"},{"line_number":454,"context_line":"transfers a volume from one owner to another, then those snapshots will be"},{"line_number":455,"context_line":"transferred with the volume as well. If users don\u0027t want to transfer snapshots,"},{"line_number":456,"context_line":"they need to specify the new optional argument `--\u003cno_snapshots\u003e`."}],"source_content_type":"text/x-rst","patch_set":37,"id":"5f7c97a3_a582934e","line":453,"range":{"start_line":452,"start_character":0,"end_line":453,"end_character":21},"in_reply_to":"9f6a8fd7_78acd48b","updated":"2018-05-04 08:20:58.000000000","message":"yes, you\u0027re right,  we decided to transfer all snapshots if user didn\u0027t specify the --no-snapshots.","commit_id":"5710b44b928c4371606839ba21356f1dfb5bb3a5"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"6c7016ff840b6892a01bd73a6f5b360dc01026d5","unresolved":false,"context_lines":[{"line_number":455,"context_line":"will be transferred with the volume as well. After microversion 3.53, Cinder"},{"line_number":456,"context_line":"will support to transfer volume without snapshots. If users don\u0027t want to"},{"line_number":457,"context_line":"transfer snapshots, they need to specify the new optional argument"},{"line_number":458,"context_line":"`--\u003cno_snapshots\u003e`."},{"line_number":459,"context_line":""},{"line_number":460,"context_line":".. note::"},{"line_number":461,"context_line":""}],"source_content_type":"text/x-rst","patch_set":45,"id":"5f7c97a3_ed7912c5","line":458,"range":{"start_line":458,"start_character":1,"end_line":458,"end_character":17},"updated":"2018-06-07 08:48:16.000000000","message":"--no_snapshots?","commit_id":"7e7bcf9c5665b4de209511f8d099b38fb88d1c5c"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"54330bdb7946243bfd21ef857a681186622ac4f9","unresolved":false,"context_lines":[{"line_number":455,"context_line":"will be transferred with the volume as well. After microversion 3.53, Cinder"},{"line_number":456,"context_line":"will support to transfer volume without snapshots. If users don\u0027t want to"},{"line_number":457,"context_line":"transfer snapshots, they need to specify the new optional argument"},{"line_number":458,"context_line":"`--\u003cno_snapshots\u003e`."},{"line_number":459,"context_line":""},{"line_number":460,"context_line":".. note::"},{"line_number":461,"context_line":""}],"source_content_type":"text/x-rst","patch_set":45,"id":"5f7c97a3_ae8ebd76","line":458,"range":{"start_line":458,"start_character":1,"end_line":458,"end_character":17},"in_reply_to":"5f7c97a3_ed7912c5","updated":"2018-06-19 08:12:53.000000000","message":"Done","commit_id":"7e7bcf9c5665b4de209511f8d099b38fb88d1c5c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"02a3acc45c55f50392663c4f5bcc11bd77d3e5a9","unresolved":false,"context_lines":[{"line_number":450,"context_line":"recipient, or new owner, accepts the transfer by using the ID and key."},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"In Rocky, Cinder changes the API behavior for V2 and 3.x \u003c 3.53, snapshots will"},{"line_number":453,"context_line":"be transfered with volume by default. That means if volume has some snapshots,"},{"line_number":454,"context_line":"when a user transfers a volume from one owner to another, then those snapshots"},{"line_number":455,"context_line":"will be transferred with the volume as well. After microversion 3.53, Cinder"},{"line_number":456,"context_line":"will support to transfer volume without snapshots. If users don\u0027t want to"}],"source_content_type":"text/x-rst","patch_set":48,"id":"5f7c97a3_1e61ffa8","line":453,"range":{"start_line":453,"start_character":3,"end_line":453,"end_character":13},"updated":"2018-06-20 13:03:42.000000000","message":"transferred","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3da76dd3609e9f724d1d49504dc93268866deeed","unresolved":false,"context_lines":[{"line_number":450,"context_line":"recipient, or new owner, accepts the transfer by using the ID and key."},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"In Rocky, Cinder changes the API behavior for V2 and 3.x \u003c 3.53, snapshots will"},{"line_number":453,"context_line":"be transfered with volume by default. That means if volume has some snapshots,"},{"line_number":454,"context_line":"when a user transfers a volume from one owner to another, then those snapshots"},{"line_number":455,"context_line":"will be transferred with the volume as well. After microversion 3.53, Cinder"},{"line_number":456,"context_line":"will support to transfer volume without snapshots. If users don\u0027t want to"}],"source_content_type":"text/x-rst","patch_set":48,"id":"5f7c97a3_7d7ebd1b","line":453,"range":{"start_line":453,"start_character":3,"end_line":453,"end_character":13},"in_reply_to":"5f7c97a3_1e61ffa8","updated":"2018-06-23 03:33:19.000000000","message":"Done","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"02a3acc45c55f50392663c4f5bcc11bd77d3e5a9","unresolved":false,"context_lines":[{"line_number":453,"context_line":"be transfered with volume by default. That means if volume has some snapshots,"},{"line_number":454,"context_line":"when a user transfers a volume from one owner to another, then those snapshots"},{"line_number":455,"context_line":"will be transferred with the volume as well. After microversion 3.53, Cinder"},{"line_number":456,"context_line":"will support to transfer volume without snapshots. If users don\u0027t want to"},{"line_number":457,"context_line":"transfer snapshots, they need to specify the new optional argument"},{"line_number":458,"context_line":"`--no_snapshots`."},{"line_number":459,"context_line":""}],"source_content_type":"text/x-rst","patch_set":48,"id":"5f7c97a3_3e6b9b85","line":456,"range":{"start_line":456,"start_character":0,"end_line":456,"end_character":15},"updated":"2018-06-20 13:03:42.000000000","message":"s/will support to/supports the ability to/","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3da76dd3609e9f724d1d49504dc93268866deeed","unresolved":false,"context_lines":[{"line_number":453,"context_line":"be transfered with volume by default. That means if volume has some snapshots,"},{"line_number":454,"context_line":"when a user transfers a volume from one owner to another, then those snapshots"},{"line_number":455,"context_line":"will be transferred with the volume as well. After microversion 3.53, Cinder"},{"line_number":456,"context_line":"will support to transfer volume without snapshots. If users don\u0027t want to"},{"line_number":457,"context_line":"transfer snapshots, they need to specify the new optional argument"},{"line_number":458,"context_line":"`--no_snapshots`."},{"line_number":459,"context_line":""}],"source_content_type":"text/x-rst","patch_set":48,"id":"5f7c97a3_9d839903","line":456,"range":{"start_line":456,"start_character":0,"end_line":456,"end_character":15},"in_reply_to":"5f7c97a3_3e6b9b85","updated":"2018-06-23 03:33:19.000000000","message":"Done","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"02a3acc45c55f50392663c4f5bcc11bd77d3e5a9","unresolved":false,"context_lines":[{"line_number":492,"context_line":""},{"line_number":493,"context_line":"   .. code-block:: console"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"      $ openstack volume transfer request create [--no-snapshots] \u003cvolume\u003e"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"The arguments to be passed are:"},{"line_number":498,"context_line":""}],"source_content_type":"text/x-rst","patch_set":48,"id":"5f7c97a3_9e1aef15","line":495,"updated":"2018-06-20 13:03:42.000000000","message":"Is there a patch up against python-openstack client to add this parameters? If so, can you comment that here or note it in the commit message on doing an update?\n\nSame with python-cinderclient.","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3da76dd3609e9f724d1d49504dc93268866deeed","unresolved":false,"context_lines":[{"line_number":492,"context_line":""},{"line_number":493,"context_line":"   .. code-block:: console"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"      $ openstack volume transfer request create [--no-snapshots] \u003cvolume\u003e"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"The arguments to be passed are:"},{"line_number":498,"context_line":""}],"source_content_type":"text/x-rst","patch_set":48,"id":"5f7c97a3_5d79812c","line":495,"in_reply_to":"5f7c97a3_9e1aef15","updated":"2018-06-23 03:33:19.000000000","message":"CLI patches is coding now,  I will update the commit message ASAP when patches done","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"cc1038d6d4591258e30f9014b91db9399c5c5eec","unresolved":false,"context_lines":[{"line_number":500,"context_line":"Name or ID of volume to transfer."},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"``--no-snapshots``"},{"line_number":503,"context_line":"If transfer volume without snapshots."},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"   The volume must be in an ``available`` state or the request will be"},{"line_number":506,"context_line":"   denied. If the transfer request is valid in the database (that is, it"}],"source_content_type":"text/x-rst","patch_set":51,"id":"5f7c97a3_9a3e3f88","line":503,"range":{"start_line":503,"start_character":0,"end_line":503,"end_character":37},"updated":"2018-07-18 13:42:37.000000000","message":"To transfer volume without snapshots.","commit_id":"95bf6816711754d2b4d3e134d63f773271b676ea"}],"releasenotes/notes/transfer-snapshots-with-volume-a7763570a807c742.yaml":[{"author":{"_account_id":13157,"name":"Zhao Chao","email":"zhaochao1984@gmail.com","username":"zhaochao"},"change_message_id":"79fd087f9193a611242bf3a78306e1a98abea676","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support transfer volume with snapshots at same time by default."},{"line_number":4,"context_line":"    If user don\u0027t want transfer snapshots, they could use"},{"line_number":5,"context_line":"    optional argument \u0027--no-snapshots\u0027."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5f93b717_1e4b7784","line":5,"range":{"start_line":4,"start_character":4,"end_line":5,"end_character":39},"updated":"2018-01-26 03:09:06.000000000","message":"Same comments as the ones in commit message.","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"7097925feb946fddcfad54aee4f585b334faedb1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support transfer volume with snapshots at same time by default."},{"line_number":4,"context_line":"    If user don\u0027t want transfer snapshots, they could use"},{"line_number":5,"context_line":"    optional argument \u0027--no-snapshots\u0027."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5f93b717_6e4f64bd","line":5,"range":{"start_line":4,"start_character":4,"end_line":5,"end_character":39},"in_reply_to":"5f93b717_1e4b7784","updated":"2018-01-26 06:56:51.000000000","message":"Done","commit_id":"4554d9de85a8384103086017ec06cb41f5d384a6"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5c56d76a4427603f26fa774f8c9e86666e234f57","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support transfer volume with snapshots at same time by default."},{"line_number":4,"context_line":"    If user don\u0027t want to transfer snapshots, they could use"},{"line_number":5,"context_line":"    a new optional argument \u0027--no-snapshots True\u0027."}],"source_content_type":"text/x-yaml","patch_set":23,"id":"bf659307_afce7b7f","line":3,"range":{"start_line":3,"start_character":43,"end_line":3,"end_character":55},"updated":"2018-03-29 14:29:07.000000000","message":"remove these words","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"608140d2868fdb6a62b0837500142bc983501afe","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support transfer volume with snapshots at same time by default."},{"line_number":4,"context_line":"    If user don\u0027t want to transfer snapshots, they could use"},{"line_number":5,"context_line":"    a new optional argument \u0027--no-snapshots True\u0027."}],"source_content_type":"text/x-yaml","patch_set":23,"id":"bf659307_135ea243","line":3,"range":{"start_line":3,"start_character":43,"end_line":3,"end_character":55},"in_reply_to":"bf659307_afce7b7f","updated":"2018-03-30 02:30:16.000000000","message":"Done","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5c56d76a4427603f26fa774f8c9e86666e234f57","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support transfer volume with snapshots at same time by default."},{"line_number":4,"context_line":"    If user don\u0027t want to transfer snapshots, they could use"},{"line_number":5,"context_line":"    a new optional argument \u0027--no-snapshots True\u0027."}],"source_content_type":"text/x-yaml","patch_set":23,"id":"bf659307_6fc4e35f","line":4,"range":{"start_line":4,"start_character":7,"end_line":4,"end_character":11},"updated":"2018-03-29 14:29:07.000000000","message":"users","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"608140d2868fdb6a62b0837500142bc983501afe","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support transfer volume with snapshots at same time by default."},{"line_number":4,"context_line":"    If user don\u0027t want to transfer snapshots, they could use"},{"line_number":5,"context_line":"    a new optional argument \u0027--no-snapshots True\u0027."}],"source_content_type":"text/x-yaml","patch_set":23,"id":"bf659307_333886ec","line":4,"range":{"start_line":4,"start_character":7,"end_line":4,"end_character":11},"in_reply_to":"bf659307_6fc4e35f","updated":"2018-03-30 02:30:16.000000000","message":"Done","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5c56d76a4427603f26fa774f8c9e86666e234f57","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support transfer volume with snapshots at same time by default."},{"line_number":4,"context_line":"    If user don\u0027t want to transfer snapshots, they could use"},{"line_number":5,"context_line":"    a new optional argument \u0027--no-snapshots True\u0027."}],"source_content_type":"text/x-yaml","patch_set":23,"id":"bf659307_cfa88f8d","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":6},"updated":"2018-03-29 14:29:07.000000000","message":"the","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"608140d2868fdb6a62b0837500142bc983501afe","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support transfer volume with snapshots at same time by default."},{"line_number":4,"context_line":"    If user don\u0027t want to transfer snapshots, they could use"},{"line_number":5,"context_line":"    a new optional argument \u0027--no-snapshots True\u0027."}],"source_content_type":"text/x-yaml","patch_set":23,"id":"bf659307_533dfada","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":6},"in_reply_to":"bf659307_cfa88f8d","updated":"2018-03-30 02:30:16.000000000","message":"Done","commit_id":"fb599bfa584daaddc559cc9a987234898e1b7bcb"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"4a4c2e267a645a725f7eee912b16ae37bbc52414","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support transfer volume with snapshots by default."},{"line_number":4,"context_line":"    If users don\u0027t want to transfer snapshots, they could use"},{"line_number":5,"context_line":"    the new optional argument \u0027--no-snapshots True\u0027."}],"source_content_type":"text/x-yaml","patch_set":26,"id":"bf659307_6373104f","line":5,"range":{"start_line":5,"start_character":30,"end_line":5,"end_character":51},"updated":"2018-04-06 02:29:06.000000000","message":"Change to `--no-snapshots`","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"d352be926b3823dfa1d4a693cf28753eb62b4af1","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support transfer volume with snapshots by default."},{"line_number":4,"context_line":"    If users don\u0027t want to transfer snapshots, they could use"},{"line_number":5,"context_line":"    the new optional argument \u0027--no-snapshots True\u0027."}],"source_content_type":"text/x-yaml","patch_set":26,"id":"bf659307_66b542ee","line":5,"range":{"start_line":5,"start_character":30,"end_line":5,"end_character":51},"in_reply_to":"bf659307_6373104f","updated":"2018-04-08 09:02:33.000000000","message":"Done","commit_id":"030baf8443e9d85386a900fbc42fba9c15432ee1"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"6c7016ff840b6892a01bd73a6f5b360dc01026d5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support transfer volume with snapshots by default in new V3 API"},{"line_number":4,"context_line":"    \u0027v3/volume_transfers\u0027. If users don\u0027t want to transfer snapshots,"},{"line_number":5,"context_line":"    they could use the new optional argument \u0027--no-snapshots\u0027."}],"source_content_type":"text/x-yaml","patch_set":45,"id":"5f7c97a3_ad323a0e","line":5,"range":{"start_line":3,"start_character":24,"end_line":5,"end_character":62},"updated":"2018-06-07 08:48:16.000000000","message":"need to mention the microversion here.","commit_id":"7e7bcf9c5665b4de209511f8d099b38fb88d1c5c"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"54330bdb7946243bfd21ef857a681186622ac4f9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support transfer volume with snapshots by default in new V3 API"},{"line_number":4,"context_line":"    \u0027v3/volume_transfers\u0027. If users don\u0027t want to transfer snapshots,"},{"line_number":5,"context_line":"    they could use the new optional argument \u0027--no-snapshots\u0027."}],"source_content_type":"text/x-yaml","patch_set":45,"id":"5f7c97a3_2ec94dab","line":5,"range":{"start_line":3,"start_character":24,"end_line":5,"end_character":62},"in_reply_to":"5f7c97a3_ad323a0e","updated":"2018-06-19 08:12:53.000000000","message":"Done","commit_id":"7e7bcf9c5665b4de209511f8d099b38fb88d1c5c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"02a3acc45c55f50392663c4f5bcc11bd77d3e5a9","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Support transfer volume with snapshots by default in new V3 API"},{"line_number":4,"context_line":"    \u0027v3/volume_transfers\u0027. After microverison 3.53, if users don\u0027t want to"},{"line_number":5,"context_line":"    transfer snapshots, they could use the new optional argument"},{"line_number":6,"context_line":"    \u0027--no-snapshots\u0027."}],"source_content_type":"text/x-yaml","patch_set":48,"id":"5f7c97a3_beb32b0a","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":20},"updated":"2018-06-20 13:03:42.000000000","message":"This isn\u0027t an API argument, so I don\u0027t think that should be the description for this server side change. Please note the API parameter that needs to be passed in to control this.","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3da76dd3609e9f724d1d49504dc93268866deeed","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Support transfer volume with snapshots by default in new V3 API"},{"line_number":4,"context_line":"    \u0027v3/volume_transfers\u0027. After microverison 3.53, if users don\u0027t want to"},{"line_number":5,"context_line":"    transfer snapshots, they could use the new optional argument"},{"line_number":6,"context_line":"    \u0027--no-snapshots\u0027."}],"source_content_type":"text/x-yaml","patch_set":48,"id":"5f7c97a3_7d931d4f","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":20},"in_reply_to":"5f7c97a3_beb32b0a","updated":"2018-06-23 03:33:19.000000000","message":"sure","commit_id":"bbf25f275a63775fe8aa85a6bef7ae1f1be45573"}]}
