)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2022-09-02 17:41:52 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update micversion to API 2.73, support share transfer between project"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Partially-Implements: blueprint transfer-share-between-project"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I8facf9112a6b09e6b7aed9956c0a87fb5f1fc31f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"c43adc40_d79d9490","line":8,"updated":"2022-09-05 22:23:28.000000000","message":"Please provide a better commit message here. This patch is changing almost 2k lines, a longer commit message would be helpful for the reviewer and future developers. Example, you could explain in which layers the patching is modifying and how. Also, you could provide a brief explanation of the new feature.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2022-09-02 17:41:52 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update micversion to API 2.73, support share transfer between project"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Partially-Implements: blueprint transfer-share-between-project"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I8facf9112a6b09e6b7aed9956c0a87fb5f1fc31f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"8e566bf7_5da91b34","line":8,"in_reply_to":"c43adc40_d79d9490","updated":"2022-09-07 04:16:09.000000000","message":"ok， i will update commit message.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Update micversion to API 2.73, support share transfer between project"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Partially-Implements: blueprint transfer-share-between-project"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I8facf9112a6b09e6b7aed9956c0a87fb5f1fc31f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"e117ed27_14142254","line":10,"updated":"2022-09-05 22:23:28.000000000","message":"APIImpact flag ? DocImpact flag ?","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Update micversion to API 2.73, support share transfer between project"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Partially-Implements: blueprint transfer-share-between-project"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I8facf9112a6b09e6b7aed9956c0a87fb5f1fc31f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"5d66b2cc_99e3e3cf","line":10,"in_reply_to":"e117ed27_14142254","updated":"2022-09-07 04:16:09.000000000","message":"i will add doc about this feature.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"37202021c5cfc0485830e20d8303ae91e9d8eab6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"3ec46643_8a927b4c","updated":"2022-09-01 22:10:33.000000000","message":"Thank you for working on this change, haixin! I looked at some files first but intend to do a second pass on other things. Please take a look at the comments inline","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"088926b423248abf47056983e3fdead74c3190a5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"8fb58ef6_b23cee58","updated":"2022-09-02 08:15:15.000000000","message":"thanks for your review, Carlos Eduardo.","commit_id":"adf856b8061176e5b465bcbf9a9567f1441e204a"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"a33389b7_01ebdeaf","updated":"2022-09-05 22:23:28.000000000","message":"Thanks Haixin! Please, see my comments. Could you provide some logs testing this feature ? Does it have a tempest tests ?","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"71fcb322_2111ec58","updated":"2022-09-07 04:16:09.000000000","message":"thanks for your review.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"c48ead0a_781ee748","in_reply_to":"a33389b7_01ebdeaf","updated":"2022-09-07 04:16:09.000000000","message":"not yet has tempest test. will add tempest tests later.\nabout test logs. you can use manila client \nhttps://review.opendev.org/c/openstack/python-manilaclient/+/854312\n\nmanila sharer-transfer-create {share_id} --name {transfer_name}\nmanila share-transfer-list\nmanila share-transfer-delete {transfer_id}\nmanila share-transfer-accept {transfer_id} {auth_key}","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1acc40ead3805e3ac14d078ce1c020af244fddfd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"cef8f573_f9514d6d","updated":"2022-09-07 16:28:59.000000000","message":"Thanks Haixin for resolving the comments. Just one still open to me. Also, I still need to test the code manually using the CLI, I\u0027m working on it. ","commit_id":"d8610171c4d1700afeccfca5272626ed648f09e5"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1efa0fabab0bda90f33c854a5bca019559aa2828","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"5737a643_a4de9bbe","updated":"2022-09-07 21:24:04.000000000","message":"ah, apologies haixin. i rebased my changes on yours and accidentally set it all on master as well.","commit_id":"49abeb6993593367db8874c4e5058ff562d43b5c"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"90e458b2_9027509c","updated":"2022-09-08 19:10:08.000000000","message":"Thanks for your work on this haixin - Still looking through this change; but posting some comments for now.. ","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a08c2d1842d201f6f27a92427a953abd609b21c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"667f0dfe_7d90dc9a","updated":"2022-09-08 05:48:31.000000000","message":"recheck","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"cbf62d1b_ddcb3cd4","updated":"2022-09-08 22:01:44.000000000","message":"still looking","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4bbdebd6b1f931951d6b77f17ceb44e56748c7ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"e7d34d04_3f95ee1f","updated":"2022-09-08 03:17:21.000000000","message":"thanks for your review.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"e6889ee1_0f58b928","updated":"2022-09-09 09:18:29.000000000","message":"thanks for your review, Goutham Pacha Ravi.","commit_id":"7a1b48003fb4c3f6b84ce86330a716de4182d2d6"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"51bcad90e690594c0ed2504dd1d0c3cf7f02c32b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"ca4aba3c_7ff1af11","updated":"2022-09-09 14:34:55.000000000","message":"Still testing, but found two issues noted in the comments. Please take a look","commit_id":"f02550b60b68cd0cf3abaf3b7a0f41ff3b23bde8"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"fe5cfa3a65f5b8fe06c16b129cb636ef7ecd52ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"96550152_a29c4539","updated":"2022-09-10 18:13:22.000000000","message":"build-openstack-api-ref  zuul check  failed again.\nwhy?  who can help me?","commit_id":"7d715fb9e85163e32cc450a4b5720c44cc266d6c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1b6ff2767e0567dea6072deaac5e898fd9800489","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"46dba69e_0ee08d00","updated":"2022-09-10 16:53:28.000000000","message":"recheck","commit_id":"7d715fb9e85163e32cc450a4b5720c44cc266d6c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"ad9cc2d9a051983e381105f547f99dc1be0cf327","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"481d6d43_e5ca01a3","updated":"2022-09-10 15:48:50.000000000","message":"thanks for your review","commit_id":"7d715fb9e85163e32cc450a4b5720c44cc266d6c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"aec0e39b1e24ba5f1526c306870408ffa9d51f46","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"03016439_2f77b328","updated":"2022-09-10 15:51:10.000000000","message":"zuul test: build-openstack-api-ref always failed. the error is:\nthe error tell Parameters file /home/zuul/src/opendev.org/openstack/manila/api-ref/status.yaml not found\n\nwhy???....","commit_id":"7d715fb9e85163e32cc450a4b5720c44cc266d6c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d753dbc2ce14b8a45f08f67f936172b372ff49a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"002cf907_261a3010","in_reply_to":"96550152_a29c4539","updated":"2022-09-11 00:56:24.000000000","message":"Now I know why it went wrong -__- ||","commit_id":"7d715fb9e85163e32cc450a4b5720c44cc266d6c"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"46fc5654cd8143e29a54d96b6804e33e4f3de4ed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"bfe3fedb_805b26a3","updated":"2022-09-12 22:19:45.000000000","message":"I am giving this a lot of thought and decided to remove my vote for now.\n\nThere are some big concerns with this change, and we are way past feature freeze:\nThe possible problems with the quota allocation that Goutham mentioned and also the concerns with the Ceph driver, which is receiving this update based on the way the driver operates.\n\nThe unit test coverage on the APIs looks okay, but we do not have a change for tempest including new test scenarios. I have tested some basic scenarios and they worked just fine, but without the tempest tests (that should\u0027ve been submitted alongside this feature considering the Feature Proposal Freeze deadline [1]), we cannot test much with the Ceph driver for example and we risk merging something that could not receive a backport in the future.\n\nI really like this feature, but it feels like we are rushing it and with that comes lots of risks.\n\nI would like to hear more thoughts on this, and possibly here the safest option for Manila, is to defer this merge to the A cycle, so we will be able to have more time to review and tempest tests implemented to back us up.\n\n[1] https://releases.openstack.org/zed/schedule.html#z-manila-fpfreeze\n","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"50c75d6d88f4f7cd7ef434a4909f1a843ef5cdb6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"e66b56d7_7e24bc2b","updated":"2022-09-12 19:21:00.000000000","message":"Thank you for the changes. I\u0027m in for getting this change merged, but it would be ideal to have he fixes requested by Goutham submitted by Thursday, so we can make them also a part of the release.","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"56ee154c_52d4db1c","updated":"2022-09-12 23:13:59.000000000","message":"Thank you very much for the changes Haixin - i\u0027ve noted some more comments inline; I do agree with Carlos that this feels a bit un-tested; so i would encourage us to add a few tempest tests to make sure this can be solid before we merge it - tempest tests are also important for us to ensure a future feature does not break this feature... You\u0027ve worked hard on this; and i hope we can wrap this up earlier in the Antelope release!! ","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"378bc8b5_8a7928de","updated":"2022-09-19 02:43:31.000000000","message":"Thank you very much for your review, Goutham Pacha Ravi.","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"6dbf260d_d470d85e","in_reply_to":"56ee154c_52d4db1c","updated":"2022-09-19 02:43:31.000000000","message":"i will add tempest tests Recently,","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"5d1760ed_85145750","updated":"2023-02-03 01:01:05.000000000","message":"Thanks for the comments and updates Haixin - i am okay aligning with Cinder wrt the quota changes being in the API layer. I\u0027m still reviewing, but posting some intermediate comments. ","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"a88f2144_c9d9006a","updated":"2023-02-06 07:50:51.000000000","message":"Thank you very much for your review， Goutham Pacha Ravi.","commit_id":"3f86eca4cd9aec68a311a9351cb78c338fc95e43"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cfd5d767b00fca37a6a7b08b88bc744a0f959107","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"38791b35_c8f9f51a","updated":"2023-02-09 22:12:24.000000000","message":"Thank you for working on this change and for the patience waiting for reviews - Please take a look at the comments inline. Also, I see Goutham\u0027s comments on share/transfer, did you have a chance to look into them?","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":33301,"name":"Caique Mello","email":"caiquemellosbo@gmail.com","username":"MelloCaique"},"change_message_id":"3fe6a4b40f05ba3e78fb6e614f0762c4c556f844","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":41,"id":"fcab69e3_990e2a20","updated":"2023-02-10 15:05:52.000000000","message":"Hi Haixin, thank you for the work! Release notes is pointing to wrong API version and small things regarding missing coverage. Overall it\u0027s OK for me.","commit_id":"b524c92ce4e01564cd9f6c9b604351ca5e780850"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"272989f23cebbec20ee4b60345065d558bfe3c20","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":41,"id":"a3368dab_d97fb456","updated":"2023-02-10 08:32:43.000000000","message":"thanks for your review, Carlos Eduardo.","commit_id":"b524c92ce4e01564cd9f6c9b604351ca5e780850"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"55d66dde3f5c765f73d2b67a010ec957cb5d12b6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"19406c14_ec3bd279","updated":"2023-02-11 14:32:09.000000000","message":"thanks for your review, Caique Mello.","commit_id":"d2d3f48efdf9adf13c23d2c5e86cca596be07d04"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"08a602a842f7724b13821688c36f72c1b036588e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"904db3e8_39924feb","updated":"2023-02-15 00:04:34.000000000","message":"Hi Haixin, \n\nsome more questions/comments inline. ","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"2dbe42cebb4ec81583e690e1bcc6b629f9c2c327","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"78209873_db7dd615","updated":"2023-02-14 20:54:51.000000000","message":"Looks good for the most part - only have one remark on the share manager/cephfs driver :)","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2633a26a8036c9f2cb90fd044ec12512ab5cf69e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"5124e16f_6a308675","updated":"2023-02-16 09:07:34.000000000","message":"thanks for review.","commit_id":"6fa8c9185c336d9cac12235b673c92fb92560b01"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"de7f4ec36476e18ab77c79c865f3563ac4962028","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"db1aeaae_6eeaaf36","updated":"2023-02-17 07:10:57.000000000","message":"Thank you for the changes Haixin, some more comments inline. We\u0027re pretty close by the looks of this! ","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"c9aebb9b9391812df1c2c0317bdd3e5bdfcc860b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"9152ecbe_45365eca","updated":"2023-02-17 14:16:01.000000000","message":"LGTM. Thank you very much for the hard work and the patience, Haixin!","commit_id":"b4a0fd9af07b33334a508a241cd5eb5bed7bceff"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"b87836b6d82924c28266ddf45e0a076f89113158","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"e08097f1_b9e486d8","updated":"2023-02-17 16:03:45.000000000","message":"Tempest is happy - corrections asked are in place.\nGreat work haixin! LGTM","commit_id":"b4a0fd9af07b33334a508a241cd5eb5bed7bceff"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"aaa3d794c44c2b8e55549d78bd68539e1b9c5699","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"df38b95b_c8d7fd7b","updated":"2023-02-17 13:01:24.000000000","message":"recheck","commit_id":"b4a0fd9af07b33334a508a241cd5eb5bed7bceff"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"6bb8649dd81501c58b99ba42caaf0ae9f3814aae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"e033aa44_502c2023","updated":"2023-02-17 11:23:17.000000000","message":"recheck\nKnown issue with test walk versions","commit_id":"b4a0fd9af07b33334a508a241cd5eb5bed7bceff"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d556b1470188c7b8ad2ec11615307f09a5efd891","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"47054d35_26951eb1","updated":"2023-02-17 08:10:31.000000000","message":"thank you for the changes! ","commit_id":"b4a0fd9af07b33334a508a241cd5eb5bed7bceff"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"17eeb2f9103b101bb42d3b7301afd7004654ad5b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"22f7b418_342f55ae","updated":"2023-02-17 08:06:03.000000000","message":"thanks for review.","commit_id":"b4a0fd9af07b33334a508a241cd5eb5bed7bceff"}],"api-ref/source/parameters.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":529,"context_line":"  in: query"},{"line_number":530,"context_line":"  required: false"},{"line_number":531,"context_line":"  type: string"},{"line_number":532,"context_line":"sort_dir_transfer:"},{"line_number":533,"context_line":"  description: |"},{"line_number":534,"context_line":"    The direction to sort a list of transfers. A valid"},{"line_number":535,"context_line":"    value is ``asc``, or ``desc``."},{"line_number":536,"context_line":"  in: query"},{"line_number":537,"context_line":"  required: false"},{"line_number":538,"context_line":"  type: string"},{"line_number":539,"context_line":"sort_key:"},{"line_number":540,"context_line":"  description: |"},{"line_number":541,"context_line":"    The key to sort a list of shares. A valid value"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"e5f4a67e_fe5a6a58","line":538,"range":{"start_line":532,"start_character":0,"end_line":538,"end_character":14},"updated":"2022-09-08 19:10:08.000000000","message":"if you change the \"shares\" in the above parameter, the same can be reused with transfers","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":529,"context_line":"  in: query"},{"line_number":530,"context_line":"  required: false"},{"line_number":531,"context_line":"  type: string"},{"line_number":532,"context_line":"sort_dir_transfer:"},{"line_number":533,"context_line":"  description: |"},{"line_number":534,"context_line":"    The direction to sort a list of transfers. A valid"},{"line_number":535,"context_line":"    value is ``asc``, or ``desc``."},{"line_number":536,"context_line":"  in: query"},{"line_number":537,"context_line":"  required: false"},{"line_number":538,"context_line":"  type: string"},{"line_number":539,"context_line":"sort_key:"},{"line_number":540,"context_line":"  description: |"},{"line_number":541,"context_line":"    The key to sort a list of shares. A valid value"}],"source_content_type":"text/x-yaml","patch_set":22,"id":"97eb580f_d7cc7dc8","line":538,"range":{"start_line":532,"start_character":0,"end_line":538,"end_character":14},"in_reply_to":"e5f4a67e_fe5a6a58","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":747,"context_line":"  required: true"},{"line_number":748,"context_line":"  type: object"},{"line_number":749,"context_line":"auth_key:"},{"line_number":750,"context_line":"    description: |"},{"line_number":751,"context_line":"      The authentication key for the transfer."},{"line_number":752,"context_line":"    in: body"},{"line_number":753,"context_line":"    required: true"},{"line_number":754,"context_line":"    type: string"},{"line_number":755,"context_line":"availability_zone:"},{"line_number":756,"context_line":"  description: |"},{"line_number":757,"context_line":"    The name of the availability zone the share exists within."}],"source_content_type":"text/x-yaml","patch_set":22,"id":"06490b3d_cd17f746","line":754,"range":{"start_line":750,"start_character":0,"end_line":754,"end_character":16},"updated":"2022-09-08 19:10:08.000000000","message":"nit: the spacing here is inconsistent","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":747,"context_line":"  required: true"},{"line_number":748,"context_line":"  type: object"},{"line_number":749,"context_line":"auth_key:"},{"line_number":750,"context_line":"    description: |"},{"line_number":751,"context_line":"      The authentication key for the transfer."},{"line_number":752,"context_line":"    in: body"},{"line_number":753,"context_line":"    required: true"},{"line_number":754,"context_line":"    type: string"},{"line_number":755,"context_line":"availability_zone:"},{"line_number":756,"context_line":"  description: |"},{"line_number":757,"context_line":"    The name of the availability zone the share exists within."}],"source_content_type":"text/x-yaml","patch_set":22,"id":"a19bf752_821f5dc6","line":754,"range":{"start_line":750,"start_character":0,"end_line":754,"end_character":16},"in_reply_to":"06490b3d_cd17f746","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":524,"context_line":"  type: string"},{"line_number":525,"context_line":"sort_dir:"},{"line_number":526,"context_line":"  description: |"},{"line_number":527,"context_line":"    The direction to sort a list of resource. A valid"},{"line_number":528,"context_line":"    value is ``asc``, or ``desc``."},{"line_number":529,"context_line":"  in: query"},{"line_number":530,"context_line":"  required: false"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"b4cdffa4_118e58b2","line":527,"range":{"start_line":527,"start_character":36,"end_line":527,"end_character":44},"updated":"2022-09-12 23:13:59.000000000","message":"resources","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":524,"context_line":"  type: string"},{"line_number":525,"context_line":"sort_dir:"},{"line_number":526,"context_line":"  description: |"},{"line_number":527,"context_line":"    The direction to sort a list of resource. A valid"},{"line_number":528,"context_line":"    value is ``asc``, or ``desc``."},{"line_number":529,"context_line":"  in: query"},{"line_number":530,"context_line":"  required: false"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"65cf263a_8f8a3c1e","line":527,"range":{"start_line":527,"start_character":36,"end_line":527,"end_character":44},"in_reply_to":"b4cdffa4_118e58b2","updated":"2022-09-19 02:43:31.000000000","message":"Done","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cfd5d767b00fca37a6a7b08b88bc744a0f959107","unresolved":true,"context_lines":[{"line_number":615,"context_line":"sort_key_transfer:"},{"line_number":616,"context_line":"  description: |"},{"line_number":617,"context_line":"    The key to sort a list of transfers. A valid value"},{"line_number":618,"context_line":"    is ``id``, ``name``, ``resource_type``, ``resource_id``,"},{"line_number":619,"context_line":"    ``source_project_id``, ``destination_project_id``."},{"line_number":620,"context_line":"  in: query"},{"line_number":621,"context_line":"  required: false"},{"line_number":622,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":40,"id":"9ff6a647_0c1a5c7e","line":619,"range":{"start_line":618,"start_character":8,"end_line":619,"end_character":54},"updated":"2023-02-09 22:12:24.000000000","message":"according to the CLI, this is the list: \n(\u0027id\u0027, \u0027resource_type\u0027, \u0027resource_id\u0027, \u0027name\u0027, \u0027source_project_id\u0027, \u0027destination_project_id\u0027, \u0027created_at\u0027, \u0027expires_at\u0027)\nso maybe we should add created_at and expires_at here too","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"272989f23cebbec20ee4b60345065d558bfe3c20","unresolved":false,"context_lines":[{"line_number":615,"context_line":"sort_key_transfer:"},{"line_number":616,"context_line":"  description: |"},{"line_number":617,"context_line":"    The key to sort a list of transfers. A valid value"},{"line_number":618,"context_line":"    is ``id``, ``name``, ``resource_type``, ``resource_id``,"},{"line_number":619,"context_line":"    ``source_project_id``, ``destination_project_id``."},{"line_number":620,"context_line":"  in: query"},{"line_number":621,"context_line":"  required: false"},{"line_number":622,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":40,"id":"d1e6fc4d_6ff40321","line":619,"range":{"start_line":618,"start_character":8,"end_line":619,"end_character":54},"in_reply_to":"9ff6a647_0c1a5c7e","updated":"2023-02-10 08:32:43.000000000","message":"Done","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"}],"api-ref/source/samples/share-transfer-create-response.json":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":9,"context_line":"        \"source_project_id\": \"714198c7ac5e45a4b785de732ea4695d\","},{"line_number":10,"context_line":"        \"destination_project_id\": null,"},{"line_number":11,"context_line":"        \"accepted\": false,"},{"line_number":12,"context_line":"        \"expires_at\": null,"},{"line_number":13,"context_line":"        \"links\": ["},{"line_number":14,"context_line":"            {"},{"line_number":15,"context_line":"                \"rel\": \"self\","}],"source_content_type":"application/json","patch_set":22,"id":"00bb7716_30e2e8db","line":12,"updated":"2022-09-08 19:10:08.000000000","message":"wouldn\u0027t this be set right away?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":9,"context_line":"        \"source_project_id\": \"714198c7ac5e45a4b785de732ea4695d\","},{"line_number":10,"context_line":"        \"destination_project_id\": null,"},{"line_number":11,"context_line":"        \"accepted\": false,"},{"line_number":12,"context_line":"        \"expires_at\": null,"},{"line_number":13,"context_line":"        \"links\": ["},{"line_number":14,"context_line":"            {"},{"line_number":15,"context_line":"                \"rel\": \"self\","}],"source_content_type":"application/json","patch_set":22,"id":"a335cb82_ae44f859","line":12,"in_reply_to":"00bb7716_30e2e8db","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"}],"api-ref/source/share-transfers.inc":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":22,"id":"5cc38d6e_0e4ef4c0","updated":"2022-09-08 19:10:08.000000000","message":"this file must be included in the API ref index: https://raw.githubusercontent.com/openstack/manila/master/api-ref/source/index.rst","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"4cdef9dd_655448fd","in_reply_to":"5cc38d6e_0e4ef4c0","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":3,"context_line":"Share transfer (2.73 or later)"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Transfers a share from one user to another user."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Accept a share transfer"}],"source_content_type":"text/x-c++src","patch_set":22,"id":"a0d950b9_c5ee34c4","line":6,"range":{"start_line":6,"start_character":18,"end_line":6,"end_character":47},"updated":"2022-09-08 19:10:08.000000000","message":"across projects","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":3,"context_line":"Share transfer (2.73 or later)"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Transfers a share from one user to another user."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Accept a share transfer"}],"source_content_type":"text/x-c++src","patch_set":22,"id":"6e5b0825_c28f4cd6","line":6,"range":{"start_line":6,"start_character":18,"end_line":6,"end_character":47},"in_reply_to":"a0d950b9_c5ee34c4","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":".. rest_method::  POST /v2/share-transfers/{transfer_id}/accept"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Accepts a share transfer."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Response codes"},{"line_number":17,"context_line":"--------------"}],"source_content_type":"text/x-c++src","patch_set":22,"id":"7ddd2041_dfcd0a23","line":14,"range":{"start_line":14,"start_character":24,"end_line":14,"end_character":25},"updated":"2022-09-08 19:10:08.000000000","message":"in the destination project namespace.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":".. rest_method::  POST /v2/share-transfers/{transfer_id}/accept"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Accepts a share transfer."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Response codes"},{"line_number":17,"context_line":"--------------"}],"source_content_type":"text/x-c++src","patch_set":22,"id":"5b2d9fd2_1c5ee654","line":14,"range":{"start_line":14,"start_character":24,"end_line":14,"end_character":25},"in_reply_to":"7ddd2041_dfcd0a23","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"   - 400"},{"line_number":26,"context_line":"   - 413"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Request"},{"line_number":29,"context_line":"-------"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":22,"id":"969829f4_75fb293f","line":27,"updated":"2022-09-08 19:10:08.000000000","message":"404?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"   - 400"},{"line_number":26,"context_line":"   - 413"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Request"},{"line_number":29,"context_line":"-------"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":22,"id":"f0149062_cd535831","line":27,"in_reply_to":"969829f4_75fb293f","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":".. rest_method::  POST /v2/share-transfers"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Creates a share transfer."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"**Preconditions**"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":22,"id":"ff7d72e8_49bf0db9","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":25},"updated":"2022-09-08 19:10:08.000000000","message":"Initiates a share transfer from a source project namespace to a destination project namespace.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":".. rest_method::  POST /v2/share-transfers"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Creates a share transfer."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"**Preconditions**"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":22,"id":"69c40e41_86978ef1","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":25},"in_reply_to":"ff7d72e8_49bf0db9","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":184,"context_line":".. rest_status_code:: success ../status.yaml"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"   - 200"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Request"},{"line_number":190,"context_line":"-------"}],"source_content_type":"text/x-c++src","patch_set":22,"id":"648b96e9_eaaa1de8","line":187,"updated":"2022-09-08 19:10:08.000000000","message":"404?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":184,"context_line":".. rest_status_code:: success ../status.yaml"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"   - 200"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Request"},{"line_number":190,"context_line":"-------"}],"source_content_type":"text/x-c++src","patch_set":22,"id":"1bf4a46d_d08fb1e3","line":187,"in_reply_to":"648b96e9_eaaa1de8","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":1,"context_line":".. -*- rst -*-"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Share transfer (since API v2.74)"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Transfers a share across projects."}],"source_content_type":"text/x-c++src","patch_set":36,"id":"d7c42aa4_912c62d9","line":3,"range":{"start_line":3,"start_character":26,"end_line":3,"end_character":31},"updated":"2023-02-03 01:01:05.000000000","message":"2.75","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. -*- rst -*-"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Share transfer (since API v2.74)"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Transfers a share across projects."}],"source_content_type":"text/x-c++src","patch_set":36,"id":"f9ee281a_a594ed9e","line":3,"range":{"start_line":3,"start_character":26,"end_line":3,"end_character":31},"in_reply_to":"d7c42aa4_912c62d9","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":42,"context_line":"   :language: javascript"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Create a share transfer"},{"line_number":46,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":".. rest_method::  POST /v2/share-transfers"}],"source_content_type":"text/x-c++src","patch_set":36,"id":"213a53a7_c2641895","line":45,"updated":"2023-02-03 01:01:05.000000000","message":"nit: move Create above Accept","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":42,"context_line":"   :language: javascript"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Create a share transfer"},{"line_number":46,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":".. rest_method::  POST /v2/share-transfers"}],"source_content_type":"text/x-c++src","patch_set":36,"id":"515cc272_8f28ab9b","line":45,"in_reply_to":"213a53a7_c2641895","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":110,"context_line":"   :language: javascript"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"List share transfers for a project"},{"line_number":114,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":".. rest_method::  GET /v2/share-transfers"}],"source_content_type":"text/x-c++src","patch_set":36,"id":"a5d588b1_749e5ee5","line":113,"updated":"2023-02-03 01:01:05.000000000","message":"nit: move all the GET APIs together - will make it more easily readable","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":110,"context_line":"   :language: javascript"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"List share transfers for a project"},{"line_number":114,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":".. rest_method::  GET /v2/share-transfers"}],"source_content_type":"text/x-c++src","patch_set":36,"id":"5c31490a_c1e8836d","line":113,"in_reply_to":"a5d588b1_749e5ee5","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cfd5d767b00fca37a6a7b08b88bc744a0f959107","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* The share ``status`` must be ``available``"},{"line_number":20,"context_line":"* If the share has snapshots, those snapshots must be ``available``"},{"line_number":21,"context_line":"* The share can not belong to share  group"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Response codes"},{"line_number":24,"context_line":"--------------"}],"source_content_type":"text/x-c++src","patch_set":40,"id":"a6e25e4e_3c3b5711","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":42},"updated":"2023-02-09 22:12:24.000000000","message":"What if the share has replicas?","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"2dbe42cebb4ec81583e690e1bcc6b629f9c2c327","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* The share ``status`` must be ``available``"},{"line_number":20,"context_line":"* If the share has snapshots, those snapshots must be ``available``"},{"line_number":21,"context_line":"* The share can not belong to share  group"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Response codes"},{"line_number":24,"context_line":"--------------"}],"source_content_type":"text/x-c++src","patch_set":40,"id":"bef8e6ce_575c0be7","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":42},"in_reply_to":"792d9eab_0f661125","updated":"2023-02-14 20:54:51.000000000","message":"ack, thanks for explaining","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"272989f23cebbec20ee4b60345065d558bfe3c20","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* The share ``status`` must be ``available``"},{"line_number":20,"context_line":"* If the share has snapshots, those snapshots must be ``available``"},{"line_number":21,"context_line":"* The share can not belong to share  group"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Response codes"},{"line_number":24,"context_line":"--------------"}],"source_content_type":"text/x-c++src","patch_set":40,"id":"792d9eab_0f661125","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":42},"in_reply_to":"a6e25e4e_3c3b5711","updated":"2023-02-10 08:32:43.000000000","message":"we can transfer share and it\u0027s replicas. when another project accept transfer, will check replicas status, We don\u0027t accept for replicas that are busy in some operation,\nand check replicas quota.","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cfd5d767b00fca37a6a7b08b88bc744a0f959107","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":".. rest_status_code:: error status.yaml"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"   - 400"},{"line_number":33,"context_line":"   - 404"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":40,"id":"cdadcd61_b45cadef","line":32,"updated":"2023-02-09 22:12:24.000000000","message":"Wouldn\u0027t we hit 403 in case the user has only reader access?","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"272989f23cebbec20ee4b60345065d558bfe3c20","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":".. rest_status_code:: error status.yaml"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"   - 400"},{"line_number":33,"context_line":"   - 404"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":40,"id":"7a7c69e8_cb44d3a4","line":32,"in_reply_to":"cdadcd61_b45cadef","updated":"2023-02-10 08:32:43.000000000","message":"yes, add it.","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cfd5d767b00fca37a6a7b08b88bc744a0f959107","unresolved":true,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"   - transfer: transfer"},{"line_number":42,"context_line":"   - name: transfer_name"},{"line_number":43,"context_line":"   - share_id: share_id_response"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Request Example"},{"line_number":46,"context_line":"---------------"}],"source_content_type":"text/x-c++src","patch_set":40,"id":"5909faa3_1548f1f7","line":43,"range":{"start_line":43,"start_character":15,"end_line":43,"end_character":32},"updated":"2023-02-09 22:12:24.000000000","message":"share_id_response means the share id from response - I would suggest creating a new share_id under parameters.yaml","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"272989f23cebbec20ee4b60345065d558bfe3c20","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"   - transfer: transfer"},{"line_number":42,"context_line":"   - name: transfer_name"},{"line_number":43,"context_line":"   - share_id: share_id_response"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Request Example"},{"line_number":46,"context_line":"---------------"}],"source_content_type":"text/x-c++src","patch_set":40,"id":"bf75df87_b503dda2","line":43,"range":{"start_line":43,"start_character":15,"end_line":43,"end_character":32},"in_reply_to":"5909faa3_1548f1f7","updated":"2023-02-10 08:32:43.000000000","message":"ok, i add new one for it.","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cfd5d767b00fca37a6a7b08b88bc744a0f959107","unresolved":true,"context_lines":[{"line_number":91,"context_line":".. rest_status_code:: error status.yaml"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"   - 400"},{"line_number":94,"context_line":"   - 404"},{"line_number":95,"context_line":"   - 413"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Request"}],"source_content_type":"text/x-c++src","patch_set":40,"id":"8e40e22c_6df7eb45","line":94,"updated":"2023-02-09 22:12:24.000000000","message":"same about 403","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"272989f23cebbec20ee4b60345065d558bfe3c20","unresolved":false,"context_lines":[{"line_number":91,"context_line":".. rest_status_code:: error status.yaml"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"   - 400"},{"line_number":94,"context_line":"   - 404"},{"line_number":95,"context_line":"   - 413"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Request"}],"source_content_type":"text/x-c++src","patch_set":40,"id":"a19f4d58_6b485ad8","line":94,"in_reply_to":"8e40e22c_6df7eb45","updated":"2023-02-10 08:32:43.000000000","message":"Done","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cfd5d767b00fca37a6a7b08b88bc744a0f959107","unresolved":true,"context_lines":[{"line_number":134,"context_line":"   - limit: limit_query"},{"line_number":135,"context_line":"   - offset: offset"},{"line_number":136,"context_line":"   - sort_key: sort_key_transfer"},{"line_number":137,"context_line":"   - sort_dir: sort_dir"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Response Parameters"}],"source_content_type":"text/x-c++src","patch_set":40,"id":"af498df9_504e0678","line":137,"updated":"2023-02-09 22:12:24.000000000","message":"isn\u0027t resource_type a part of this too?","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"272989f23cebbec20ee4b60345065d558bfe3c20","unresolved":false,"context_lines":[{"line_number":134,"context_line":"   - limit: limit_query"},{"line_number":135,"context_line":"   - offset: offset"},{"line_number":136,"context_line":"   - sort_key: sort_key_transfer"},{"line_number":137,"context_line":"   - sort_dir: sort_dir"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Response Parameters"}],"source_content_type":"text/x-c++src","patch_set":40,"id":"236ef91f_4ccdcbaf","line":137,"in_reply_to":"af498df9_504e0678","updated":"2023-02-10 08:32:43.000000000","message":"Done","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"}],"api-ref/source/shares.inc":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":83,"context_line":"+----------------------------------------+--------------------------------------------------------+"},{"line_number":84,"context_line":"| ``reverting_error``                    | Share revert to snapshot failed.                       |"},{"line_number":85,"context_line":"+----------------------------------------+--------------------------------------------------------+"},{"line_number":86,"context_line":"| ``awaiting-transfer``                  | Share is awaiting for accepted.                        |"},{"line_number":87,"context_line":"+----------------------------------------+--------------------------------------------------------+"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":22,"id":"d9007cd4_a0dd2907","line":86,"range":{"start_line":86,"start_character":61,"end_line":86,"end_character":74},"updated":"2022-09-08 19:10:08.000000000","message":"nit: grammar.. \n\nShare is being transferred to a different project\u0027s namespace.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":83,"context_line":"+----------------------------------------+--------------------------------------------------------+"},{"line_number":84,"context_line":"| ``reverting_error``                    | Share revert to snapshot failed.                       |"},{"line_number":85,"context_line":"+----------------------------------------+--------------------------------------------------------+"},{"line_number":86,"context_line":"| ``awaiting-transfer``                  | Share is awaiting for accepted.                        |"},{"line_number":87,"context_line":"+----------------------------------------+--------------------------------------------------------+"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":22,"id":"27e656ac_a64ea108","line":86,"range":{"start_line":86,"start_character":61,"end_line":86,"end_character":74},"in_reply_to":"d9007cd4_a0dd2907","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cfd5d767b00fca37a6a7b08b88bc744a0f959107","unresolved":true,"context_lines":[{"line_number":83,"context_line":"+----------------------------------------+--------------------------------------------------------+"},{"line_number":84,"context_line":"| ``reverting_error``                    | Share revert to snapshot failed.                       |"},{"line_number":85,"context_line":"+----------------------------------------+--------------------------------------------------------+"},{"line_number":86,"context_line":"| ``awaiting-transfer``                  | Share is being transferred to a different project\u0027s    |"},{"line_number":87,"context_line":"|                                        | namespace.                                             |"},{"line_number":88,"context_line":"+----------------------------------------+--------------------------------------------------------+"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":40,"id":"4ec20108_20181009","line":86,"range":{"start_line":86,"start_character":12,"end_line":86,"end_character":13},"updated":"2023-02-09 22:12:24.000000000","message":"please replace - with _","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"272989f23cebbec20ee4b60345065d558bfe3c20","unresolved":false,"context_lines":[{"line_number":83,"context_line":"+----------------------------------------+--------------------------------------------------------+"},{"line_number":84,"context_line":"| ``reverting_error``                    | Share revert to snapshot failed.                       |"},{"line_number":85,"context_line":"+----------------------------------------+--------------------------------------------------------+"},{"line_number":86,"context_line":"| ``awaiting-transfer``                  | Share is being transferred to a different project\u0027s    |"},{"line_number":87,"context_line":"|                                        | namespace.                                             |"},{"line_number":88,"context_line":"+----------------------------------------+--------------------------------------------------------+"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":40,"id":"af8c5b53_0eb7fd5d","line":86,"range":{"start_line":86,"start_character":12,"end_line":86,"end_character":13},"in_reply_to":"4ec20108_20181009","updated":"2023-02-10 08:32:43.000000000","message":"Done","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"}],"manila/api/openstack/api_version_request.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":187,"context_line":"             network."},{"line_number":188,"context_line":"    * 2.71 - Added \u0027updated_at\u0027 field in share instance show API output."},{"line_number":189,"context_line":"    * 2.72 - Added new option ``share-network`` to share replica creare API."},{"line_number":190,"context_line":"    * 2.73 - Added support for share transfer between different project."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"\"\"\""},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"5ec8ce96_9c2fb402","line":190,"range":{"start_line":190,"start_character":71,"end_line":190,"end_character":72},"updated":"2022-09-08 19:10:08.000000000","message":"s","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":187,"context_line":"             network."},{"line_number":188,"context_line":"    * 2.71 - Added \u0027updated_at\u0027 field in share instance show API output."},{"line_number":189,"context_line":"    * 2.72 - Added new option ``share-network`` to share replica creare API."},{"line_number":190,"context_line":"    * 2.73 - Added support for share transfer between different project."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"\"\"\""},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"8348f870_c8f9c574","line":190,"range":{"start_line":190,"start_character":71,"end_line":190,"end_character":72},"in_reply_to":"5ec8ce96_9c2fb402","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"}],"manila/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":403,"context_line":""},{"line_number":404,"context_line":"2.73"},{"line_number":405,"context_line":"----"},{"line_number":406,"context_line":"  Added support for share transfer between different project."}],"source_content_type":"text/x-rst","patch_set":22,"id":"0209fae8_c80bc13c","line":406,"range":{"start_line":406,"start_character":60,"end_line":406,"end_character":61},"updated":"2022-09-08 19:10:08.000000000","message":"s","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":403,"context_line":""},{"line_number":404,"context_line":"2.73"},{"line_number":405,"context_line":"----"},{"line_number":406,"context_line":"  Added support for share transfer between different project."}],"source_content_type":"text/x-rst","patch_set":22,"id":"0f682c56_b552b126","line":406,"range":{"start_line":406,"start_character":60,"end_line":406,"end_character":61},"in_reply_to":"0209fae8_c80bc13c","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":403,"context_line":""},{"line_number":404,"context_line":"2.73"},{"line_number":405,"context_line":"----"},{"line_number":406,"context_line":"  Added support for share transfer between different project."}],"source_content_type":"text/x-rst","patch_set":22,"id":"5b900b9d_545d7444","line":406,"range":{"start_line":406,"start_character":60,"end_line":406,"end_character":61},"in_reply_to":"0209fae8_c80bc13c","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"}],"manila/api/v2/share_transfer.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"37202021c5cfc0485830e20d8303ae91e9d8eab6","unresolved":true,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        return transfers"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @wsgi.response(HTTPStatus.ACCEPTED)"},{"line_number":98,"context_line":"    @wsgi.Controller.api_version(SHARE_TRANSFER_VERSION)"},{"line_number":99,"context_line":"    @wsgi.Controller.authorize(\u0027create\u0027)"},{"line_number":100,"context_line":"    def create(self, req, body):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f3cd25a_d320b90c","line":97,"range":{"start_line":97,"start_character":19,"end_line":97,"end_character":38},"updated":"2022-09-01 22:10:33.000000000","message":"any specific reason to use HTTPStatus instead of the regular things we use in the HTTPClient?\nAsking because what we usually do is:\nfrom http import client as http_client\n...\n@wsgi.response(http_client.ACCEPTED)","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"088926b423248abf47056983e3fdead74c3190a5","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        return transfers"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @wsgi.response(HTTPStatus.ACCEPTED)"},{"line_number":98,"context_line":"    @wsgi.Controller.api_version(SHARE_TRANSFER_VERSION)"},{"line_number":99,"context_line":"    @wsgi.Controller.authorize(\u0027create\u0027)"},{"line_number":100,"context_line":"    def create(self, req, body):"}],"source_content_type":"text/x-python","patch_set":17,"id":"71d62b4e_b45b1d5f","line":97,"range":{"start_line":97,"start_character":19,"end_line":97,"end_character":38},"in_reply_to":"3f3cd25a_d320b90c","updated":"2022-09-02 08:15:15.000000000","message":"Done","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"37202021c5cfc0485830e20d8303ae91e9d8eab6","unresolved":true,"context_lines":[{"line_number":116,"context_line":"            msg \u003d _(\"The \u0027share_id\u0027 attribute must be a uuid.\")"},{"line_number":117,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        name \u003d transfer.get(\u0027name\u0027, None)"},{"line_number":120,"context_line":"        if name is not None:"},{"line_number":121,"context_line":"            name \u003d name.strip()"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        LOG.info(\"Creating transfer of share %s\", share_id)"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"a98236d7_d208dad2","line":121,"range":{"start_line":119,"start_character":8,"end_line":121,"end_character":31},"updated":"2022-09-01 22:10:33.000000000","message":"In this case we are expecting the user sometimes to specify both name and id?\nI mean, I see share_id must be provided, but then after we check if the user has specified a share name. The identifier should be enough. Is there any reason to also allow the name?","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"088926b423248abf47056983e3fdead74c3190a5","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            msg \u003d _(\"The \u0027share_id\u0027 attribute must be a uuid.\")"},{"line_number":117,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        name \u003d transfer.get(\u0027name\u0027, None)"},{"line_number":120,"context_line":"        if name is not None:"},{"line_number":121,"context_line":"            name \u003d name.strip()"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        LOG.info(\"Creating transfer of share %s\", share_id)"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1b13dc0f_3af4ab00","line":121,"range":{"start_line":119,"start_character":8,"end_line":121,"end_character":31},"in_reply_to":"a98236d7_d208dad2","updated":"2022-09-02 08:15:15.000000000","message":"here the name means transfer name, i will update it to avoid ambiguity","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":78,"context_line":"        filters \u003d params"},{"line_number":79,"context_line":"        if \u0027name\u0027 in filters:"},{"line_number":80,"context_line":"            filters[\u0027display_name\u0027] \u003d filters.pop(\u0027name\u0027)"},{"line_number":81,"context_line":"        LOG.debug(\u0027Listing share transfers\u0027)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        transfers \u003d self.transfer_api.get_all(context,"},{"line_number":84,"context_line":"                                              limit\u003dlimit,"}],"source_content_type":"text/x-python","patch_set":19,"id":"82fd1052_146316f7","line":81,"range":{"start_line":81,"start_character":33,"end_line":81,"end_character":42},"updated":"2022-09-05 22:23:28.000000000","message":"transfers.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        filters \u003d params"},{"line_number":79,"context_line":"        if \u0027name\u0027 in filters:"},{"line_number":80,"context_line":"            filters[\u0027display_name\u0027] \u003d filters.pop(\u0027name\u0027)"},{"line_number":81,"context_line":"        LOG.debug(\u0027Listing share transfers\u0027)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        transfers \u003d self.transfer_api.get_all(context,"},{"line_number":84,"context_line":"                                              limit\u003dlimit,"}],"source_content_type":"text/x-python","patch_set":19,"id":"9b402ae3_3b7ef09f","line":81,"range":{"start_line":81,"start_character":33,"end_line":81,"end_character":42},"in_reply_to":"82fd1052_146316f7","updated":"2022-09-07 04:16:09.000000000","message":"Done","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":116,"context_line":"            msg \u003d _(\"The \u0027share_id\u0027 attribute must be a uuid.\")"},{"line_number":117,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        transfer_name \u003d transfer.get(\u0027name\u0027, None)"},{"line_number":120,"context_line":"        if transfer_name is not None:"},{"line_number":121,"context_line":"            transfer_name \u003d transfer_name.strip()"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"65cded4b_1b76aaad","line":119,"range":{"start_line":119,"start_character":43,"end_line":119,"end_character":50},"updated":"2022-09-05 22:23:28.000000000","message":"the default get is the None: .get(\u0027name\u0027)","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            msg \u003d _(\"The \u0027share_id\u0027 attribute must be a uuid.\")"},{"line_number":117,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        transfer_name \u003d transfer.get(\u0027name\u0027, None)"},{"line_number":120,"context_line":"        if transfer_name is not None:"},{"line_number":121,"context_line":"            transfer_name \u003d transfer_name.strip()"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"c864e340_50d52080","line":119,"range":{"start_line":119,"start_character":43,"end_line":119,"end_character":50},"in_reply_to":"65cded4b_1b76aaad","updated":"2022-09-07 04:16:09.000000000","message":"Done","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":72,"context_line":"        params \u003d req.params.copy()"},{"line_number":73,"context_line":"        pagination_params \u003d common.get_pagination_params(req)"},{"line_number":74,"context_line":"        limit, offset \u003d [pagination_params.get(\u0027limit\u0027),"},{"line_number":75,"context_line":"                         pagination_params.get(\u0027offset\u0027)]"},{"line_number":76,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(params)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3cea6d8d_27579332","line":74,"range":{"start_line":74,"start_character":43,"end_line":74,"end_character":46},"updated":"2022-09-08 19:10:08.000000000","message":"pop(\u0027limit\u0027, None)","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":72,"context_line":"        params \u003d req.params.copy()"},{"line_number":73,"context_line":"        pagination_params \u003d common.get_pagination_params(req)"},{"line_number":74,"context_line":"        limit, offset \u003d [pagination_params.get(\u0027limit\u0027),"},{"line_number":75,"context_line":"                         pagination_params.get(\u0027offset\u0027)]"},{"line_number":76,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(params)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"e6e940c0_e71c5837","line":74,"range":{"start_line":74,"start_character":43,"end_line":74,"end_character":46},"in_reply_to":"3cea6d8d_27579332","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":72,"context_line":"        params \u003d req.params.copy()"},{"line_number":73,"context_line":"        pagination_params \u003d common.get_pagination_params(req)"},{"line_number":74,"context_line":"        limit, offset \u003d [pagination_params.get(\u0027limit\u0027),"},{"line_number":75,"context_line":"                         pagination_params.get(\u0027offset\u0027)]"},{"line_number":76,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(params)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        filters \u003d params"}],"source_content_type":"text/x-python","patch_set":22,"id":"e3944bfc_00a62374","line":75,"range":{"start_line":75,"start_character":43,"end_line":75,"end_character":46},"updated":"2022-09-08 19:10:08.000000000","message":"pop(\u0027offset\u0027, None)","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        params \u003d req.params.copy()"},{"line_number":73,"context_line":"        pagination_params \u003d common.get_pagination_params(req)"},{"line_number":74,"context_line":"        limit, offset \u003d [pagination_params.get(\u0027limit\u0027),"},{"line_number":75,"context_line":"                         pagination_params.get(\u0027offset\u0027)]"},{"line_number":76,"context_line":"        sort_key, sort_dir \u003d common.get_sort_params(params)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        filters \u003d params"}],"source_content_type":"text/x-python","patch_set":22,"id":"1cd55d6a_17476f61","line":75,"range":{"start_line":75,"start_character":43,"end_line":75,"end_character":46},"in_reply_to":"e3944bfc_00a62374","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        filters \u003d params"},{"line_number":79,"context_line":"        if \u0027name\u0027 in filters:"},{"line_number":80,"context_line":"            filters[\u0027display_name\u0027] \u003d filters.pop(\u0027name\u0027)"},{"line_number":81,"context_line":"        LOG.debug(\u0027Listing share transfers.\u0027)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        transfers \u003d self.transfer_api.get_all(context,"}],"source_content_type":"text/x-python","patch_set":22,"id":"94ea3ac5_3edac8f9","line":80,"range":{"start_line":80,"start_character":12,"end_line":80,"end_character":57},"updated":"2022-09-08 22:01:44.000000000","message":"looking at the DB method, it seems like you want to allow \"display_name~\" as well - so \"name~\" is provided, it should be set as filters[\u0027display_name~\u0027]..","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        filters \u003d params"},{"line_number":79,"context_line":"        if \u0027name\u0027 in filters:"},{"line_number":80,"context_line":"            filters[\u0027display_name\u0027] \u003d filters.pop(\u0027name\u0027)"},{"line_number":81,"context_line":"        LOG.debug(\u0027Listing share transfers.\u0027)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        transfers \u003d self.transfer_api.get_all(context,"}],"source_content_type":"text/x-python","patch_set":22,"id":"4829069b_f767d8f6","line":80,"range":{"start_line":80,"start_character":12,"end_line":80,"end_character":57},"in_reply_to":"94ea3ac5_3edac8f9","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":115,"context_line":"        if not uuidutils.is_uuid_like(share_id):"},{"line_number":116,"context_line":"            msg \u003d _(\"The \u0027share_id\u0027 attribute must be a uuid.\")"},{"line_number":117,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        transfer_name \u003d transfer.get(\u0027name\u0027)"},{"line_number":120,"context_line":"        if transfer_name is not None:"},{"line_number":121,"context_line":"            transfer_name \u003d transfer_name.strip()"}],"source_content_type":"text/x-python","patch_set":22,"id":"b652457d_025f679c","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":0},"updated":"2022-09-08 22:01:44.000000000","message":"Don\u0027t we want to validate here if the share_id is valid? If it is an invalid share (either the share doesn\u0027t exist or doesn\u0027t belong to the project), we must respond with HTTP400 - Bad Request","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        if not uuidutils.is_uuid_like(share_id):"},{"line_number":116,"context_line":"            msg \u003d _(\"The \u0027share_id\u0027 attribute must be a uuid.\")"},{"line_number":117,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        transfer_name \u003d transfer.get(\u0027name\u0027)"},{"line_number":120,"context_line":"        if transfer_name is not None:"},{"line_number":121,"context_line":"            transfer_name \u003d transfer_name.strip()"}],"source_content_type":"text/x-python","patch_set":22,"id":"acc3770d_6d67464a","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":0},"in_reply_to":"b652457d_025f679c","updated":"2022-09-09 09:18:29.000000000","message":"will add check in transfer/api.py#144-148","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":120,"context_line":"        if transfer_name is not None:"},{"line_number":121,"context_line":"            transfer_name \u003d transfer_name.strip()"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        LOG.info(\"Creating transfer of share %s\", share_id)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        try:"},{"line_number":126,"context_line":"            new_transfer \u003d self.transfer_api.create(context, share_id,"}],"source_content_type":"text/x-python","patch_set":22,"id":"7c2bcd5a_a523f421","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":59},"updated":"2022-09-08 19:10:08.000000000","message":"logging best practices state that info should indicate a completed task: https://docs.openstack.org/oslo.log/latest/user/guidelines.html#log-messages-at-info-and-above-should-represent-a-unit-of-work\n\n\nSo this is better suited as a debug log - we can log info when the task is complete","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        if transfer_name is not None:"},{"line_number":121,"context_line":"            transfer_name \u003d transfer_name.strip()"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        LOG.info(\"Creating transfer of share %s\", share_id)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        try:"},{"line_number":126,"context_line":"            new_transfer \u003d self.transfer_api.create(context, share_id,"}],"source_content_type":"text/x-python","patch_set":22,"id":"dfb1024f_178d505e","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":59},"in_reply_to":"7c2bcd5a_a523f421","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":161,"context_line":"                       {\u0027value\u0027: accept[\u0027clear_access_rules\u0027]})"},{"line_number":162,"context_line":"                raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        LOG.info(\"Accepting transfer %s\", transfer_id)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            accepted_transfer \u003d self.transfer_api.accept("}],"source_content_type":"text/x-python","patch_set":22,"id":"5554899e_e4a7c3aa","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":54},"updated":"2022-09-08 19:10:08.000000000","message":"logging best practices state that info should indicate a completed task: https://docs.openstack.org/oslo.log/latest/user/guidelines.html#log-messages-at-info-and-above-should-represent-a-unit-of-work\n\n\nSo this is better suited as a debug log - we can log info when the task is complete in the share manager","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                       {\u0027value\u0027: accept[\u0027clear_access_rules\u0027]})"},{"line_number":162,"context_line":"                raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        LOG.info(\"Accepting transfer %s\", transfer_id)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        try:"},{"line_number":167,"context_line":"            accepted_transfer \u003d self.transfer_api.accept("}],"source_content_type":"text/x-python","patch_set":22,"id":"c718164c_0704a8b0","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":54},"in_reply_to":"5554899e_e4a7c3aa","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":175,"context_line":"                exception.SnapshotLimitExceeded) as e:"},{"line_number":176,"context_line":"            raise exc.HTTPRequestEntityTooLarge(explanation\u003de.msg,"},{"line_number":177,"context_line":"                                                headers\u003d{\u0027Retry-After\u0027: \u00270\u0027})"},{"line_number":178,"context_line":"        except (exception.InvalidShare,"},{"line_number":179,"context_line":"                exception.InvalidAuthKey) as error:"},{"line_number":180,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9b9f90f4_2b528ab2","line":178,"range":{"start_line":178,"start_character":38,"end_line":178,"end_character":39},"updated":"2022-09-08 22:01:44.000000000","message":"InvalidSnapshot as well","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                exception.SnapshotLimitExceeded) as e:"},{"line_number":176,"context_line":"            raise exc.HTTPRequestEntityTooLarge(explanation\u003de.msg,"},{"line_number":177,"context_line":"                                                headers\u003d{\u0027Retry-After\u0027: \u00270\u0027})"},{"line_number":178,"context_line":"        except (exception.InvalidShare,"},{"line_number":179,"context_line":"                exception.InvalidAuthKey) as error:"},{"line_number":180,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"924f389d_7a7ccd01","line":178,"range":{"start_line":178,"start_character":38,"end_line":178,"end_character":39},"in_reply_to":"9b9f90f4_2b528ab2","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":188,"context_line":"        \"\"\"Delete a transfer.\"\"\""},{"line_number":189,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        LOG.info(\"Delete transfer with id: %s\", id)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        # Not found exception will be handled at the wsgi level"},{"line_number":194,"context_line":"        self.transfer_api.delete(context, transfer_id\u003did)"}],"source_content_type":"text/x-python","patch_set":22,"id":"858fc8ac_8b05c0fb","line":191,"range":{"start_line":191,"start_character":12,"end_line":191,"end_character":16},"updated":"2022-09-08 19:10:08.000000000","message":"logging best practices state that info should indicate a completed task: https://docs.openstack.org/oslo.log/latest/user/guidelines.html#log-messages-at-info-and-above-should-represent-a-unit-of-work","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        \"\"\"Delete a transfer.\"\"\""},{"line_number":189,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        LOG.info(\"Delete transfer with id: %s\", id)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        # Not found exception will be handled at the wsgi level"},{"line_number":194,"context_line":"        self.transfer_api.delete(context, transfer_id\u003did)"}],"source_content_type":"text/x-python","patch_set":22,"id":"6e22623e_a34f1269","line":191,"range":{"start_line":191,"start_character":12,"end_line":191,"end_character":16},"in_reply_to":"858fc8ac_8b05c0fb","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        # Not found exception will be handled at the wsgi level"},{"line_number":194,"context_line":"        self.transfer_api.delete(context, transfer_id\u003did)"},{"line_number":195,"context_line":"        return webob.Response(status_int\u003dhttp_client.ACCEPTED)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"def create_resource():"}],"source_content_type":"text/x-python","patch_set":22,"id":"0092205a_3b9065b8","line":195,"updated":"2022-09-08 19:10:08.000000000","message":"shouldn\u0027t this be a 200? - we\u0027re done at this point, no?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        # Not found exception will be handled at the wsgi level"},{"line_number":194,"context_line":"        self.transfer_api.delete(context, transfer_id\u003did)"},{"line_number":195,"context_line":"        return webob.Response(status_int\u003dhttp_client.ACCEPTED)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"def create_resource():"}],"source_content_type":"text/x-python","patch_set":22,"id":"296bf159_58cc2804","line":195,"in_reply_to":"0092205a_3b9065b8","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":182,"context_line":"                exception.InvalidAuthKey) as error:"},{"line_number":183,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        return webob.Response(status_int\u003dhttp_client.ACCEPTED)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    @wsgi.Controller.api_version(SHARE_TRANSFER_VERSION)"},{"line_number":188,"context_line":"    @wsgi.Controller.authorize(\u0027delete\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"6c0a9784_467792bb","line":185,"range":{"start_line":185,"start_character":0,"end_line":185,"end_character":62},"updated":"2022-09-12 23:13:59.000000000","message":"line 137 does this","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                exception.InvalidAuthKey) as error:"},{"line_number":183,"context_line":"            raise exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        return webob.Response(status_int\u003dhttp_client.ACCEPTED)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    @wsgi.Controller.api_version(SHARE_TRANSFER_VERSION)"},{"line_number":188,"context_line":"    @wsgi.Controller.authorize(\u0027delete\u0027)"}],"source_content_type":"text/x-python","patch_set":30,"id":"179c0e83_a428935d","line":185,"range":{"start_line":185,"start_character":0,"end_line":185,"end_character":62},"in_reply_to":"6c0a9784_467792bb","updated":"2022-09-19 02:43:31.000000000","message":"Done","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cfd5d767b00fca37a6a7b08b88bc744a0f959107","unresolved":true,"context_lines":[{"line_number":150,"context_line":"        accept \u003d body.get(\u0027accept\u0027, {})"},{"line_number":151,"context_line":"        auth_key \u003d accept.get(\u0027auth_key\u0027)"},{"line_number":152,"context_line":"        if not auth_key:"},{"line_number":153,"context_line":"            msg \u003d _(\"Must supply \u0027auth_key\u0027 attribute.\")"},{"line_number":154,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        clear_rules \u003d accept.get(\u0027clear_access_rules\u0027, False)"}],"source_content_type":"text/x-python","patch_set":40,"id":"256c3c88_8e968d5c","line":153,"range":{"start_line":153,"start_character":44,"end_line":153,"end_character":53},"updated":"2023-02-09 22:12:24.000000000","message":"while accepting a share transfer.","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"272989f23cebbec20ee4b60345065d558bfe3c20","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        accept \u003d body.get(\u0027accept\u0027, {})"},{"line_number":151,"context_line":"        auth_key \u003d accept.get(\u0027auth_key\u0027)"},{"line_number":152,"context_line":"        if not auth_key:"},{"line_number":153,"context_line":"            msg \u003d _(\"Must supply \u0027auth_key\u0027 attribute.\")"},{"line_number":154,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        clear_rules \u003d accept.get(\u0027clear_access_rules\u0027, False)"}],"source_content_type":"text/x-python","patch_set":40,"id":"cff9a467_eddfa1d5","line":153,"range":{"start_line":153,"start_character":44,"end_line":153,"end_character":53},"in_reply_to":"256c3c88_8e968d5c","updated":"2023-02-10 08:32:43.000000000","message":"Done","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"}],"manila/api/views/transfers.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def create(self, request, transfer):"},{"line_number":69,"context_line":"        \"\"\"Detailed view of a single transfer when created.\"\"\""},{"line_number":70,"context_line":"        create_body \u003d {"},{"line_number":71,"context_line":"            \u0027transfer\u0027: {"},{"line_number":72,"context_line":"                \u0027id\u0027: transfer.get(\u0027id\u0027),"},{"line_number":73,"context_line":"                \u0027created_at\u0027: transfer.get(\u0027created_at\u0027),"},{"line_number":74,"context_line":"                \u0027name\u0027: transfer.get(\u0027display_name\u0027),"},{"line_number":75,"context_line":"                \u0027resource_type\u0027: transfer[\u0027resource_type\u0027],"},{"line_number":76,"context_line":"                \u0027resource_id\u0027: transfer[\u0027resource_id\u0027],"},{"line_number":77,"context_line":"                \u0027auth_key\u0027: transfer.get(\u0027auth_key\u0027),"},{"line_number":78,"context_line":"                \u0027source_project_id\u0027: transfer[\u0027source_project_id\u0027],"},{"line_number":79,"context_line":"                \u0027destination_project_id\u0027: transfer.get("},{"line_number":80,"context_line":"                    \u0027destination_project_id\u0027),"},{"line_number":81,"context_line":"                \u0027accepted\u0027: transfer[\u0027accepted\u0027],"},{"line_number":82,"context_line":"                \u0027expires_at\u0027: transfer.get(\u0027expires_at\u0027),"},{"line_number":83,"context_line":"                \u0027links\u0027: self._get_links(request, transfer[\u0027id\u0027])"},{"line_number":84,"context_line":"            }"},{"line_number":85,"context_line":"        }"},{"line_number":86,"context_line":"        return create_body"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def _list_view(self, func, request, transfers):"}],"source_content_type":"text/x-python","patch_set":22,"id":"4315bbf2_5a26d5d4","line":85,"range":{"start_line":70,"start_character":22,"end_line":85,"end_character":9},"updated":"2022-09-08 19:10:08.000000000","message":"perhaps:\n\n   create_body \u003d self.detail(request, transfer)\n   create_body[\u0027transfer\u0027][\u0027auth_key\u0027] \u003d transfer.get(\u0027auth_key\u0027)","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def create(self, request, transfer):"},{"line_number":69,"context_line":"        \"\"\"Detailed view of a single transfer when created.\"\"\""},{"line_number":70,"context_line":"        create_body \u003d {"},{"line_number":71,"context_line":"            \u0027transfer\u0027: {"},{"line_number":72,"context_line":"                \u0027id\u0027: transfer.get(\u0027id\u0027),"},{"line_number":73,"context_line":"                \u0027created_at\u0027: transfer.get(\u0027created_at\u0027),"},{"line_number":74,"context_line":"                \u0027name\u0027: transfer.get(\u0027display_name\u0027),"},{"line_number":75,"context_line":"                \u0027resource_type\u0027: transfer[\u0027resource_type\u0027],"},{"line_number":76,"context_line":"                \u0027resource_id\u0027: transfer[\u0027resource_id\u0027],"},{"line_number":77,"context_line":"                \u0027auth_key\u0027: transfer.get(\u0027auth_key\u0027),"},{"line_number":78,"context_line":"                \u0027source_project_id\u0027: transfer[\u0027source_project_id\u0027],"},{"line_number":79,"context_line":"                \u0027destination_project_id\u0027: transfer.get("},{"line_number":80,"context_line":"                    \u0027destination_project_id\u0027),"},{"line_number":81,"context_line":"                \u0027accepted\u0027: transfer[\u0027accepted\u0027],"},{"line_number":82,"context_line":"                \u0027expires_at\u0027: transfer.get(\u0027expires_at\u0027),"},{"line_number":83,"context_line":"                \u0027links\u0027: self._get_links(request, transfer[\u0027id\u0027])"},{"line_number":84,"context_line":"            }"},{"line_number":85,"context_line":"        }"},{"line_number":86,"context_line":"        return create_body"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def _list_view(self, func, request, transfers):"}],"source_content_type":"text/x-python","patch_set":22,"id":"72e9a1d0_8ad9c1e7","line":85,"range":{"start_line":70,"start_character":22,"end_line":85,"end_character":9},"in_reply_to":"4315bbf2_5a26d5d4","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"51bcad90e690594c0ed2504dd1d0c3cf7f02c32b","unresolved":true,"context_lines":[{"line_number":52,"context_line":"            \u0027transfer\u0027: {"},{"line_number":53,"context_line":"                \u0027id\u0027: transfer.get(\u0027id\u0027),"},{"line_number":54,"context_line":"                \u0027created_at\u0027: transfer.get(\u0027created_at\u0027),"},{"line_number":55,"context_line":"                \u0027name\u0027: transfer.get(\u0027display_name\u0027),"},{"line_number":56,"context_line":"                \u0027resource_type\u0027: transfer[\u0027resource_type\u0027],"},{"line_number":57,"context_line":"                \u0027resource_id\u0027: transfer[\u0027resource_id\u0027],"},{"line_number":58,"context_line":"                \u0027source_project_id\u0027: transfer[\u0027source_project_id\u0027],"}],"source_content_type":"text/x-python","patch_set":26,"id":"54d22149_567d67ca","line":55,"range":{"start_line":55,"start_character":16,"end_line":55,"end_character":53},"updated":"2022-09-09 14:34:55.000000000","message":"this is always returning None","commit_id":"f02550b60b68cd0cf3abaf3b7a0f41ff3b23bde8"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"2d4f62d3595dec79c2163b4a6318e4bf4a6570b3","unresolved":true,"context_lines":[{"line_number":52,"context_line":"            \u0027transfer\u0027: {"},{"line_number":53,"context_line":"                \u0027id\u0027: transfer.get(\u0027id\u0027),"},{"line_number":54,"context_line":"                \u0027created_at\u0027: transfer.get(\u0027created_at\u0027),"},{"line_number":55,"context_line":"                \u0027name\u0027: transfer.get(\u0027display_name\u0027),"},{"line_number":56,"context_line":"                \u0027resource_type\u0027: transfer[\u0027resource_type\u0027],"},{"line_number":57,"context_line":"                \u0027resource_id\u0027: transfer[\u0027resource_id\u0027],"},{"line_number":58,"context_line":"                \u0027source_project_id\u0027: transfer[\u0027source_project_id\u0027],"}],"source_content_type":"text/x-python","patch_set":26,"id":"a9cefa3f_e5c3de63","line":55,"range":{"start_line":55,"start_character":16,"end_line":55,"end_character":53},"in_reply_to":"54d22149_567d67ca","updated":"2022-09-09 20:04:14.000000000","message":"https://paste.opendev.org/show/bzf2f3TPVLaEpBpHkj3D/","commit_id":"f02550b60b68cd0cf3abaf3b7a0f41ff3b23bde8"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"ad9cc2d9a051983e381105f547f99dc1be0cf327","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            \u0027transfer\u0027: {"},{"line_number":53,"context_line":"                \u0027id\u0027: transfer.get(\u0027id\u0027),"},{"line_number":54,"context_line":"                \u0027created_at\u0027: transfer.get(\u0027created_at\u0027),"},{"line_number":55,"context_line":"                \u0027name\u0027: transfer.get(\u0027display_name\u0027),"},{"line_number":56,"context_line":"                \u0027resource_type\u0027: transfer[\u0027resource_type\u0027],"},{"line_number":57,"context_line":"                \u0027resource_id\u0027: transfer[\u0027resource_id\u0027],"},{"line_number":58,"context_line":"                \u0027source_project_id\u0027: transfer[\u0027source_project_id\u0027],"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba130723_cc707729","line":55,"range":{"start_line":55,"start_character":16,"end_line":55,"end_character":53},"in_reply_to":"a9cefa3f_e5c3de63","updated":"2022-09-10 15:48:50.000000000","message":"i test has no this problem, logs as  below:\nroot@haixin-devstack:/opt/stack/python-manilaclient# manila share-transfer-create a439eb0d-5dbd-4fef-a171-a1dc1200cce2 --name test-transfer\n+------------------------+--------------------------------------+\n| Property               | Value                                |\n+------------------------+--------------------------------------+\n| id                     | 7e4ab3c6-62fb-48c7-b77c-918a0c1a409b |\n| created_at             | 2022-09-10T15:29:50.634431           |\n| name                   | test-transfer                        |\n| resource_type          | share                                |\n| resource_id            | a439eb0d-5dbd-4fef-a171-a1dc1200cce2 |\n| source_project_id      | 714198c7ac5e45a4b785de732ea4695d     |\n| destination_project_id | None                                 |\n| accepted               | False                                |\n| expires_at             | 2022-09-10T15:34:50.633523           |\n| auth_key               | 0728b28df3c71ca1                     |\n+------------------------+--------------------------------------+\nroot@haixin-devstack:/opt/stack/python-manilaclient# manila share-transfer-list\n+--------------------------------------+---------------+---------------+--------------------------------------+\n| ID                                   | Name          | Resource Type | Resource Id                          |\n+--------------------------------------+---------------+---------------+--------------------------------------+\n| 7e4ab3c6-62fb-48c7-b77c-918a0c1a409b | test-transfer | share         | a439eb0d-5dbd-4fef-a171-a1dc1200cce2 |\n+--------------------------------------+---------------+---------------+--------------------------------------+\nroot@haixin-devstack:/opt/stack/python-manilaclient# manila share-transfer-list --detail\n+--------------------------------------+---------------+---------------+--------------------------------------+----------------------------+----------------------------+----------------------------------+------------------------+----------+\n| ID                                   | Name          | Resource Type | Resource Id                          | Created At                 | Expires At                 | Source Project Id                | Destination Project Id | Accepted |\n+--------------------------------------+---------------+---------------+--------------------------------------+----------------------------+----------------------------+----------------------------------+------------------------+----------+\n| 7e4ab3c6-62fb-48c7-b77c-918a0c1a409b | test-transfer | share         | a439eb0d-5dbd-4fef-a171-a1dc1200cce2 | 2022-09-10T15:29:50.634431 | 2022-09-10T15:34:50.633523 | 714198c7ac5e45a4b785de732ea4695d | None                   | False    |\n+--------------------------------------+---------------+---------------+--------------------------------------+----------------------------+----------------------------+----------------------------------+------------------------+----------+","commit_id":"f02550b60b68cd0cf3abaf3b7a0f41ff3b23bde8"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"838199cbc337971dd675b035910a3cb16610ab4d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            \u0027transfer\u0027: {"},{"line_number":53,"context_line":"                \u0027id\u0027: transfer.get(\u0027id\u0027),"},{"line_number":54,"context_line":"                \u0027created_at\u0027: transfer.get(\u0027created_at\u0027),"},{"line_number":55,"context_line":"                \u0027name\u0027: transfer.get(\u0027display_name\u0027),"},{"line_number":56,"context_line":"                \u0027resource_type\u0027: transfer[\u0027resource_type\u0027],"},{"line_number":57,"context_line":"                \u0027resource_id\u0027: transfer[\u0027resource_id\u0027],"},{"line_number":58,"context_line":"                \u0027source_project_id\u0027: transfer[\u0027source_project_id\u0027],"}],"source_content_type":"text/x-python","patch_set":26,"id":"9ba5f3d7_d9badf31","line":55,"range":{"start_line":55,"start_character":16,"end_line":55,"end_character":53},"in_reply_to":"ba130723_cc707729","updated":"2022-09-12 18:45:52.000000000","message":"I was using OSC with my tests, and the debugging option was saying this was something received from the API. We can follow up on this.","commit_id":"f02550b60b68cd0cf3abaf3b7a0f41ff3b23bde8"}],"manila/common/config.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":135,"context_line":"    cfg.IntOpt(\u0027transfer_retention_time\u0027,"},{"line_number":136,"context_line":"               default\u003d300,"},{"line_number":137,"context_line":"               help\u003d\u0027Maximum time (in seconds) to keep a share in \u0027"},{"line_number":138,"context_line":"                    \u0027awaiting_transfer state, after timeout, will \u0027"},{"line_number":139,"context_line":"                    \u0027automatically rolls back to the available state\u0027),"},{"line_number":140,"context_line":"]"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"CONF.register_opts(global_opts)"}],"source_content_type":"text/x-python","patch_set":36,"id":"3c457191_57076432","line":139,"range":{"start_line":138,"start_character":61,"end_line":139,"end_character":45},"updated":"2023-02-03 01:01:05.000000000","message":"the share will automatically be rolled back to ...","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    cfg.IntOpt(\u0027transfer_retention_time\u0027,"},{"line_number":136,"context_line":"               default\u003d300,"},{"line_number":137,"context_line":"               help\u003d\u0027Maximum time (in seconds) to keep a share in \u0027"},{"line_number":138,"context_line":"                    \u0027awaiting_transfer state, after timeout, will \u0027"},{"line_number":139,"context_line":"                    \u0027automatically rolls back to the available state\u0027),"},{"line_number":140,"context_line":"]"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"CONF.register_opts(global_opts)"}],"source_content_type":"text/x-python","patch_set":36,"id":"22572af4_b16aa582","line":139,"range":{"start_line":138,"start_character":61,"end_line":139,"end_character":45},"in_reply_to":"3c457191_57076432","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"}],"manila/common/constants.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":44,"context_line":"STATUS_RESTORING \u003d \u0027restoring\u0027"},{"line_number":45,"context_line":"STATUS_REVERTING \u003d \u0027reverting\u0027"},{"line_number":46,"context_line":"STATUS_REVERTING_ERROR \u003d \u0027reverting_error\u0027"},{"line_number":47,"context_line":"STATUS_AWAITING_TRANSFER \u003d \u0027awaiting-transfer\u0027"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"# Transfer resource type"},{"line_number":50,"context_line":"SHARE_RESOURCE_TYPE \u003d \u0027share\u0027"}],"source_content_type":"text/x-python","patch_set":36,"id":"b3dbcd5b_dc4cf294","line":47,"range":{"start_line":47,"start_character":36,"end_line":47,"end_character":37},"updated":"2023-02-03 01:01:05.000000000","message":"for consistency, use an underscore instead of a hyphen","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":44,"context_line":"STATUS_RESTORING \u003d \u0027restoring\u0027"},{"line_number":45,"context_line":"STATUS_REVERTING \u003d \u0027reverting\u0027"},{"line_number":46,"context_line":"STATUS_REVERTING_ERROR \u003d \u0027reverting_error\u0027"},{"line_number":47,"context_line":"STATUS_AWAITING_TRANSFER \u003d \u0027awaiting-transfer\u0027"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"# Transfer resource type"},{"line_number":50,"context_line":"SHARE_RESOURCE_TYPE \u003d \u0027share\u0027"}],"source_content_type":"text/x-python","patch_set":36,"id":"f1af637b_b4dd96cd","line":47,"range":{"start_line":47,"start_character":36,"end_line":47,"end_character":37},"in_reply_to":"b3dbcd5b_dc4cf294","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"}],"manila/db/migrations/alembic/versions/1e2d600bf972_add_transfers.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"51bcad90e690594c0ed2504dd1d0c3cf7f02c32b","unresolved":true,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def upgrade():"},{"line_number":31,"context_line":"    op.create_table("},{"line_number":32,"context_line":"        \u0027transfers\u0027,"},{"line_number":33,"context_line":"        sa.Column(\u0027id\u0027, sa.String(36), primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":34,"context_line":"        sa.Column(\u0027created_at\u0027, sa.DateTime),"}],"source_content_type":"text/x-python","patch_set":22,"id":"cbeaff66_9b91b44a","line":31,"updated":"2022-09-09 14:34:55.000000000","message":"please surround this block with a try/catch","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"ad9cc2d9a051983e381105f547f99dc1be0cf327","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def upgrade():"},{"line_number":31,"context_line":"    op.create_table("},{"line_number":32,"context_line":"        \u0027transfers\u0027,"},{"line_number":33,"context_line":"        sa.Column(\u0027id\u0027, sa.String(36), primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":34,"context_line":"        sa.Column(\u0027created_at\u0027, sa.DateTime),"}],"source_content_type":"text/x-python","patch_set":22,"id":"ab1c512c_3ef2dda5","line":31,"in_reply_to":"cbeaff66_9b91b44a","updated":"2022-09-10 15:48:50.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":31,"context_line":"    op.create_table("},{"line_number":32,"context_line":"        \u0027transfers\u0027,"},{"line_number":33,"context_line":"        sa.Column(\u0027id\u0027, sa.String(36), primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":34,"context_line":"        sa.Column(\u0027created_at\u0027, sa.DateTime),"},{"line_number":35,"context_line":"        sa.Column(\u0027updated_at\u0027, sa.DateTime),"},{"line_number":36,"context_line":"        sa.Column(\u0027deleted_at\u0027, sa.DateTime),"},{"line_number":37,"context_line":"        sa.Column(\u0027deleted\u0027, sa.String(36), default\u003d\u0027False\u0027),"}],"source_content_type":"text/x-python","patch_set":22,"id":"1cb467e7_e91f3f02","line":34,"range":{"start_line":34,"start_character":32,"end_line":34,"end_character":43},"updated":"2022-09-08 19:10:08.000000000","message":"need this to include precision for mysql; see an example here: https://github.com/openstack/manila/blob/2bc27c5678945d92ffd6b885eeaf6f86c9f16f8c/manila/db/migrations/alembic/versions/478c445d8d3e_add_security_service_update_control_fields.py#L39-L40","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    op.create_table("},{"line_number":32,"context_line":"        \u0027transfers\u0027,"},{"line_number":33,"context_line":"        sa.Column(\u0027id\u0027, sa.String(36), primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":34,"context_line":"        sa.Column(\u0027created_at\u0027, sa.DateTime),"},{"line_number":35,"context_line":"        sa.Column(\u0027updated_at\u0027, sa.DateTime),"},{"line_number":36,"context_line":"        sa.Column(\u0027deleted_at\u0027, sa.DateTime),"},{"line_number":37,"context_line":"        sa.Column(\u0027deleted\u0027, sa.String(36), default\u003d\u0027False\u0027),"}],"source_content_type":"text/x-python","patch_set":22,"id":"78b9fe40_555cbc2c","line":34,"range":{"start_line":34,"start_character":32,"end_line":34,"end_character":43},"in_reply_to":"1cb467e7_e91f3f02","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":32,"context_line":"        \u0027transfers\u0027,"},{"line_number":33,"context_line":"        sa.Column(\u0027id\u0027, sa.String(36), primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":34,"context_line":"        sa.Column(\u0027created_at\u0027, sa.DateTime),"},{"line_number":35,"context_line":"        sa.Column(\u0027updated_at\u0027, sa.DateTime),"},{"line_number":36,"context_line":"        sa.Column(\u0027deleted_at\u0027, sa.DateTime),"},{"line_number":37,"context_line":"        sa.Column(\u0027deleted\u0027, sa.String(36), default\u003d\u0027False\u0027),"},{"line_number":38,"context_line":"        sa.Column(\u0027resource_id\u0027, sa.String(36), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":22,"id":"c4c7de91_b8935b88","line":35,"range":{"start_line":35,"start_character":32,"end_line":35,"end_character":43},"updated":"2022-09-08 19:10:08.000000000","message":"same","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        \u0027transfers\u0027,"},{"line_number":33,"context_line":"        sa.Column(\u0027id\u0027, sa.String(36), primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":34,"context_line":"        sa.Column(\u0027created_at\u0027, sa.DateTime),"},{"line_number":35,"context_line":"        sa.Column(\u0027updated_at\u0027, sa.DateTime),"},{"line_number":36,"context_line":"        sa.Column(\u0027deleted_at\u0027, sa.DateTime),"},{"line_number":37,"context_line":"        sa.Column(\u0027deleted\u0027, sa.String(36), default\u003d\u0027False\u0027),"},{"line_number":38,"context_line":"        sa.Column(\u0027resource_id\u0027, sa.String(36), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":22,"id":"47382caa_d23053ed","line":35,"range":{"start_line":35,"start_character":32,"end_line":35,"end_character":43},"in_reply_to":"c4c7de91_b8935b88","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":33,"context_line":"        sa.Column(\u0027id\u0027, sa.String(36), primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":34,"context_line":"        sa.Column(\u0027created_at\u0027, sa.DateTime),"},{"line_number":35,"context_line":"        sa.Column(\u0027updated_at\u0027, sa.DateTime),"},{"line_number":36,"context_line":"        sa.Column(\u0027deleted_at\u0027, sa.DateTime),"},{"line_number":37,"context_line":"        sa.Column(\u0027deleted\u0027, sa.String(36), default\u003d\u0027False\u0027),"},{"line_number":38,"context_line":"        sa.Column(\u0027resource_id\u0027, sa.String(36), nullable\u003dFalse),"},{"line_number":39,"context_line":"        sa.Column(\u0027resource_type\u0027, sa.String(36), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":22,"id":"94e8264c_295180ae","line":36,"range":{"start_line":36,"start_character":32,"end_line":36,"end_character":43},"updated":"2022-09-08 19:10:08.000000000","message":"same","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        sa.Column(\u0027id\u0027, sa.String(36), primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":34,"context_line":"        sa.Column(\u0027created_at\u0027, sa.DateTime),"},{"line_number":35,"context_line":"        sa.Column(\u0027updated_at\u0027, sa.DateTime),"},{"line_number":36,"context_line":"        sa.Column(\u0027deleted_at\u0027, sa.DateTime),"},{"line_number":37,"context_line":"        sa.Column(\u0027deleted\u0027, sa.String(36), default\u003d\u0027False\u0027),"},{"line_number":38,"context_line":"        sa.Column(\u0027resource_id\u0027, sa.String(36), nullable\u003dFalse),"},{"line_number":39,"context_line":"        sa.Column(\u0027resource_type\u0027, sa.String(36), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":22,"id":"865c42a0_3f5f65dc","line":36,"range":{"start_line":36,"start_character":32,"end_line":36,"end_character":43},"in_reply_to":"94e8264c_295180ae","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":36,"context_line":"        sa.Column(\u0027deleted_at\u0027, sa.DateTime),"},{"line_number":37,"context_line":"        sa.Column(\u0027deleted\u0027, sa.String(36), default\u003d\u0027False\u0027),"},{"line_number":38,"context_line":"        sa.Column(\u0027resource_id\u0027, sa.String(36), nullable\u003dFalse),"},{"line_number":39,"context_line":"        sa.Column(\u0027resource_type\u0027, sa.String(36), nullable\u003dFalse),"},{"line_number":40,"context_line":"        sa.Column(\u0027display_name\u0027, sa.String(255)),"},{"line_number":41,"context_line":"        sa.Column(\u0027salt\u0027, sa.String(255)),"},{"line_number":42,"context_line":"        sa.Column(\u0027crypt_hash\u0027, sa.String(255)),"}],"source_content_type":"text/x-python","patch_set":22,"id":"4c08898d_489cac3c","line":39,"range":{"start_line":39,"start_character":35,"end_line":39,"end_character":48},"updated":"2022-09-08 19:10:08.000000000","message":"sa.String(255) \n\nconsistent with the messages schema that includes a similar attr: https://github.com/openstack/manila/blob/dd630c3929af6829a1f4ddb72b27d353e21977e7/manila/db/migrations/alembic/versions/238720805ce1_add_messages_table.py#L44","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        sa.Column(\u0027deleted_at\u0027, sa.DateTime),"},{"line_number":37,"context_line":"        sa.Column(\u0027deleted\u0027, sa.String(36), default\u003d\u0027False\u0027),"},{"line_number":38,"context_line":"        sa.Column(\u0027resource_id\u0027, sa.String(36), nullable\u003dFalse),"},{"line_number":39,"context_line":"        sa.Column(\u0027resource_type\u0027, sa.String(36), nullable\u003dFalse),"},{"line_number":40,"context_line":"        sa.Column(\u0027display_name\u0027, sa.String(255)),"},{"line_number":41,"context_line":"        sa.Column(\u0027salt\u0027, sa.String(255)),"},{"line_number":42,"context_line":"        sa.Column(\u0027crypt_hash\u0027, sa.String(255)),"}],"source_content_type":"text/x-python","patch_set":22,"id":"a29fc7f0_2588e3b6","line":39,"range":{"start_line":39,"start_character":35,"end_line":39,"end_character":48},"in_reply_to":"4c08898d_489cac3c","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        sa.Column(\u0027display_name\u0027, sa.String(255)),"},{"line_number":41,"context_line":"        sa.Column(\u0027salt\u0027, sa.String(255)),"},{"line_number":42,"context_line":"        sa.Column(\u0027crypt_hash\u0027, sa.String(255)),"},{"line_number":43,"context_line":"        sa.Column(\u0027expires_at\u0027, sa.DateTime),"},{"line_number":44,"context_line":"        sa.Column(\u0027source_project_id\u0027, sa.String(255), nullable\u003dTrue),"},{"line_number":45,"context_line":"        sa.Column(\u0027destination_project_id\u0027, sa.String(255), nullable\u003dTrue),"},{"line_number":46,"context_line":"        sa.Column(\u0027accepted\u0027, sa.Boolean, default\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":22,"id":"12f21385_944a8f18","line":43,"range":{"start_line":43,"start_character":35,"end_line":43,"end_character":43},"updated":"2022-09-08 19:10:08.000000000","message":"fsp bits for mysql","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        sa.Column(\u0027display_name\u0027, sa.String(255)),"},{"line_number":41,"context_line":"        sa.Column(\u0027salt\u0027, sa.String(255)),"},{"line_number":42,"context_line":"        sa.Column(\u0027crypt_hash\u0027, sa.String(255)),"},{"line_number":43,"context_line":"        sa.Column(\u0027expires_at\u0027, sa.DateTime),"},{"line_number":44,"context_line":"        sa.Column(\u0027source_project_id\u0027, sa.String(255), nullable\u003dTrue),"},{"line_number":45,"context_line":"        sa.Column(\u0027destination_project_id\u0027, sa.String(255), nullable\u003dTrue),"},{"line_number":46,"context_line":"        sa.Column(\u0027accepted\u0027, sa.Boolean, default\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":22,"id":"5898c527_e2780846","line":43,"range":{"start_line":43,"start_character":35,"end_line":43,"end_character":43},"in_reply_to":"12f21385_944a8f18","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":13,"context_line":"\"\"\"add_transfers"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Revision ID: 1e2d600bf972"},{"line_number":16,"context_line":"Revises: a87e0fb17dee"},{"line_number":17,"context_line":"Create Date: 2022-05-30 16:37:18.325464"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":30,"id":"e223a46d_6eec5ba3","line":16,"range":{"start_line":16,"start_character":9,"end_line":16,"end_character":21},"updated":"2022-09-12 23:13:59.000000000","message":"bb5938d74b73","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\"\"\"add_transfers"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Revision ID: 1e2d600bf972"},{"line_number":16,"context_line":"Revises: a87e0fb17dee"},{"line_number":17,"context_line":"Create Date: 2022-05-30 16:37:18.325464"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":30,"id":"5d51fb30_071d9659","line":16,"range":{"start_line":16,"start_character":9,"end_line":16,"end_character":21},"in_reply_to":"e223a46d_6eec5ba3","updated":"2022-09-19 02:43:31.000000000","message":"Done","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":42,"context_line":"            sa.Column(\u0027created_at\u0027, datetime_type),"},{"line_number":43,"context_line":"            sa.Column(\u0027updated_at\u0027, datetime_type),"},{"line_number":44,"context_line":"            sa.Column(\u0027deleted_at\u0027, datetime_type),"},{"line_number":45,"context_line":"            sa.Column(\u0027deleted\u0027, sa.Boolean, default\u003dFalse),"},{"line_number":46,"context_line":"            sa.Column(\u0027resource_id\u0027, sa.String(36), nullable\u003dFalse),"},{"line_number":47,"context_line":"            sa.Column(\u0027resource_type\u0027, sa.String(255), nullable\u003dFalse),"},{"line_number":48,"context_line":"            sa.Column(\u0027display_name\u0027, sa.String(255)),"}],"source_content_type":"text/x-python","patch_set":30,"id":"796f21b1_2c698629","line":45,"range":{"start_line":45,"start_character":12,"end_line":45,"end_character":60},"updated":"2022-09-12 23:13:59.000000000","message":"I recommend using String(36) for the \"deleted\" field like you had before. We use boolean only on metadata, extra-specs and tables that are key\u003dvalue tables where the unique ID isn\u0027t helping much..","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            sa.Column(\u0027created_at\u0027, datetime_type),"},{"line_number":43,"context_line":"            sa.Column(\u0027updated_at\u0027, datetime_type),"},{"line_number":44,"context_line":"            sa.Column(\u0027deleted_at\u0027, datetime_type),"},{"line_number":45,"context_line":"            sa.Column(\u0027deleted\u0027, sa.Boolean, default\u003dFalse),"},{"line_number":46,"context_line":"            sa.Column(\u0027resource_id\u0027, sa.String(36), nullable\u003dFalse),"},{"line_number":47,"context_line":"            sa.Column(\u0027resource_type\u0027, sa.String(255), nullable\u003dFalse),"},{"line_number":48,"context_line":"            sa.Column(\u0027display_name\u0027, sa.String(255)),"}],"source_content_type":"text/x-python","patch_set":30,"id":"3ef23723_674db315","line":45,"range":{"start_line":45,"start_character":12,"end_line":45,"end_character":60},"in_reply_to":"796f21b1_2c698629","updated":"2022-09-19 02:43:31.000000000","message":"Done","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cfd5d767b00fca37a6a7b08b88bc744a0f959107","unresolved":true,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def downgrade():"},{"line_number":64,"context_line":"    op.drop_table(\u0027transfers\u0027)"}],"source_content_type":"text/x-python","patch_set":40,"id":"b1a98c15_1ea79c7c","line":64,"range":{"start_line":64,"start_character":4,"end_line":64,"end_character":30},"updated":"2023-02-09 22:12:24.000000000","message":"please surround this in a try/catch","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"272989f23cebbec20ee4b60345065d558bfe3c20","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def downgrade():"},{"line_number":64,"context_line":"    op.drop_table(\u0027transfers\u0027)"}],"source_content_type":"text/x-python","patch_set":40,"id":"8df6b335_2b5c3c6c","line":64,"range":{"start_line":64,"start_character":4,"end_line":64,"end_character":30},"in_reply_to":"b1a98c15_1ea79c7c","updated":"2023-02-10 08:32:43.000000000","message":"Done","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"37202021c5cfc0485830e20d8303ae91e9d8eab6","unresolved":true,"context_lines":[{"line_number":226,"context_line":"    # NOTE(maaoyu): We add the additional sort by ID in this case to"},{"line_number":227,"context_line":"    # get deterministic results. Without the ordering by ID this could"},{"line_number":228,"context_line":"    # lead to flapping return lists."},{"line_number":229,"context_line":"    sort_key \u003d [sort_key]"},{"line_number":230,"context_line":"    if sort_key !\u003d \u0027id\u0027:"},{"line_number":231,"context_line":"        sort_key.append(\u0027id\u0027)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    for sort_key in sort_key:"},{"line_number":234,"context_line":"        sort_attr \u003d getattr(model, sort_key)"}],"source_content_type":"text/x-python","patch_set":17,"id":"05150e64_f5cc9d19","line":231,"range":{"start_line":229,"start_character":4,"end_line":231,"end_character":29},"updated":"2022-09-01 22:10:33.000000000","message":"nice catch - possibly actually a bug :)","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"088926b423248abf47056983e3fdead74c3190a5","unresolved":false,"context_lines":[{"line_number":226,"context_line":"    # NOTE(maaoyu): We add the additional sort by ID in this case to"},{"line_number":227,"context_line":"    # get deterministic results. Without the ordering by ID this could"},{"line_number":228,"context_line":"    # lead to flapping return lists."},{"line_number":229,"context_line":"    sort_key \u003d [sort_key]"},{"line_number":230,"context_line":"    if sort_key !\u003d \u0027id\u0027:"},{"line_number":231,"context_line":"        sort_key.append(\u0027id\u0027)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    for sort_key in sort_key:"},{"line_number":234,"context_line":"        sort_attr \u003d getattr(model, sort_key)"}],"source_content_type":"text/x-python","patch_set":17,"id":"033c4615_3c234d5c","line":231,"range":{"start_line":229,"start_character":4,"end_line":231,"end_character":29},"in_reply_to":"05150e64_f5cc9d19","updated":"2022-09-02 08:15:15.000000000","message":"Suddenly I can\u0027t remember why I changed this. Maybe I made a mistake, now it looks like this part of the code is fine, not bug。 but after this change, sort_key must not equal to \u0027id\u0027, the logic looks wrong, I will roll back the change here first.\nAlso, this change has nothing to do with this feature.\n\nヾ(。￣□￣)ﾂ゜゜゜","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"37202021c5cfc0485830e20d8303ae91e9d8eab6","unresolved":true,"context_lines":[{"line_number":2435,"context_line":""},{"line_number":2436,"context_line":""},{"line_number":2437,"context_line":"@require_context"},{"line_number":2438,"context_line":"def _transfer_get(context, transfer_id, resource_type\u003d\u0027share\u0027, session\u003dNone):"},{"line_number":2439,"context_line":"    \"\"\"resource_type can be share or network(TODO network transfer)\"\"\""},{"line_number":2440,"context_line":"    query \u003d model_query(context, models.Transfer,"},{"line_number":2441,"context_line":"                        session\u003dsession).\\"}],"source_content_type":"text/x-python","patch_set":17,"id":"13d50f23_7e33781b","line":2438,"range":{"start_line":2438,"start_character":40,"end_line":2438,"end_character":61},"updated":"2022-09-01 22:10:33.000000000","message":"I haven\u0027t seen other ocurrences where we are consuming this yet - I understand the motivation and the intention of adding transfers to share networks but I wanted more opinions on keeping this here or adding only at the time we actually need...","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"088926b423248abf47056983e3fdead74c3190a5","unresolved":true,"context_lines":[{"line_number":2435,"context_line":""},{"line_number":2436,"context_line":""},{"line_number":2437,"context_line":"@require_context"},{"line_number":2438,"context_line":"def _transfer_get(context, transfer_id, resource_type\u003d\u0027share\u0027, session\u003dNone):"},{"line_number":2439,"context_line":"    \"\"\"resource_type can be share or network(TODO network transfer)\"\"\""},{"line_number":2440,"context_line":"    query \u003d model_query(context, models.Transfer,"},{"line_number":2441,"context_line":"                        session\u003dsession).\\"}],"source_content_type":"text/x-python","patch_set":17,"id":"e84a1db4_f44a986c","line":2438,"range":{"start_line":2438,"start_character":40,"end_line":2438,"end_character":61},"in_reply_to":"13d50f23_7e33781b","updated":"2022-09-02 08:15:15.000000000","message":"i keep it here just for network transfer later, we can also use this function, so we don\u0027t have to create a new function. let us get more opinions.","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"838199cbc337971dd675b035910a3cb16610ab4d","unresolved":false,"context_lines":[{"line_number":2435,"context_line":""},{"line_number":2436,"context_line":""},{"line_number":2437,"context_line":"@require_context"},{"line_number":2438,"context_line":"def _transfer_get(context, transfer_id, resource_type\u003d\u0027share\u0027, session\u003dNone):"},{"line_number":2439,"context_line":"    \"\"\"resource_type can be share or network(TODO network transfer)\"\"\""},{"line_number":2440,"context_line":"    query \u003d model_query(context, models.Transfer,"},{"line_number":2441,"context_line":"                        session\u003dsession).\\"}],"source_content_type":"text/x-python","patch_set":17,"id":"7b4abbe9_4c97bcf0","line":2438,"range":{"start_line":2438,"start_character":40,"end_line":2438,"end_character":61},"in_reply_to":"e84a1db4_f44a986c","updated":"2022-09-12 18:45:52.000000000","message":"Ack","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"37202021c5cfc0485830e20d8303ae91e9d8eab6","unresolved":true,"context_lines":[{"line_number":2455,"context_line":""},{"line_number":2456,"context_line":""},{"line_number":2457,"context_line":"@require_context"},{"line_number":2458,"context_line":"def transfer_get(context, transfer_id):"},{"line_number":2459,"context_line":"    return _transfer_get(context, transfer_id)"},{"line_number":2460,"context_line":""},{"line_number":2461,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"2283ccc3_634ff6ee","line":2458,"range":{"start_line":2458,"start_character":0,"end_line":2458,"end_character":39},"updated":"2022-09-01 22:10:33.000000000","message":"this method only returns _transfer_get()\nnamed like this, I believe there would not be a need for a private method. I get that in the future with share networks it would get cleaner to have two methods like:\n\nshare_transfer_get and\nshare_network_transfer_get\nand having both pointing to the private method but I don\u0027t actually think this is needed.\n\nSo I see two ways to proceed here:\nrename this method to share_transfer_get and it would call the private _transfer_get and return its result, and the future have the share_network_transfer_get also calling the private method using resource_type\u003dshare_network\n\nOr just move the content of the private method here and the callers would specify what is the kind of resource.\n\nI think the first approach will look cleaner in the future...","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"088926b423248abf47056983e3fdead74c3190a5","unresolved":false,"context_lines":[{"line_number":2455,"context_line":""},{"line_number":2456,"context_line":""},{"line_number":2457,"context_line":"@require_context"},{"line_number":2458,"context_line":"def transfer_get(context, transfer_id):"},{"line_number":2459,"context_line":"    return _transfer_get(context, transfer_id)"},{"line_number":2460,"context_line":""},{"line_number":2461,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"b3c63f6b_2716ab76","line":2458,"range":{"start_line":2458,"start_character":0,"end_line":2458,"end_character":39},"in_reply_to":"2283ccc3_634ff6ee","updated":"2022-09-02 08:15:15.000000000","message":"That\u0027s the way I think about it. Let\u0027s go with the first way","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"37202021c5cfc0485830e20d8303ae91e9d8eab6","unresolved":true,"context_lines":[{"line_number":2529,"context_line":"            share_update(context, resource_id, update)"},{"line_number":2530,"context_line":"        transfer \u003d models.Transfer()"},{"line_number":2531,"context_line":"        transfer.update(values)"},{"line_number":2532,"context_line":"        session.add(transfer)"},{"line_number":2533,"context_line":"        return transfer"},{"line_number":2534,"context_line":""},{"line_number":2535,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"232887eb_cac3a4bc","line":2532,"range":{"start_line":2532,"start_character":8,"end_line":2532,"end_character":29},"updated":"2022-09-01 22:10:33.000000000","message":"Any reason to do this instead of: transfer.save(session\u003dsession)?","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"088926b423248abf47056983e3fdead74c3190a5","unresolved":false,"context_lines":[{"line_number":2529,"context_line":"            share_update(context, resource_id, update)"},{"line_number":2530,"context_line":"        transfer \u003d models.Transfer()"},{"line_number":2531,"context_line":"        transfer.update(values)"},{"line_number":2532,"context_line":"        session.add(transfer)"},{"line_number":2533,"context_line":"        return transfer"},{"line_number":2534,"context_line":""},{"line_number":2535,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"db8c16a0_4040d4de","line":2532,"range":{"start_line":2532,"start_character":8,"end_line":2532,"end_character":29},"in_reply_to":"232887eb_cac3a4bc","updated":"2022-09-02 08:15:15.000000000","message":"No reason, it\u0027s just another way of writing it, so just to be consistent with other places, I\u0027m going to change it to save","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"37202021c5cfc0485830e20d8303ae91e9d8eab6","unresolved":true,"context_lines":[{"line_number":2595,"context_line":"                old_project_id \u003d snapshot[\u0027project_id\u0027]"},{"line_number":2596,"context_line":"                # Only check snapshot with instances"},{"line_number":2597,"context_line":"                if snapshot.get(\u0027status\u0027):"},{"line_number":2598,"context_line":"                    if snapshot.get(\u0027status\u0027) !\u003d \u0027available\u0027:"},{"line_number":2599,"context_line":"                        msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot \u0027"},{"line_number":2600,"context_line":"                                 \u0027%(snapshot_id)s is not in the expected \u0027"},{"line_number":2601,"context_line":"                                 \u0027available state.\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"e924bd17_8d44fed0","line":2598,"range":{"start_line":2598,"start_character":20,"end_line":2598,"end_character":61},"updated":"2022-09-01 22:10:33.000000000","message":"shouldn\u0027t we be checking for replicas as well? (both here and in the transfer api)","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"088926b423248abf47056983e3fdead74c3190a5","unresolved":false,"context_lines":[{"line_number":2595,"context_line":"                old_project_id \u003d snapshot[\u0027project_id\u0027]"},{"line_number":2596,"context_line":"                # Only check snapshot with instances"},{"line_number":2597,"context_line":"                if snapshot.get(\u0027status\u0027):"},{"line_number":2598,"context_line":"                    if snapshot.get(\u0027status\u0027) !\u003d \u0027available\u0027:"},{"line_number":2599,"context_line":"                        msg \u003d (_(\u0027Transfer %(transfer_id)s: Snapshot \u0027"},{"line_number":2600,"context_line":"                                 \u0027%(snapshot_id)s is not in the expected \u0027"},{"line_number":2601,"context_line":"                                 \u0027available state.\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1afda422_16161f9a","line":2598,"range":{"start_line":2598,"start_character":20,"end_line":2598,"end_character":61},"in_reply_to":"e924bd17_8d44fed0","updated":"2022-09-02 08:15:15.000000000","message":"i will move both share snapshot status check and share replica status check to transfer api. make sure we can transfer success in db layer, no need to check again in db layer. no need consider roll backup, just need to update update project id and user id,\n\nsince share instance has no project id and user id property, so no need to update replica here.","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":2554,"context_line":"        del updated_values[\u0027updated_at\u0027]"},{"line_number":2555,"context_line":"        return updated_values"},{"line_number":2556,"context_line":""},{"line_number":2557,"context_line":""},{"line_number":2558,"context_line":"def _roll_back_transferred_share_and_snapshots(context, share_id,"},{"line_number":2559,"context_line":"                                               old_user_id, old_project_id,"},{"line_number":2560,"context_line":"                                               transffered_snapshots):"},{"line_number":2561,"context_line":"    update \u003d {\u0027status\u0027: \u0027awaiting-transfer\u0027,"},{"line_number":2562,"context_line":"              \u0027user_id\u0027: old_user_id,"},{"line_number":2563,"context_line":"              \u0027project_id\u0027: old_project_id,"},{"line_number":2564,"context_line":"              \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":2565,"context_line":"    share_update(context, share_id, update)"},{"line_number":2566,"context_line":""},{"line_number":2567,"context_line":"    for snapshot_id in transffered_snapshots:"},{"line_number":2568,"context_line":"        LOG.info(\u0027Beginning to roll back transferred snapshots: %s\u0027,"},{"line_number":2569,"context_line":"                 snapshot_id)"},{"line_number":2570,"context_line":"        update \u003d {\u0027user_id\u0027: old_user_id,"},{"line_number":2571,"context_line":"                  \u0027project_id\u0027: old_project_id,"},{"line_number":2572,"context_line":"                  \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":2573,"context_line":"        share_snapshot_update(context, snapshot_id, update)"},{"line_number":2574,"context_line":""},{"line_number":2575,"context_line":""},{"line_number":2576,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":19,"id":"5df864fa_4f501af0","line":2573,"range":{"start_line":2557,"start_character":0,"end_line":2573,"end_character":59},"updated":"2022-09-05 22:23:28.000000000","message":"Which code is using this function ? I\u0027ve not found any reference to it.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":2554,"context_line":"        del updated_values[\u0027updated_at\u0027]"},{"line_number":2555,"context_line":"        return updated_values"},{"line_number":2556,"context_line":""},{"line_number":2557,"context_line":""},{"line_number":2558,"context_line":"def _roll_back_transferred_share_and_snapshots(context, share_id,"},{"line_number":2559,"context_line":"                                               old_user_id, old_project_id,"},{"line_number":2560,"context_line":"                                               transffered_snapshots):"},{"line_number":2561,"context_line":"    update \u003d {\u0027status\u0027: \u0027awaiting-transfer\u0027,"},{"line_number":2562,"context_line":"              \u0027user_id\u0027: old_user_id,"},{"line_number":2563,"context_line":"              \u0027project_id\u0027: old_project_id,"},{"line_number":2564,"context_line":"              \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":2565,"context_line":"    share_update(context, share_id, update)"},{"line_number":2566,"context_line":""},{"line_number":2567,"context_line":"    for snapshot_id in transffered_snapshots:"},{"line_number":2568,"context_line":"        LOG.info(\u0027Beginning to roll back transferred snapshots: %s\u0027,"},{"line_number":2569,"context_line":"                 snapshot_id)"},{"line_number":2570,"context_line":"        update \u003d {\u0027user_id\u0027: old_user_id,"},{"line_number":2571,"context_line":"                  \u0027project_id\u0027: old_project_id,"},{"line_number":2572,"context_line":"                  \u0027updated_at\u0027: timeutils.utcnow()}"},{"line_number":2573,"context_line":"        share_snapshot_update(context, snapshot_id, update)"},{"line_number":2574,"context_line":""},{"line_number":2575,"context_line":""},{"line_number":2576,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":19,"id":"4b4a8fbd_ae46b9d9","line":2573,"range":{"start_line":2557,"start_character":0,"end_line":2573,"end_character":59},"in_reply_to":"5df864fa_4f501af0","updated":"2022-09-07 04:16:09.000000000","message":"In the last patch update, this function was omitted, now I will delete it","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":2451,"context_line":"    if not is_admin_context(context):"},{"line_number":2452,"context_line":"        if resource_type \u003d\u003d \u0027share\u0027:"},{"line_number":2453,"context_line":"            share \u003d models.Share"},{"line_number":2454,"context_line":"            query \u003d query.filter(models.Transfer.resource_id \u003d\u003d share.id,"},{"line_number":2455,"context_line":"                                 share.project_id \u003d\u003d context.project_id)"},{"line_number":2456,"context_line":""},{"line_number":2457,"context_line":"    result \u003d query.first()"}],"source_content_type":"text/x-python","patch_set":22,"id":"2e11ca30_a5ab9ef4","line":2454,"range":{"start_line":2454,"start_character":33,"end_line":2454,"end_character":73},"updated":"2022-09-08 22:01:44.000000000","message":"you don\u0027t have a share here.. how can you filter with it?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":2451,"context_line":"    if not is_admin_context(context):"},{"line_number":2452,"context_line":"        if resource_type \u003d\u003d \u0027share\u0027:"},{"line_number":2453,"context_line":"            share \u003d models.Share"},{"line_number":2454,"context_line":"            query \u003d query.filter(models.Transfer.resource_id \u003d\u003d share.id,"},{"line_number":2455,"context_line":"                                 share.project_id \u003d\u003d context.project_id)"},{"line_number":2456,"context_line":""},{"line_number":2457,"context_line":"    result \u003d query.first()"}],"source_content_type":"text/x-python","patch_set":22,"id":"afb9fbaa_e3afdccb","line":2454,"range":{"start_line":2454,"start_character":33,"end_line":2454,"end_character":73},"in_reply_to":"2e11ca30_a5ab9ef4","updated":"2022-09-09 09:18:29.000000000","message":"share.project_id \u003d\u003d context.project_id can filter out shares with context.project_id. if those shares\u0027id corresponding transfer\u0027s transfer_id not \ncontain specified transfer_id will rerurn none.\n\nthis really work fine in my env.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":2466,"context_line":"    return _transfer_get(context, transfer_id, read_deleted\u003dread_deleted)"},{"line_number":2467,"context_line":""},{"line_number":2468,"context_line":""},{"line_number":2469,"context_line":"def _translate_transfers(transfers):"},{"line_number":2470,"context_line":"    fields \u003d (\u0027id\u0027, \u0027resource_type\u0027, \u0027resource_id\u0027, \u0027display_name\u0027,"},{"line_number":2471,"context_line":"              \u0027created_at\u0027, \u0027source_project_id\u0027, \u0027destination_project_id\u0027,"},{"line_number":2472,"context_line":"              \u0027expires_at\u0027, \u0027accepted\u0027)"},{"line_number":2473,"context_line":"    return [{k: transfer[k] for k in fields} for transfer in transfers]"},{"line_number":2474,"context_line":""},{"line_number":2475,"context_line":""},{"line_number":2476,"context_line":"def _transfer_get_all(context, limit\u003dNone, sort_key\u003dNone,"}],"source_content_type":"text/x-python","patch_set":22,"id":"4f29b70c_d774c00f","line":2473,"range":{"start_line":2469,"start_character":0,"end_line":2473,"end_character":71},"updated":"2022-09-08 22:01:44.000000000","message":"Why is this necessary?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":2466,"context_line":"    return _transfer_get(context, transfer_id, read_deleted\u003dread_deleted)"},{"line_number":2467,"context_line":""},{"line_number":2468,"context_line":""},{"line_number":2469,"context_line":"def _translate_transfers(transfers):"},{"line_number":2470,"context_line":"    fields \u003d (\u0027id\u0027, \u0027resource_type\u0027, \u0027resource_id\u0027, \u0027display_name\u0027,"},{"line_number":2471,"context_line":"              \u0027created_at\u0027, \u0027source_project_id\u0027, \u0027destination_project_id\u0027,"},{"line_number":2472,"context_line":"              \u0027expires_at\u0027, \u0027accepted\u0027)"},{"line_number":2473,"context_line":"    return [{k: transfer[k] for k in fields} for transfer in transfers]"},{"line_number":2474,"context_line":""},{"line_number":2475,"context_line":""},{"line_number":2476,"context_line":"def _transfer_get_all(context, limit\u003dNone, sort_key\u003dNone,"}],"source_content_type":"text/x-python","patch_set":22,"id":"a726f793_4171eeba","line":2473,"range":{"start_line":2469,"start_character":0,"end_line":2473,"end_character":71},"in_reply_to":"4f29b70c_d774c00f","updated":"2022-09-09 09:18:29.000000000","message":"to make  sure transfer_get_all return list type. but i test again. it works fine without this translate. \nand make sure salt and crypt_hash will not return to rest response, but api/view has filter out.\nso it seems not unnecessary, i will remove it.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":2491,"context_line":"                                         sort_key\u003dsort_key,"},{"line_number":2492,"context_line":"                                         sort_dir\u003dsort_dir,"},{"line_number":2493,"context_line":"                                         offset\u003doffset)"},{"line_number":2494,"context_line":"        if query is None:"},{"line_number":2495,"context_line":"            return []"},{"line_number":2496,"context_line":"        return _translate_transfers(query.all())"},{"line_number":2497,"context_line":""},{"line_number":2498,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3e49654d_17e04e5e","line":2495,"range":{"start_line":2494,"start_character":8,"end_line":2495,"end_character":21},"updated":"2022-09-08 22:01:44.000000000","message":"this condition won\u0027t ever be true","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":2491,"context_line":"                                         sort_key\u003dsort_key,"},{"line_number":2492,"context_line":"                                         sort_dir\u003dsort_dir,"},{"line_number":2493,"context_line":"                                         offset\u003doffset)"},{"line_number":2494,"context_line":"        if query is None:"},{"line_number":2495,"context_line":"            return []"},{"line_number":2496,"context_line":"        return _translate_transfers(query.all())"},{"line_number":2497,"context_line":""},{"line_number":2498,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"d508df17_587e0531","line":2495,"range":{"start_line":2494,"start_character":8,"end_line":2495,"end_character":21},"in_reply_to":"3e49654d_17e04e5e","updated":"2022-09-09 09:18:29.000000000","message":"will remove it, not useful.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":2493,"context_line":"                                         offset\u003doffset)"},{"line_number":2494,"context_line":"        if query is None:"},{"line_number":2495,"context_line":"            return []"},{"line_number":2496,"context_line":"        return _translate_transfers(query.all())"},{"line_number":2497,"context_line":""},{"line_number":2498,"context_line":""},{"line_number":2499,"context_line":"@require_admin_context"}],"source_content_type":"text/x-python","patch_set":22,"id":"6594ce93_37c8465e","line":2496,"range":{"start_line":2496,"start_character":15,"end_line":2496,"end_character":48},"updated":"2022-09-08 22:01:44.000000000","message":"why are we dictifying this here?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":2493,"context_line":"                                         offset\u003doffset)"},{"line_number":2494,"context_line":"        if query is None:"},{"line_number":2495,"context_line":"            return []"},{"line_number":2496,"context_line":"        return _translate_transfers(query.all())"},{"line_number":2497,"context_line":""},{"line_number":2498,"context_line":""},{"line_number":2499,"context_line":"@require_admin_context"}],"source_content_type":"text/x-python","patch_set":22,"id":"9eed89e9_efbc95a8","line":2496,"range":{"start_line":2496,"start_character":15,"end_line":2496,"end_character":48},"in_reply_to":"6594ce93_37c8465e","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":2508,"context_line":"def transfer_get_all_by_project(context, project_id,"},{"line_number":2509,"context_line":"                                limit\u003dNone, sort_key\u003dNone,"},{"line_number":2510,"context_line":"                                sort_dir\u003dNone, filters\u003dNone, offset\u003dNone):"},{"line_number":2511,"context_line":"    authorize_project_context(context, project_id)"},{"line_number":2512,"context_line":"    filters \u003d filters.copy() if filters else {}"},{"line_number":2513,"context_line":"    filters[\u0027source_project_id\u0027] \u003d project_id"},{"line_number":2514,"context_line":"    return _transfer_get_all(context, limit\u003dlimit,"}],"source_content_type":"text/x-python","patch_set":22,"id":"8a91a610_c86bd4e4","line":2511,"range":{"start_line":2511,"start_character":4,"end_line":2511,"end_character":50},"updated":"2022-09-08 22:01:44.000000000","message":"this call isn\u0027t helpful because you\u0027re setting project_id as context.project_id in the calling method.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":2508,"context_line":"def transfer_get_all_by_project(context, project_id,"},{"line_number":2509,"context_line":"                                limit\u003dNone, sort_key\u003dNone,"},{"line_number":2510,"context_line":"                                sort_dir\u003dNone, filters\u003dNone, offset\u003dNone):"},{"line_number":2511,"context_line":"    authorize_project_context(context, project_id)"},{"line_number":2512,"context_line":"    filters \u003d filters.copy() if filters else {}"},{"line_number":2513,"context_line":"    filters[\u0027source_project_id\u0027] \u003d project_id"},{"line_number":2514,"context_line":"    return _transfer_get_all(context, limit\u003dlimit,"}],"source_content_type":"text/x-python","patch_set":22,"id":"260041e1_f4c28482","line":2511,"range":{"start_line":2511,"start_character":4,"end_line":2511,"end_character":50},"in_reply_to":"8a91a610_c86bd4e4","updated":"2022-09-09 09:18:29.000000000","message":"remove it.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":2553,"context_line":"        query \u003d model_query(context, models.Transfer,"},{"line_number":2554,"context_line":"                            session\u003dsession).filter_by(id\u003dtransfer_id)"},{"line_number":2555,"context_line":""},{"line_number":2556,"context_line":"        updated_values \u003d {\u0027deleted\u0027: True,"},{"line_number":2557,"context_line":"                          \u0027deleted_at\u0027: utcnow,"},{"line_number":2558,"context_line":"                          \u0027updated_at\u0027: utcnow}"},{"line_number":2559,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"364a5569_68ad9c2d","line":2556,"range":{"start_line":2556,"start_character":26,"end_line":2556,"end_character":42},"updated":"2022-09-08 22:01:44.000000000","message":"the \"deleted\" field is of type string(36); you\u0027ll want to use the soft_delete logic here..","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":2553,"context_line":"        query \u003d model_query(context, models.Transfer,"},{"line_number":2554,"context_line":"                            session\u003dsession).filter_by(id\u003dtransfer_id)"},{"line_number":2555,"context_line":""},{"line_number":2556,"context_line":"        updated_values \u003d {\u0027deleted\u0027: True,"},{"line_number":2557,"context_line":"                          \u0027deleted_at\u0027: utcnow,"},{"line_number":2558,"context_line":"                          \u0027updated_at\u0027: utcnow}"},{"line_number":2559,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"c43bc1cf_7ab4d0ab","line":2556,"range":{"start_line":2556,"start_character":26,"end_line":2556,"end_character":42},"in_reply_to":"364a5569_68ad9c2d","updated":"2022-09-09 09:18:29.000000000","message":"i will update sa.string(36) to sa.Boolean in alembic, and here keep.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":2558,"context_line":"                          \u0027updated_at\u0027: utcnow}"},{"line_number":2559,"context_line":""},{"line_number":2560,"context_line":"        query.update(updated_values)"},{"line_number":2561,"context_line":"        del updated_values[\u0027updated_at\u0027]"},{"line_number":2562,"context_line":"        return updated_values"},{"line_number":2563,"context_line":""},{"line_number":2564,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"f597d28f_3b0313ae","line":2561,"range":{"start_line":2561,"start_character":8,"end_line":2561,"end_character":40},"updated":"2022-09-08 22:01:44.000000000","message":"why delete this?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":2558,"context_line":"                          \u0027updated_at\u0027: utcnow}"},{"line_number":2559,"context_line":""},{"line_number":2560,"context_line":"        query.update(updated_values)"},{"line_number":2561,"context_line":"        del updated_values[\u0027updated_at\u0027]"},{"line_number":2562,"context_line":"        return updated_values"},{"line_number":2563,"context_line":""},{"line_number":2564,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"1e97f113_408cfe32","line":2561,"range":{"start_line":2561,"start_character":8,"end_line":2561,"end_character":40},"in_reply_to":"f597d28f_3b0313ae","updated":"2022-09-09 09:18:29.000000000","message":"it seems not need to return, will remove those two lines.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":2559,"context_line":""},{"line_number":2560,"context_line":"        query.update(updated_values)"},{"line_number":2561,"context_line":"        del updated_values[\u0027updated_at\u0027]"},{"line_number":2562,"context_line":"        return updated_values"},{"line_number":2563,"context_line":""},{"line_number":2564,"context_line":""},{"line_number":2565,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":22,"id":"b91980ff_5a7ce264","line":2562,"range":{"start_line":2562,"start_character":8,"end_line":2562,"end_character":29},"updated":"2022-09-08 22:01:44.000000000","message":"don\u0027t think any return values are useful here","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":2559,"context_line":""},{"line_number":2560,"context_line":"        query.update(updated_values)"},{"line_number":2561,"context_line":"        del updated_values[\u0027updated_at\u0027]"},{"line_number":2562,"context_line":"        return updated_values"},{"line_number":2563,"context_line":""},{"line_number":2564,"context_line":""},{"line_number":2565,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":22,"id":"2cea9960_f0afcbad","line":2562,"range":{"start_line":2562,"start_character":8,"end_line":2562,"end_character":29},"in_reply_to":"b91980ff_5a7ce264","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b2222cb2826d105e5b998fee23c6694bc87440","unresolved":true,"context_lines":[{"line_number":2562,"context_line":"        return updated_values"},{"line_number":2563,"context_line":""},{"line_number":2564,"context_line":""},{"line_number":2565,"context_line":"@require_context"},{"line_number":2566,"context_line":"def transfer_accept(context, transfer_id, user_id, project_id,"},{"line_number":2567,"context_line":"                    accept_snapshots\u003dFalse):"},{"line_number":2568,"context_line":"    session \u003d get_session()"}],"source_content_type":"text/x-python","patch_set":22,"id":"47bf955f_b08b1116","line":2565,"range":{"start_line":2565,"start_character":0,"end_line":2565,"end_character":16},"updated":"2022-09-08 22:45:11.000000000","message":"we may want to retry on deadlock?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":2562,"context_line":"        return updated_values"},{"line_number":2563,"context_line":""},{"line_number":2564,"context_line":""},{"line_number":2565,"context_line":"@require_context"},{"line_number":2566,"context_line":"def transfer_accept(context, transfer_id, user_id, project_id,"},{"line_number":2567,"context_line":"                    accept_snapshots\u003dFalse):"},{"line_number":2568,"context_line":"    session \u003d get_session()"}],"source_content_type":"text/x-python","patch_set":22,"id":"911cd28c_c91a1ee8","line":2565,"range":{"start_line":2565,"start_character":0,"end_line":2565,"end_character":16},"in_reply_to":"47bf955f_b08b1116","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":2540,"context_line":"        transfer \u003d models.Transfer()"},{"line_number":2541,"context_line":"        transfer.update(values)"},{"line_number":2542,"context_line":"        transfer.save(session\u003dsession)"},{"line_number":2543,"context_line":"        update \u003d {\u0027status\u0027: \u0027awaiting-transfer\u0027}"},{"line_number":2544,"context_line":"        if values[\u0027resource_type\u0027] \u003d\u003d \u0027share\u0027:"},{"line_number":2545,"context_line":"            share_update(context, resource_id, update)"},{"line_number":2546,"context_line":"        return transfer"}],"source_content_type":"text/x-python","patch_set":30,"id":"4b7d2d1d_b4615f1f","line":2543,"range":{"start_line":2543,"start_character":28,"end_line":2543,"end_character":47},"updated":"2022-09-12 23:13:59.000000000","message":"add this status to constants.py and use for consistency..","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":2540,"context_line":"        transfer \u003d models.Transfer()"},{"line_number":2541,"context_line":"        transfer.update(values)"},{"line_number":2542,"context_line":"        transfer.save(session\u003dsession)"},{"line_number":2543,"context_line":"        update \u003d {\u0027status\u0027: \u0027awaiting-transfer\u0027}"},{"line_number":2544,"context_line":"        if values[\u0027resource_type\u0027] \u003d\u003d \u0027share\u0027:"},{"line_number":2545,"context_line":"            share_update(context, resource_id, update)"},{"line_number":2546,"context_line":"        return transfer"}],"source_content_type":"text/x-python","patch_set":30,"id":"7490a14d_8b0fca6f","line":2543,"range":{"start_line":2543,"start_character":28,"end_line":2543,"end_character":47},"in_reply_to":"4b7d2d1d_b4615f1f","updated":"2022-09-19 02:43:31.000000000","message":"Done","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":713,"context_line":""},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"@require_context"},{"line_number":716,"context_line":"@context_manager.reader"},{"line_number":717,"context_line":"def quota_get_all(context, project_id):"},{"line_number":718,"context_line":"    authorize_project_context(context, project_id)"},{"line_number":719,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"a47571f7_21671475","line":716,"range":{"start_line":716,"start_character":0,"end_line":716,"end_character":23},"updated":"2023-02-03 01:01:05.000000000","message":"reader context, see the query formatting here","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":713,"context_line":""},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"@require_context"},{"line_number":716,"context_line":"@context_manager.reader"},{"line_number":717,"context_line":"def quota_get_all(context, project_id):"},{"line_number":718,"context_line":"    authorize_project_context(context, project_id)"},{"line_number":719,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"f6b930f2_d0a4d226","line":716,"range":{"start_line":716,"start_character":0,"end_line":716,"end_character":23},"in_reply_to":"a47571f7_21671475","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":725,"context_line":""},{"line_number":726,"context_line":""},{"line_number":727,"context_line":"@require_admin_context"},{"line_number":728,"context_line":"@context_manager.writer"},{"line_number":729,"context_line":"def quota_create("},{"line_number":730,"context_line":"    context,"},{"line_number":731,"context_line":"    project_id,"}],"source_content_type":"text/x-python","patch_set":36,"id":"6fcd9eb0_05496f80","line":728,"range":{"start_line":728,"start_character":0,"end_line":728,"end_character":23},"updated":"2023-02-03 01:01:05.000000000","message":"writer context","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":725,"context_line":""},{"line_number":726,"context_line":""},{"line_number":727,"context_line":"@require_admin_context"},{"line_number":728,"context_line":"@context_manager.writer"},{"line_number":729,"context_line":"def quota_create("},{"line_number":730,"context_line":"    context,"},{"line_number":731,"context_line":"    project_id,"}],"source_content_type":"text/x-python","patch_set":36,"id":"5f593efc_ee949768","line":728,"range":{"start_line":728,"start_character":0,"end_line":728,"end_character":23},"in_reply_to":"6fcd9eb0_05496f80","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":2482,"context_line":"###################"},{"line_number":2483,"context_line":""},{"line_number":2484,"context_line":""},{"line_number":2485,"context_line":"@require_context"},{"line_number":2486,"context_line":"def _transfer_get(context, transfer_id, resource_type\u003d\u0027share\u0027,"},{"line_number":2487,"context_line":"                  session\u003dNone, read_deleted\u003dFalse):"},{"line_number":2488,"context_line":"    \"\"\"resource_type can be share or network(TODO network transfer)\"\"\""}],"source_content_type":"text/x-python","patch_set":36,"id":"fc2a146e_d51929a0","line":2485,"range":{"start_line":2485,"start_character":1,"end_line":2485,"end_character":16},"updated":"2023-02-03 01:01:05.000000000","message":"we\u0027ve started adopting sqlalchemy2.0, and the EngineFacade from oslo.db which gives us a new way to initiate/handle sessions. See examples i\u0027ve commented on above","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":2482,"context_line":"###################"},{"line_number":2483,"context_line":""},{"line_number":2484,"context_line":""},{"line_number":2485,"context_line":"@require_context"},{"line_number":2486,"context_line":"def _transfer_get(context, transfer_id, resource_type\u003d\u0027share\u0027,"},{"line_number":2487,"context_line":"                  session\u003dNone, read_deleted\u003dFalse):"},{"line_number":2488,"context_line":"    \"\"\"resource_type can be share or network(TODO network transfer)\"\"\""}],"source_content_type":"text/x-python","patch_set":36,"id":"fc3505ff_c770920f","line":2485,"range":{"start_line":2485,"start_character":1,"end_line":2485,"end_character":16},"in_reply_to":"fc2a146e_d51929a0","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":2504,"context_line":""},{"line_number":2505,"context_line":""},{"line_number":2506,"context_line":"@require_context"},{"line_number":2507,"context_line":"def share_transfer_get(context, transfer_id, read_deleted\u003dFalse):"},{"line_number":2508,"context_line":"    return _transfer_get(context, transfer_id, read_deleted\u003dread_deleted)"},{"line_number":2509,"context_line":""},{"line_number":2510,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"7221e82e_363ed8de","line":2507,"range":{"start_line":2507,"start_character":4,"end_line":2507,"end_character":22},"updated":"2023-02-03 01:01:05.000000000","message":"same comments as above for this method and all the methods below","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":2504,"context_line":""},{"line_number":2505,"context_line":""},{"line_number":2506,"context_line":"@require_context"},{"line_number":2507,"context_line":"def share_transfer_get(context, transfer_id, read_deleted\u003dFalse):"},{"line_number":2508,"context_line":"    return _transfer_get(context, transfer_id, read_deleted\u003dread_deleted)"},{"line_number":2509,"context_line":""},{"line_number":2510,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"6894e3dc_25020a3c","line":2507,"range":{"start_line":2507,"start_character":4,"end_line":2507,"end_character":22},"in_reply_to":"7221e82e_363ed8de","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":2587,"context_line":"        query \u003d model_query(context, models.Transfer,"},{"line_number":2588,"context_line":"                            session\u003dsession).filter_by(id\u003dtransfer_id)"},{"line_number":2589,"context_line":""},{"line_number":2590,"context_line":"        updated_values \u003d {\u0027deleted\u0027: True,"},{"line_number":2591,"context_line":"                          \u0027deleted_at\u0027: utcnow,"},{"line_number":2592,"context_line":"                          \u0027updated_at\u0027: utcnow}"},{"line_number":2593,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"f7ddbf70_ab109ef1","line":2590,"range":{"start_line":2590,"start_character":0,"end_line":2590,"end_character":42},"updated":"2023-02-03 01:01:05.000000000","message":"deleted is a string with 36 chars - so you should use the soft_delete logic here","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":2587,"context_line":"        query \u003d model_query(context, models.Transfer,"},{"line_number":2588,"context_line":"                            session\u003dsession).filter_by(id\u003dtransfer_id)"},{"line_number":2589,"context_line":""},{"line_number":2590,"context_line":"        updated_values \u003d {\u0027deleted\u0027: True,"},{"line_number":2591,"context_line":"                          \u0027deleted_at\u0027: utcnow,"},{"line_number":2592,"context_line":"                          \u0027updated_at\u0027: utcnow}"},{"line_number":2593,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"e269cb1d_82942196","line":2590,"range":{"start_line":2590,"start_character":0,"end_line":2590,"end_character":42},"in_reply_to":"f7ddbf70_ab109ef1","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"}],"manila/exception.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"de7f4ec36476e18ab77c79c865f3563ac4962028","unresolved":true,"context_lines":[{"line_number":555,"context_line":"    message \u003d _(\"Invalid or unsupported share access type: %(type)s.\")"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"class DriverTransferShareWithRules(ManilaException):"},{"line_number":559,"context_line":"    message \u003d _(\"Driver failed to transfer share with rules.\")"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"8caffad6_7be2709e","line":558,"range":{"start_line":558,"start_character":6,"end_line":558,"end_character":34},"updated":"2023-02-17 07:10:57.000000000","message":"perhaps:\n\n  DriverCannotTransferShareWithRules\n  \nto make the exception name represent the error better","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"17eeb2f9103b101bb42d3b7301afd7004654ad5b","unresolved":false,"context_lines":[{"line_number":555,"context_line":"    message \u003d _(\"Invalid or unsupported share access type: %(type)s.\")"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"class DriverTransferShareWithRules(ManilaException):"},{"line_number":559,"context_line":"    message \u003d _(\"Driver failed to transfer share with rules.\")"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"c79ab3e4_ee3fe095","line":558,"range":{"start_line":558,"start_character":6,"end_line":558,"end_character":34},"in_reply_to":"8caffad6_7be2709e","updated":"2023-02-17 08:06:03.000000000","message":"Done","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"}],"manila/message/message_field.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"de7f4ec36476e18ab77c79c865f3563ac4962028","unresolved":true,"context_lines":[{"line_number":140,"context_line":"          \"security service to the share network.\"))"},{"line_number":141,"context_line":"    DRIVER_FAILED_TRANSFER_ACCEPT \u003d ("},{"line_number":142,"context_line":"        \u0027026\u0027,"},{"line_number":143,"context_line":"        _(\"Share Driver failed to transfer accept a share, maybe update\""},{"line_number":144,"context_line":"          \"access in driver failed.\"))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    ALL \u003d ("},{"line_number":147,"context_line":"        UNKNOWN_ERROR,"}],"source_content_type":"text/x-python","patch_set":50,"id":"191aad03_d844e0b3","line":144,"range":{"start_line":143,"start_character":11,"end_line":144,"end_character":35},"updated":"2023-02-17 07:10:57.000000000","message":"Share transfer cannot be accepted without clearing access rules.","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"17eeb2f9103b101bb42d3b7301afd7004654ad5b","unresolved":false,"context_lines":[{"line_number":140,"context_line":"          \"security service to the share network.\"))"},{"line_number":141,"context_line":"    DRIVER_FAILED_TRANSFER_ACCEPT \u003d ("},{"line_number":142,"context_line":"        \u0027026\u0027,"},{"line_number":143,"context_line":"        _(\"Share Driver failed to transfer accept a share, maybe update\""},{"line_number":144,"context_line":"          \"access in driver failed.\"))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    ALL \u003d ("},{"line_number":147,"context_line":"        UNKNOWN_ERROR,"}],"source_content_type":"text/x-python","patch_set":50,"id":"153e4d41_7116342d","line":144,"range":{"start_line":143,"start_character":11,"end_line":144,"end_character":35},"in_reply_to":"191aad03_d844e0b3","updated":"2023-02-17 08:06:03.000000000","message":"Done","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"}],"manila/policies/share_transfer.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":22,"id":"f9da3dbe_12b239c0","updated":"2022-09-08 19:10:08.000000000","message":"We\u0027re currently in the process of supporting the \"scope\" attribute on keystone users... so while we\u0027re transitioning, we need to support both a \"legacy\" format for users without their scope attribute, and the new format with scope. So, while it sounds strange, we need to add deprecated policies for these new APIs without the need for the \"scope\". Please take a look at other policy files here where that\u0027s being done..","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"d3ace8ea_94bd2f9b","in_reply_to":"f9da3dbe_12b239c0","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":23,"context_line":"share_transfer_policies \u003d ["},{"line_number":24,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":25,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027get_all\u0027,"},{"line_number":26,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_OWNER,"},{"line_number":27,"context_line":"        description\u003d\"List share transfer.\","},{"line_number":28,"context_line":"        operations\u003d["},{"line_number":29,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":22,"id":"92c9b6d6_3f7fa308","line":26,"range":{"start_line":26,"start_character":18,"end_line":26,"end_character":42},"updated":"2022-09-08 19:10:08.000000000","message":"use the persona supporting scope: \"base.PROJECT_READER\"; and for the deprecated policy: \"base.RULE_DEFAULT\"","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":23,"context_line":"share_transfer_policies \u003d ["},{"line_number":24,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":25,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027get_all\u0027,"},{"line_number":26,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_OWNER,"},{"line_number":27,"context_line":"        description\u003d\"List share transfer.\","},{"line_number":28,"context_line":"        operations\u003d["},{"line_number":29,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":22,"id":"06b087cd_28b3691c","line":26,"range":{"start_line":26,"start_character":18,"end_line":26,"end_character":42},"in_reply_to":"92c9b6d6_3f7fa308","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    ),"},{"line_number":39,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":40,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027create\u0027,"},{"line_number":41,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_OWNER,"},{"line_number":42,"context_line":"        description\u003d\"Create a share transfer.\","},{"line_number":43,"context_line":"        operations\u003d["},{"line_number":44,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":22,"id":"f85b1961_13cc5dff","line":41,"range":{"start_line":41,"start_character":23,"end_line":41,"end_character":42},"updated":"2022-09-08 19:10:08.000000000","message":"use the persona supporting scope: \"base.PROJECT_MEMBER\"","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    ),"},{"line_number":39,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":40,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027create\u0027,"},{"line_number":41,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_OWNER,"},{"line_number":42,"context_line":"        description\u003d\"Create a share transfer.\","},{"line_number":43,"context_line":"        operations\u003d["},{"line_number":44,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":22,"id":"ed3f18a5_70c03582","line":41,"range":{"start_line":41,"start_character":23,"end_line":41,"end_character":42},"in_reply_to":"f85b1961_13cc5dff","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":49,"context_line":"    ),"},{"line_number":50,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":51,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027get\u0027,"},{"line_number":52,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_OWNER,"},{"line_number":53,"context_line":"        description\u003d\"Show one specified share transfer.\","},{"line_number":54,"context_line":"        operations\u003d["},{"line_number":55,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":22,"id":"780d4e63_7320a449","line":52,"range":{"start_line":52,"start_character":18,"end_line":52,"end_character":42},"updated":"2022-09-08 19:10:08.000000000","message":"use the persona supporting scope: \"base.PROJECT_READER\" for the new policy; and for the deprecated policy: \"base.RULE_DEFAULT\"","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    ),"},{"line_number":50,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":51,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027get\u0027,"},{"line_number":52,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_OWNER,"},{"line_number":53,"context_line":"        description\u003d\"Show one specified share transfer.\","},{"line_number":54,"context_line":"        operations\u003d["},{"line_number":55,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":22,"id":"555c8178_9c95c60c","line":52,"range":{"start_line":52,"start_character":18,"end_line":52,"end_character":42},"in_reply_to":"780d4e63_7320a449","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    ),"},{"line_number":61,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":62,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027accept\u0027,"},{"line_number":63,"context_line":"        check_str\u003d\"\","},{"line_number":64,"context_line":"        description\u003d\"Accept a share transfer.\","},{"line_number":65,"context_line":"        operations\u003d["},{"line_number":66,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":22,"id":"13e5f7aa_3e8fcffe","line":63,"range":{"start_line":63,"start_character":18,"end_line":63,"end_character":20},"updated":"2022-09-08 19:10:08.000000000","message":"check_str can\u0027t be empty.. use \"base.PROJECT_MEMBER\" for the new policy and \"base.RULE_DEFAULT\" for the deprecated policy; example: https://review.opendev.org/c/openstack/manila/+/856394/2/manila/policies/message.py","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    ),"},{"line_number":61,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":62,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027accept\u0027,"},{"line_number":63,"context_line":"        check_str\u003d\"\","},{"line_number":64,"context_line":"        description\u003d\"Accept a share transfer.\","},{"line_number":65,"context_line":"        operations\u003d["},{"line_number":66,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":22,"id":"7e33fa93_971e6f7d","line":63,"range":{"start_line":63,"start_character":18,"end_line":63,"end_character":20},"in_reply_to":"13e5f7aa_3e8fcffe","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":71,"context_line":"    ),"},{"line_number":72,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":73,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027delete\u0027,"},{"line_number":74,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_OWNER,"},{"line_number":75,"context_line":"        description\u003d\"Delete share transfer.\","},{"line_number":76,"context_line":"        operations\u003d["},{"line_number":77,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":22,"id":"44228d45_b63c814d","line":74,"range":{"start_line":74,"start_character":18,"end_line":74,"end_character":42},"updated":"2022-09-08 19:10:08.000000000","message":"use the persona supporting scope: \"base.PROJECT_MEMBER\" for the new policy and \"base.RULE_DEFAULT\" for the deprecated policy","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    ),"},{"line_number":72,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":73,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027delete\u0027,"},{"line_number":74,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_OWNER,"},{"line_number":75,"context_line":"        description\u003d\"Delete share transfer.\","},{"line_number":76,"context_line":"        operations\u003d["},{"line_number":77,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":22,"id":"07592ea1_07a59234","line":74,"range":{"start_line":74,"start_character":18,"end_line":74,"end_character":42},"in_reply_to":"44228d45_b63c814d","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027get_all\u0027,"},{"line_number":30,"context_line":"    check_str\u003dbase.RULE_DEFAULT,"},{"line_number":31,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":32,"context_line":"    deprecated_since\u003dversionutils.deprecated.WALLABY"},{"line_number":33,"context_line":")"},{"line_number":34,"context_line":"deprecated_share_transfer_create \u003d policy.DeprecatedRule("},{"line_number":35,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027create\u0027,"}],"source_content_type":"text/x-python","patch_set":30,"id":"b463011a_81b24555","line":32,"range":{"start_line":32,"start_character":21,"end_line":32,"end_character":52},"updated":"2022-09-12 23:13:59.000000000","message":"\"Antelope\"","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027get_all\u0027,"},{"line_number":30,"context_line":"    check_str\u003dbase.RULE_DEFAULT,"},{"line_number":31,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":32,"context_line":"    deprecated_since\u003dversionutils.deprecated.WALLABY"},{"line_number":33,"context_line":")"},{"line_number":34,"context_line":"deprecated_share_transfer_create \u003d policy.DeprecatedRule("},{"line_number":35,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027create\u0027,"}],"source_content_type":"text/x-python","patch_set":30,"id":"2d54b5ac_1dfc5926","line":32,"range":{"start_line":32,"start_character":21,"end_line":32,"end_character":52},"in_reply_to":"b463011a_81b24555","updated":"2022-09-19 02:43:31.000000000","message":"Done","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":35,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027create\u0027,"},{"line_number":36,"context_line":"    check_str\u003dbase.RULE_DEFAULT,"},{"line_number":37,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":38,"context_line":"    deprecated_since\u003dversionutils.deprecated.WALLABY"},{"line_number":39,"context_line":")"},{"line_number":40,"context_line":"deprecated_share_transfer_get \u003d policy.DeprecatedRule("},{"line_number":41,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027get\u0027,"}],"source_content_type":"text/x-python","patch_set":30,"id":"2fe61775_369aed02","line":38,"range":{"start_line":38,"start_character":21,"end_line":38,"end_character":52},"updated":"2022-09-12 23:13:59.000000000","message":"\"Antelope\"","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027create\u0027,"},{"line_number":36,"context_line":"    check_str\u003dbase.RULE_DEFAULT,"},{"line_number":37,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":38,"context_line":"    deprecated_since\u003dversionutils.deprecated.WALLABY"},{"line_number":39,"context_line":")"},{"line_number":40,"context_line":"deprecated_share_transfer_get \u003d policy.DeprecatedRule("},{"line_number":41,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027get\u0027,"}],"source_content_type":"text/x-python","patch_set":30,"id":"be6c2ac6_a0929c8f","line":38,"range":{"start_line":38,"start_character":21,"end_line":38,"end_character":52},"in_reply_to":"2fe61775_369aed02","updated":"2022-09-19 02:43:31.000000000","message":"Done","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":41,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027get\u0027,"},{"line_number":42,"context_line":"    check_str\u003dbase.RULE_DEFAULT,"},{"line_number":43,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":44,"context_line":"    deprecated_since\u003dversionutils.deprecated.WALLABY"},{"line_number":45,"context_line":")"},{"line_number":46,"context_line":"deprecated_share_transfer_accept \u003d policy.DeprecatedRule("},{"line_number":47,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027accept\u0027,"}],"source_content_type":"text/x-python","patch_set":30,"id":"63eb9028_83476c2d","line":44,"range":{"start_line":44,"start_character":21,"end_line":44,"end_character":52},"updated":"2022-09-12 23:13:59.000000000","message":"\"Antelope\"","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027get\u0027,"},{"line_number":42,"context_line":"    check_str\u003dbase.RULE_DEFAULT,"},{"line_number":43,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":44,"context_line":"    deprecated_since\u003dversionutils.deprecated.WALLABY"},{"line_number":45,"context_line":")"},{"line_number":46,"context_line":"deprecated_share_transfer_accept \u003d policy.DeprecatedRule("},{"line_number":47,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027accept\u0027,"}],"source_content_type":"text/x-python","patch_set":30,"id":"ddf6f785_e271d52a","line":44,"range":{"start_line":44,"start_character":21,"end_line":44,"end_character":52},"in_reply_to":"63eb9028_83476c2d","updated":"2022-09-19 02:43:31.000000000","message":"Done","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":47,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027accept\u0027,"},{"line_number":48,"context_line":"    check_str\u003dbase.RULE_DEFAULT,"},{"line_number":49,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":50,"context_line":"    deprecated_since\u003dversionutils.deprecated.WALLABY"},{"line_number":51,"context_line":")"},{"line_number":52,"context_line":"deprecated_share_transfer_delete \u003d policy.DeprecatedRule("},{"line_number":53,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027delete\u0027,"}],"source_content_type":"text/x-python","patch_set":30,"id":"ce89dc10_1c7512c6","line":50,"range":{"start_line":50,"start_character":21,"end_line":50,"end_character":52},"updated":"2022-09-12 23:13:59.000000000","message":"\"Antelope\"","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027accept\u0027,"},{"line_number":48,"context_line":"    check_str\u003dbase.RULE_DEFAULT,"},{"line_number":49,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":50,"context_line":"    deprecated_since\u003dversionutils.deprecated.WALLABY"},{"line_number":51,"context_line":")"},{"line_number":52,"context_line":"deprecated_share_transfer_delete \u003d policy.DeprecatedRule("},{"line_number":53,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027delete\u0027,"}],"source_content_type":"text/x-python","patch_set":30,"id":"3e5e2725_0c29750f","line":50,"range":{"start_line":50,"start_character":21,"end_line":50,"end_character":52},"in_reply_to":"ce89dc10_1c7512c6","updated":"2022-09-19 02:43:31.000000000","message":"Done","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":53,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027delete\u0027,"},{"line_number":54,"context_line":"    check_str\u003dbase.RULE_DEFAULT,"},{"line_number":55,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":56,"context_line":"    deprecated_since\u003dversionutils.deprecated.WALLABY"},{"line_number":57,"context_line":")"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"206f7a26_2d72c5bc","line":56,"range":{"start_line":56,"start_character":21,"end_line":56,"end_character":52},"updated":"2022-09-12 23:13:59.000000000","message":"\"Antelope\"","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027delete\u0027,"},{"line_number":54,"context_line":"    check_str\u003dbase.RULE_DEFAULT,"},{"line_number":55,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":56,"context_line":"    deprecated_since\u003dversionutils.deprecated.WALLABY"},{"line_number":57,"context_line":")"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"a8674efb_2940996a","line":56,"range":{"start_line":56,"start_character":21,"end_line":56,"end_character":52},"in_reply_to":"206f7a26_2d72c5bc","updated":"2022-09-19 02:43:31.000000000","message":"Done","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":65,"context_line":"share_transfer_policies \u003d ["},{"line_number":66,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":67,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027get_all\u0027,"},{"line_number":68,"context_line":"        check_str\u003dbase.PROJECT_READER,"},{"line_number":69,"context_line":"        description\u003d\"List share transfers.\","},{"line_number":70,"context_line":"        operations\u003d["},{"line_number":71,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":36,"id":"7fef4f41_ee8f6cb6","line":68,"range":{"start_line":68,"start_character":23,"end_line":68,"end_character":37},"updated":"2023-02-03 01:01:05.000000000","message":"ADMIN_OR_PROJECT_READER","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":65,"context_line":"share_transfer_policies \u003d ["},{"line_number":66,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":67,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027get_all\u0027,"},{"line_number":68,"context_line":"        check_str\u003dbase.PROJECT_READER,"},{"line_number":69,"context_line":"        description\u003d\"List share transfers.\","},{"line_number":70,"context_line":"        operations\u003d["},{"line_number":71,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":36,"id":"8716f672_7df66ce2","line":68,"range":{"start_line":68,"start_character":23,"end_line":68,"end_character":37},"in_reply_to":"7fef4f41_ee8f6cb6","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        operations\u003d["},{"line_number":71,"context_line":"            {"},{"line_number":72,"context_line":"                \u0027method\u0027: \u0027GET\u0027,"},{"line_number":73,"context_line":"                \u0027path\u0027: \u0027/share_transfers\u0027"},{"line_number":74,"context_line":"            },"},{"line_number":75,"context_line":"            {"},{"line_number":76,"context_line":"                \u0027method\u0027: \u0027GET\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"b228c314_55d82a07","line":73,"range":{"start_line":73,"start_character":26,"end_line":73,"end_character":41},"updated":"2023-02-03 01:01:05.000000000","message":"share-transfers?","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        operations\u003d["},{"line_number":71,"context_line":"            {"},{"line_number":72,"context_line":"                \u0027method\u0027: \u0027GET\u0027,"},{"line_number":73,"context_line":"                \u0027path\u0027: \u0027/share_transfers\u0027"},{"line_number":74,"context_line":"            },"},{"line_number":75,"context_line":"            {"},{"line_number":76,"context_line":"                \u0027method\u0027: \u0027GET\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"b127664d_5a4d9962","line":73,"range":{"start_line":73,"start_character":26,"end_line":73,"end_character":41},"in_reply_to":"b228c314_55d82a07","updated":"2023-02-06 07:50:51.000000000","message":"yes, should be share-transfers","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":87,"context_line":"        operations\u003d["},{"line_number":88,"context_line":"            {"},{"line_number":89,"context_line":"                \u0027method\u0027: \u0027GET\u0027,"},{"line_number":90,"context_line":"                \u0027path\u0027: \u0027/share_transfers\u0027"},{"line_number":91,"context_line":"            },"},{"line_number":92,"context_line":"            {"},{"line_number":93,"context_line":"                \u0027method\u0027: \u0027GET\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"30ceadbf_2245c476","line":90,"updated":"2023-02-03 01:01:05.000000000","message":"share-transfers","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        operations\u003d["},{"line_number":88,"context_line":"            {"},{"line_number":89,"context_line":"                \u0027method\u0027: \u0027GET\u0027,"},{"line_number":90,"context_line":"                \u0027path\u0027: \u0027/share_transfers\u0027"},{"line_number":91,"context_line":"            },"},{"line_number":92,"context_line":"            {"},{"line_number":93,"context_line":"                \u0027method\u0027: \u0027GET\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"b6cb33ae_53d460e3","line":90,"in_reply_to":"30ceadbf_2245c476","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":98,"context_line":"    ),"},{"line_number":99,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":100,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027create\u0027,"},{"line_number":101,"context_line":"        check_str\u003dbase.PROJECT_MEMBER,"},{"line_number":102,"context_line":"        description\u003d\"Create a share transfer.\","},{"line_number":103,"context_line":"        operations\u003d["},{"line_number":104,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":36,"id":"d8b05217_e72732ac","line":101,"range":{"start_line":101,"start_character":23,"end_line":101,"end_character":37},"updated":"2023-02-03 01:01:05.000000000","message":"ADMIN_OR_PROJECT_MEMBER?","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    ),"},{"line_number":99,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":100,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027create\u0027,"},{"line_number":101,"context_line":"        check_str\u003dbase.PROJECT_MEMBER,"},{"line_number":102,"context_line":"        description\u003d\"Create a share transfer.\","},{"line_number":103,"context_line":"        operations\u003d["},{"line_number":104,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":36,"id":"1b71972c_5ec328af","line":101,"range":{"start_line":101,"start_character":23,"end_line":101,"end_character":37},"in_reply_to":"d8b05217_e72732ac","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":103,"context_line":"        operations\u003d["},{"line_number":104,"context_line":"            {"},{"line_number":105,"context_line":"                \u0027method\u0027: \u0027POST\u0027,"},{"line_number":106,"context_line":"                \u0027path\u0027: \u0027/share_transfers\u0027"},{"line_number":107,"context_line":"            }"},{"line_number":108,"context_line":"        ],"},{"line_number":109,"context_line":"        deprecated_rule\u003ddeprecated_share_transfer_create"}],"source_content_type":"text/x-python","patch_set":36,"id":"48d852ed_ae3b469a","line":106,"updated":"2023-02-03 01:01:05.000000000","message":"share-transfers","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        operations\u003d["},{"line_number":104,"context_line":"            {"},{"line_number":105,"context_line":"                \u0027method\u0027: \u0027POST\u0027,"},{"line_number":106,"context_line":"                \u0027path\u0027: \u0027/share_transfers\u0027"},{"line_number":107,"context_line":"            }"},{"line_number":108,"context_line":"        ],"},{"line_number":109,"context_line":"        deprecated_rule\u003ddeprecated_share_transfer_create"}],"source_content_type":"text/x-python","patch_set":36,"id":"c912db01_f482869b","line":106,"in_reply_to":"48d852ed_ae3b469a","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":110,"context_line":"    ),"},{"line_number":111,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":112,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027get\u0027,"},{"line_number":113,"context_line":"        check_str\u003dbase.PROJECT_READER,"},{"line_number":114,"context_line":"        description\u003d\"Show one specified share transfer.\","},{"line_number":115,"context_line":"        operations\u003d["},{"line_number":116,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":36,"id":"28bdaf14_363a2acf","line":113,"range":{"start_line":113,"start_character":23,"end_line":113,"end_character":37},"updated":"2023-02-03 01:01:05.000000000","message":"ADMIN_OR_PROJECT_READER","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    ),"},{"line_number":111,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":112,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027get\u0027,"},{"line_number":113,"context_line":"        check_str\u003dbase.PROJECT_READER,"},{"line_number":114,"context_line":"        description\u003d\"Show one specified share transfer.\","},{"line_number":115,"context_line":"        operations\u003d["},{"line_number":116,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":36,"id":"5bc63d50_e5eb0a8a","line":113,"range":{"start_line":113,"start_character":23,"end_line":113,"end_character":37},"in_reply_to":"28bdaf14_363a2acf","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":122,"context_line":"    ),"},{"line_number":123,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":124,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027accept\u0027,"},{"line_number":125,"context_line":"        check_str\u003dbase.PROJECT_MEMBER,"},{"line_number":126,"context_line":"        description\u003d\"Accept a share transfer.\","},{"line_number":127,"context_line":"        operations\u003d["},{"line_number":128,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":36,"id":"ef2e1e2b_759635f4","line":125,"updated":"2023-02-03 01:01:05.000000000","message":"ADMIN_OR_PROJECT_MEMBER","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    ),"},{"line_number":123,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":124,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027accept\u0027,"},{"line_number":125,"context_line":"        check_str\u003dbase.PROJECT_MEMBER,"},{"line_number":126,"context_line":"        description\u003d\"Accept a share transfer.\","},{"line_number":127,"context_line":"        operations\u003d["},{"line_number":128,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":36,"id":"97ca59e4_34017a2b","line":125,"in_reply_to":"ef2e1e2b_759635f4","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":134,"context_line":"    ),"},{"line_number":135,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":136,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027delete\u0027,"},{"line_number":137,"context_line":"        check_str\u003dbase.PROJECT_MEMBER,"},{"line_number":138,"context_line":"        description\u003d\"Delete share transfer.\","},{"line_number":139,"context_line":"        operations\u003d["},{"line_number":140,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":36,"id":"e264ffe6_434abd81","line":137,"updated":"2023-02-03 01:01:05.000000000","message":"ADMIN_OR_PROJECT_MEMBER","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    ),"},{"line_number":135,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":136,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027delete\u0027,"},{"line_number":137,"context_line":"        check_str\u003dbase.PROJECT_MEMBER,"},{"line_number":138,"context_line":"        description\u003d\"Delete share transfer.\","},{"line_number":139,"context_line":"        operations\u003d["},{"line_number":140,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":36,"id":"c844e3c6_589e764a","line":137,"in_reply_to":"e264ffe6_434abd81","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"}],"manila/share/api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":1440,"context_line":"        self.share_rpcapi.transfer_accept(context, share,"},{"line_number":1441,"context_line":"                                          new_user, new_project,"},{"line_number":1442,"context_line":"                                          clear_rules\u003dclear_rules)"},{"line_number":1443,"context_line":"        LOG.info(\"Transfer share completed successfully.\","},{"line_number":1444,"context_line":"                 resource\u003dshare)"},{"line_number":1445,"context_line":""},{"line_number":1446,"context_line":"    def create_snapshot(self, context, share, name, description,"},{"line_number":1447,"context_line":"                        force\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":22,"id":"69bac1e3_c79d218e","line":1444,"range":{"start_line":1443,"start_character":8,"end_line":1444,"end_character":32},"updated":"2022-09-08 19:10:08.000000000","message":"This isn\u0027t useful - we should do this after the transfer is successful in the share manager","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":1440,"context_line":"        self.share_rpcapi.transfer_accept(context, share,"},{"line_number":1441,"context_line":"                                          new_user, new_project,"},{"line_number":1442,"context_line":"                                          clear_rules\u003dclear_rules)"},{"line_number":1443,"context_line":"        LOG.info(\"Transfer share completed successfully.\","},{"line_number":1444,"context_line":"                 resource\u003dshare)"},{"line_number":1445,"context_line":""},{"line_number":1446,"context_line":"    def create_snapshot(self, context, share, name, description,"},{"line_number":1447,"context_line":"                        force\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":22,"id":"4090428c_3b3da95b","line":1444,"range":{"start_line":1443,"start_character":8,"end_line":1444,"end_character":32},"in_reply_to":"69bac1e3_c79d218e","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"}],"manila/share/driver.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"37202021c5cfc0485830e20d8303ae91e9d8eab6","unresolved":true,"context_lines":[{"line_number":590,"context_line":""},{"line_number":591,"context_line":"    def accept_transfer(self, context, share,"},{"line_number":592,"context_line":"                        access_rules, new_user, new_project):"},{"line_number":593,"context_line":"        pass"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"    def migration_get_progress("},{"line_number":596,"context_line":"            self, context, source_share, destination_share, source_snapshots,"}],"source_content_type":"text/x-python","patch_set":17,"id":"8d7cfaff_e21cee29","line":593,"range":{"start_line":593,"start_character":8,"end_line":593,"end_character":12},"updated":"2022-09-01 22:10:33.000000000","message":"raise NotImplementedError()","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"088926b423248abf47056983e3fdead74c3190a5","unresolved":false,"context_lines":[{"line_number":590,"context_line":""},{"line_number":591,"context_line":"    def accept_transfer(self, context, share,"},{"line_number":592,"context_line":"                        access_rules, new_user, new_project):"},{"line_number":593,"context_line":"        pass"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"    def migration_get_progress("},{"line_number":596,"context_line":"            self, context, source_share, destination_share, source_snapshots,"}],"source_content_type":"text/x-python","patch_set":17,"id":"da28469f_660f6d17","line":593,"range":{"start_line":593,"start_character":8,"end_line":593,"end_character":12},"in_reply_to":"8d7cfaff_e21cee29","updated":"2022-09-02 08:15:15.000000000","message":"Done","commit_id":"2b2c291e439e28de17757186bea131ac2f246a61"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":598,"context_line":"        :param new_user: the share will be updated with the new user id ."},{"line_number":599,"context_line":"        :param new_project: the share will be updated with the new project id."},{"line_number":600,"context_line":"        \"\"\""},{"line_number":601,"context_line":"        raise NotImplementedError()"},{"line_number":602,"context_line":""},{"line_number":603,"context_line":"    def migration_get_progress("},{"line_number":604,"context_line":"            self, context, source_share, destination_share, source_snapshots,"}],"source_content_type":"text/x-python","patch_set":19,"id":"7e3c77db_b1500688","line":601,"range":{"start_line":601,"start_character":7,"end_line":601,"end_character":35},"updated":"2022-09-05 22:23:28.000000000","message":"If I got, the drivers that don\u0027t implement this method can still transfer, but the manager will consider the \"NotImplementError\" as \"I can transfer, but don\u0027t need to do anything.\". If so, would it be better to have the default implementation as \"pass\", instead of raising an exception that will  be catched by the manager ?","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        :param new_user: the share will be updated with the new user id ."},{"line_number":599,"context_line":"        :param new_project: the share will be updated with the new project id."},{"line_number":600,"context_line":"        \"\"\""},{"line_number":601,"context_line":"        raise NotImplementedError()"},{"line_number":602,"context_line":""},{"line_number":603,"context_line":"    def migration_get_progress("},{"line_number":604,"context_line":"            self, context, source_share, destination_share, source_snapshots,"}],"source_content_type":"text/x-python","patch_set":19,"id":"1108a30a_6ec9d87b","line":601,"range":{"start_line":601,"start_character":7,"end_line":601,"end_character":35},"in_reply_to":"7e3c77db_b1500688","updated":"2022-09-07 04:16:09.000000000","message":"here is pass in patch 1. I changed it later, and now it seems that pass is more appropriate.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":589,"context_line":"        raise NotImplementedError()"},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"    def transfer_accept(self, context, share, access_rules,"},{"line_number":592,"context_line":"                        new_user, new_project):"},{"line_number":593,"context_line":"        \"\"\"Backend update project and user info if stored on the backend."},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"        :param context: The \u0027context.RequestContext\u0027 object for the request."}],"source_content_type":"text/x-python","patch_set":22,"id":"63fa2f4f_aff040d4","line":592,"range":{"start_line":592,"start_character":45,"end_line":592,"end_character":46},"updated":"2022-09-08 19:10:08.000000000","message":"We need the share_server as well","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":589,"context_line":"        raise NotImplementedError()"},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"    def transfer_accept(self, context, share, access_rules,"},{"line_number":592,"context_line":"                        new_user, new_project):"},{"line_number":593,"context_line":"        \"\"\"Backend update project and user info if stored on the backend."},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"        :param context: The \u0027context.RequestContext\u0027 object for the request."}],"source_content_type":"text/x-python","patch_set":22,"id":"e8cd7496_83b1235e","line":592,"range":{"start_line":592,"start_character":45,"end_line":592,"end_character":46},"in_reply_to":"63fa2f4f_aff040d4","updated":"2022-09-09 09:18:29.000000000","message":"Done, and manager layer caller aslo added.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"08a602a842f7724b13821688c36f72c1b036588e","unresolved":true,"context_lines":[{"line_number":588,"context_line":"        \"\"\""},{"line_number":589,"context_line":"        raise NotImplementedError()"},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"    def transfer_accept(self, context, share_instance, new_user, new_project,"},{"line_number":592,"context_line":"                        access_rules\u003dNone, share_server\u003dNone):"},{"line_number":593,"context_line":"        \"\"\"Backend update project and user info if stored on the backend."},{"line_number":594,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"cd0c91b7_371c5af1","line":591,"range":{"start_line":591,"start_character":39,"end_line":591,"end_character":53},"updated":"2023-02-15 00:04:34.000000000","message":"it\u0027s okay to keep this variable named \"share\" - to a share driver, a share is always a single share instance..","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2633a26a8036c9f2cb90fd044ec12512ab5cf69e","unresolved":false,"context_lines":[{"line_number":588,"context_line":"        \"\"\""},{"line_number":589,"context_line":"        raise NotImplementedError()"},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"    def transfer_accept(self, context, share_instance, new_user, new_project,"},{"line_number":592,"context_line":"                        access_rules\u003dNone, share_server\u003dNone):"},{"line_number":593,"context_line":"        \"\"\"Backend update project and user info if stored on the backend."},{"line_number":594,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"6a1d7831_4eb2ebd7","line":591,"range":{"start_line":591,"start_character":39,"end_line":591,"end_character":53},"in_reply_to":"cd0c91b7_371c5af1","updated":"2023-02-16 09:07:34.000000000","message":"Done","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"}],"manila/share/drivers/cephfs/driver.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":863,"context_line":"            raise e"},{"line_number":864,"context_line":"        rados_command(self.rados_client, \"fs subvolume evict\", argdict)"},{"line_number":865,"context_line":""},{"line_number":866,"context_line":"    def transfer_accept(self, context, share, access_rules,"},{"line_number":867,"context_line":"                        new_user, new_project):"},{"line_number":868,"context_line":"        share[\"project_id\"] \u003d new_project"},{"line_number":869,"context_line":"        for rule in access_rules:"},{"line_number":870,"context_line":"            try:"},{"line_number":871,"context_line":"                self._allow_access(context, share, rule)"},{"line_number":872,"context_line":"            except (exception.InvalidShareAccessLevel,"},{"line_number":873,"context_line":"                    exception.InvalidShareAccessType):"},{"line_number":874,"context_line":"                self.message_api.create("},{"line_number":875,"context_line":"                    context,"},{"line_number":876,"context_line":"                    message_field.Action.UPDATE_ACCESS_RULES,"},{"line_number":877,"context_line":"                    share[\u0027project_id\u0027],"},{"line_number":878,"context_line":"                    resource_type\u003dmessage_field.Resource.SHARE,"},{"line_number":879,"context_line":"                    resource_id\u003dshare[\u0027share_id\u0027],"},{"line_number":880,"context_line":"                    detail\u003dmessage_field.Detail.UNSUPPORTED_CLIENT_ACCESS)"},{"line_number":881,"context_line":"                log_args \u003d {\u0027id\u0027: rule[\u0027access_id\u0027],"},{"line_number":882,"context_line":"                            \u0027access_level\u0027: rule[\u0027access_level\u0027],"},{"line_number":883,"context_line":"                            \u0027access_to\u0027: rule[\u0027access_to\u0027]}"},{"line_number":884,"context_line":"                LOG.exception(\"Failed to update %(access_level)s access to \""},{"line_number":885,"context_line":"                              \"%(access_to)s (Rule ID: %(id)s).\", log_args)"},{"line_number":886,"context_line":"            except exception.InvalidShareAccess:"},{"line_number":887,"context_line":"                self.message_api.create("},{"line_number":888,"context_line":"                    context,"},{"line_number":889,"context_line":"                    message_field.Action.UPDATE_ACCESS_RULES,"},{"line_number":890,"context_line":"                    share[\u0027project_id\u0027],"},{"line_number":891,"context_line":"                    resource_type\u003dmessage_field.Resource.SHARE,"},{"line_number":892,"context_line":"                    resource_id\u003dshare[\u0027share_id\u0027],"},{"line_number":893,"context_line":"                    detail\u003dmessage_field.Detail.FORBIDDEN_CLIENT_ACCESS)"},{"line_number":894,"context_line":"                log_args \u003d {\u0027id\u0027: rule[\u0027access_id\u0027],"},{"line_number":895,"context_line":"                            \u0027access_level\u0027: rule[\u0027access_level\u0027],"},{"line_number":896,"context_line":"                            \u0027access_to\u0027: rule[\u0027access_to\u0027]}"},{"line_number":897,"context_line":"                LOG.exception(\"Failed to update %(access_level)s access to \""},{"line_number":898,"context_line":"                              \"%(access_to)s (Rule ID: %(id)s).\", log_args)"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"    def update_access(self, context, share, access_rules, add_rules,"},{"line_number":901,"context_line":"                      delete_rules, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":22,"id":"f1847a20_d99933c6","line":898,"range":{"start_line":866,"start_character":0,"end_line":898,"end_character":75},"updated":"2022-09-08 19:10:08.000000000","message":"Thanks for adding this; this will fail though knowing how ceph handles cephx user names - you cannot share cephx users across projects - since the share is in a new project, the cephx user cannot be reused from the prior project. I think the better thing here would be to force \"clear access rules\" in case the driver is cephfs so that all access rules can be re-added.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":false,"context_lines":[{"line_number":863,"context_line":"            raise e"},{"line_number":864,"context_line":"        rados_command(self.rados_client, \"fs subvolume evict\", argdict)"},{"line_number":865,"context_line":""},{"line_number":866,"context_line":"    def transfer_accept(self, context, share, access_rules,"},{"line_number":867,"context_line":"                        new_user, new_project):"},{"line_number":868,"context_line":"        share[\"project_id\"] \u003d new_project"},{"line_number":869,"context_line":"        for rule in access_rules:"},{"line_number":870,"context_line":"            try:"},{"line_number":871,"context_line":"                self._allow_access(context, share, rule)"},{"line_number":872,"context_line":"            except (exception.InvalidShareAccessLevel,"},{"line_number":873,"context_line":"                    exception.InvalidShareAccessType):"},{"line_number":874,"context_line":"                self.message_api.create("},{"line_number":875,"context_line":"                    context,"},{"line_number":876,"context_line":"                    message_field.Action.UPDATE_ACCESS_RULES,"},{"line_number":877,"context_line":"                    share[\u0027project_id\u0027],"},{"line_number":878,"context_line":"                    resource_type\u003dmessage_field.Resource.SHARE,"},{"line_number":879,"context_line":"                    resource_id\u003dshare[\u0027share_id\u0027],"},{"line_number":880,"context_line":"                    detail\u003dmessage_field.Detail.UNSUPPORTED_CLIENT_ACCESS)"},{"line_number":881,"context_line":"                log_args \u003d {\u0027id\u0027: rule[\u0027access_id\u0027],"},{"line_number":882,"context_line":"                            \u0027access_level\u0027: rule[\u0027access_level\u0027],"},{"line_number":883,"context_line":"                            \u0027access_to\u0027: rule[\u0027access_to\u0027]}"},{"line_number":884,"context_line":"                LOG.exception(\"Failed to update %(access_level)s access to \""},{"line_number":885,"context_line":"                              \"%(access_to)s (Rule ID: %(id)s).\", log_args)"},{"line_number":886,"context_line":"            except exception.InvalidShareAccess:"},{"line_number":887,"context_line":"                self.message_api.create("},{"line_number":888,"context_line":"                    context,"},{"line_number":889,"context_line":"                    message_field.Action.UPDATE_ACCESS_RULES,"},{"line_number":890,"context_line":"                    share[\u0027project_id\u0027],"},{"line_number":891,"context_line":"                    resource_type\u003dmessage_field.Resource.SHARE,"},{"line_number":892,"context_line":"                    resource_id\u003dshare[\u0027share_id\u0027],"},{"line_number":893,"context_line":"                    detail\u003dmessage_field.Detail.FORBIDDEN_CLIENT_ACCESS)"},{"line_number":894,"context_line":"                log_args \u003d {\u0027id\u0027: rule[\u0027access_id\u0027],"},{"line_number":895,"context_line":"                            \u0027access_level\u0027: rule[\u0027access_level\u0027],"},{"line_number":896,"context_line":"                            \u0027access_to\u0027: rule[\u0027access_to\u0027]}"},{"line_number":897,"context_line":"                LOG.exception(\"Failed to update %(access_level)s access to \""},{"line_number":898,"context_line":"                              \"%(access_to)s (Rule ID: %(id)s).\", log_args)"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"    def update_access(self, context, share, access_rules, add_rules,"},{"line_number":901,"context_line":"                      delete_rules, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":22,"id":"c65153ac_408c531c","line":898,"range":{"start_line":866,"start_character":0,"end_line":898,"end_character":75},"in_reply_to":"6c2aeda0_91475842","updated":"2022-09-12 23:13:59.000000000","message":"Cool, if we\u0027re doing that; wouldn\u0027t it make sense to:\n\n1) Clear the rules (set all rules to \"queued_to_deny\" and call \"update_access\") if requested;\n2) Call the driver to transfer the share\n3) Add all the rules back (set all rules to \"queued_to_apply\" and call \"update_access\")\n\nfrom the share manager?\n\n\nThis way, the driver doesn\u0027t have to do any access rule changes in the transfer_accept method and the manager takes care of caling the appropriate and existing access rules interface","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":863,"context_line":"            raise e"},{"line_number":864,"context_line":"        rados_command(self.rados_client, \"fs subvolume evict\", argdict)"},{"line_number":865,"context_line":""},{"line_number":866,"context_line":"    def transfer_accept(self, context, share, access_rules,"},{"line_number":867,"context_line":"                        new_user, new_project):"},{"line_number":868,"context_line":"        share[\"project_id\"] \u003d new_project"},{"line_number":869,"context_line":"        for rule in access_rules:"},{"line_number":870,"context_line":"            try:"},{"line_number":871,"context_line":"                self._allow_access(context, share, rule)"},{"line_number":872,"context_line":"            except (exception.InvalidShareAccessLevel,"},{"line_number":873,"context_line":"                    exception.InvalidShareAccessType):"},{"line_number":874,"context_line":"                self.message_api.create("},{"line_number":875,"context_line":"                    context,"},{"line_number":876,"context_line":"                    message_field.Action.UPDATE_ACCESS_RULES,"},{"line_number":877,"context_line":"                    share[\u0027project_id\u0027],"},{"line_number":878,"context_line":"                    resource_type\u003dmessage_field.Resource.SHARE,"},{"line_number":879,"context_line":"                    resource_id\u003dshare[\u0027share_id\u0027],"},{"line_number":880,"context_line":"                    detail\u003dmessage_field.Detail.UNSUPPORTED_CLIENT_ACCESS)"},{"line_number":881,"context_line":"                log_args \u003d {\u0027id\u0027: rule[\u0027access_id\u0027],"},{"line_number":882,"context_line":"                            \u0027access_level\u0027: rule[\u0027access_level\u0027],"},{"line_number":883,"context_line":"                            \u0027access_to\u0027: rule[\u0027access_to\u0027]}"},{"line_number":884,"context_line":"                LOG.exception(\"Failed to update %(access_level)s access to \""},{"line_number":885,"context_line":"                              \"%(access_to)s (Rule ID: %(id)s).\", log_args)"},{"line_number":886,"context_line":"            except exception.InvalidShareAccess:"},{"line_number":887,"context_line":"                self.message_api.create("},{"line_number":888,"context_line":"                    context,"},{"line_number":889,"context_line":"                    message_field.Action.UPDATE_ACCESS_RULES,"},{"line_number":890,"context_line":"                    share[\u0027project_id\u0027],"},{"line_number":891,"context_line":"                    resource_type\u003dmessage_field.Resource.SHARE,"},{"line_number":892,"context_line":"                    resource_id\u003dshare[\u0027share_id\u0027],"},{"line_number":893,"context_line":"                    detail\u003dmessage_field.Detail.FORBIDDEN_CLIENT_ACCESS)"},{"line_number":894,"context_line":"                log_args \u003d {\u0027id\u0027: rule[\u0027access_id\u0027],"},{"line_number":895,"context_line":"                            \u0027access_level\u0027: rule[\u0027access_level\u0027],"},{"line_number":896,"context_line":"                            \u0027access_to\u0027: rule[\u0027access_to\u0027]}"},{"line_number":897,"context_line":"                LOG.exception(\"Failed to update %(access_level)s access to \""},{"line_number":898,"context_line":"                              \"%(access_to)s (Rule ID: %(id)s).\", log_args)"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"    def update_access(self, context, share, access_rules, add_rules,"},{"line_number":901,"context_line":"                      delete_rules, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":22,"id":"86bab68b_482fb907","line":898,"range":{"start_line":866,"start_character":0,"end_line":898,"end_character":75},"in_reply_to":"c65153ac_408c531c","updated":"2022-09-19 02:43:31.000000000","message":"in cephfs driver. update access interface use share[\u0027project_id\u0027] as an parameter to update access. in manager layer share[\u0027project_id\u0027] still is old project, so we can not calling existing access rules interface(def update_access) to complete transfer accept(because it will use share[\u0027project_id\u0027] to update access rule). so cephfs driver still need to deal with rule changes in transfer_accept method. \n\nif clear_rules is True. we clear rules first, then access_rules will be None in transfer_accept method. driver don\u0027t do anythinng about access rules.\n\nfor other drivers. project_id not save in backend storage. transfer_accept will  direct pass. we no need to clear rules if clear_rules is False. and no need to all rules back. if clear_rules is True. we only clear rules. also no need to rules back. \n\nTo sum up. we no need to add all rules back. i think The current code logic should be fine.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":863,"context_line":"            raise e"},{"line_number":864,"context_line":"        rados_command(self.rados_client, \"fs subvolume evict\", argdict)"},{"line_number":865,"context_line":""},{"line_number":866,"context_line":"    def transfer_accept(self, context, share, access_rules,"},{"line_number":867,"context_line":"                        new_user, new_project):"},{"line_number":868,"context_line":"        share[\"project_id\"] \u003d new_project"},{"line_number":869,"context_line":"        for rule in access_rules:"},{"line_number":870,"context_line":"            try:"},{"line_number":871,"context_line":"                self._allow_access(context, share, rule)"},{"line_number":872,"context_line":"            except (exception.InvalidShareAccessLevel,"},{"line_number":873,"context_line":"                    exception.InvalidShareAccessType):"},{"line_number":874,"context_line":"                self.message_api.create("},{"line_number":875,"context_line":"                    context,"},{"line_number":876,"context_line":"                    message_field.Action.UPDATE_ACCESS_RULES,"},{"line_number":877,"context_line":"                    share[\u0027project_id\u0027],"},{"line_number":878,"context_line":"                    resource_type\u003dmessage_field.Resource.SHARE,"},{"line_number":879,"context_line":"                    resource_id\u003dshare[\u0027share_id\u0027],"},{"line_number":880,"context_line":"                    detail\u003dmessage_field.Detail.UNSUPPORTED_CLIENT_ACCESS)"},{"line_number":881,"context_line":"                log_args \u003d {\u0027id\u0027: rule[\u0027access_id\u0027],"},{"line_number":882,"context_line":"                            \u0027access_level\u0027: rule[\u0027access_level\u0027],"},{"line_number":883,"context_line":"                            \u0027access_to\u0027: rule[\u0027access_to\u0027]}"},{"line_number":884,"context_line":"                LOG.exception(\"Failed to update %(access_level)s access to \""},{"line_number":885,"context_line":"                              \"%(access_to)s (Rule ID: %(id)s).\", log_args)"},{"line_number":886,"context_line":"            except exception.InvalidShareAccess:"},{"line_number":887,"context_line":"                self.message_api.create("},{"line_number":888,"context_line":"                    context,"},{"line_number":889,"context_line":"                    message_field.Action.UPDATE_ACCESS_RULES,"},{"line_number":890,"context_line":"                    share[\u0027project_id\u0027],"},{"line_number":891,"context_line":"                    resource_type\u003dmessage_field.Resource.SHARE,"},{"line_number":892,"context_line":"                    resource_id\u003dshare[\u0027share_id\u0027],"},{"line_number":893,"context_line":"                    detail\u003dmessage_field.Detail.FORBIDDEN_CLIENT_ACCESS)"},{"line_number":894,"context_line":"                log_args \u003d {\u0027id\u0027: rule[\u0027access_id\u0027],"},{"line_number":895,"context_line":"                            \u0027access_level\u0027: rule[\u0027access_level\u0027],"},{"line_number":896,"context_line":"                            \u0027access_to\u0027: rule[\u0027access_to\u0027]}"},{"line_number":897,"context_line":"                LOG.exception(\"Failed to update %(access_level)s access to \""},{"line_number":898,"context_line":"                              \"%(access_to)s (Rule ID: %(id)s).\", log_args)"},{"line_number":899,"context_line":""},{"line_number":900,"context_line":"    def update_access(self, context, share, access_rules, add_rules,"},{"line_number":901,"context_line":"                      delete_rules, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":22,"id":"6c2aeda0_91475842","line":898,"range":{"start_line":866,"start_character":0,"end_line":898,"end_character":75},"in_reply_to":"f1847a20_d99933c6","updated":"2022-09-09 09:18:29.000000000","message":"ok, The corresponding logic will be added in the Manager layer","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cfd5d767b00fca37a6a7b08b88bc744a0f959107","unresolved":true,"context_lines":[{"line_number":885,"context_line":"        share[\"project_id\"] \u003d new_project"},{"line_number":886,"context_line":"        if access_rules:"},{"line_number":887,"context_line":"            for rule in access_rules:"},{"line_number":888,"context_line":"                try:"},{"line_number":889,"context_line":"                    self._allow_access(context, share, rule)"},{"line_number":890,"context_line":"                except (exception.InvalidShareAccessLevel,"},{"line_number":891,"context_line":"                        exception.InvalidShareAccessType):"}],"source_content_type":"text/x-python","patch_set":40,"id":"b87c83a4_09598845","line":888,"updated":"2023-02-09 22:12:24.000000000","message":"I know we are creating new access rules, but should we drop the old ones? They might become something stale - I didn\u0027t look much into this, just out of curiosity","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"272989f23cebbec20ee4b60345065d558bfe3c20","unresolved":false,"context_lines":[{"line_number":885,"context_line":"        share[\"project_id\"] \u003d new_project"},{"line_number":886,"context_line":"        if access_rules:"},{"line_number":887,"context_line":"            for rule in access_rules:"},{"line_number":888,"context_line":"                try:"},{"line_number":889,"context_line":"                    self._allow_access(context, share, rule)"},{"line_number":890,"context_line":"                except (exception.InvalidShareAccessLevel,"},{"line_number":891,"context_line":"                        exception.InvalidShareAccessType):"}],"source_content_type":"text/x-python","patch_set":40,"id":"2445b43a_f8e594b5","line":888,"in_reply_to":"b87c83a4_09598845","updated":"2023-02-10 08:32:43.000000000","message":"we can not share cephx user across projects. so need to clear old\naccess rules first and then re-added new rules, here is readd rules.","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":33301,"name":"Caique Mello","email":"caiquemellosbo@gmail.com","username":"MelloCaique"},"change_message_id":"3fe6a4b40f05ba3e78fb6e614f0762c4c556f844","unresolved":true,"context_lines":[{"line_number":880,"context_line":"            raise e"},{"line_number":881,"context_line":"        rados_command(self.rados_client, \"fs subvolume evict\", argdict)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"    def transfer_accept(self, context, share, new_user, new_project,"},{"line_number":884,"context_line":"                        access_rules\u003dNone, share_server\u003dNone):"},{"line_number":885,"context_line":"        # we can not share cephx user across projects. so need to clear"},{"line_number":886,"context_line":"        # access rules first and then re-added access_rules."}],"source_content_type":"text/x-python","patch_set":41,"id":"a1851e5f_6bc7489c","line":883,"range":{"start_line":883,"start_character":8,"end_line":883,"end_character":23},"updated":"2023-02-10 15:05:52.000000000","message":"Missing coverage","commit_id":"b524c92ce4e01564cd9f6c9b604351ca5e780850"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2633a26a8036c9f2cb90fd044ec12512ab5cf69e","unresolved":true,"context_lines":[{"line_number":880,"context_line":"            raise e"},{"line_number":881,"context_line":"        rados_command(self.rados_client, \"fs subvolume evict\", argdict)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"    def transfer_accept(self, context, share, new_user, new_project,"},{"line_number":884,"context_line":"                        access_rules\u003dNone, share_server\u003dNone):"},{"line_number":885,"context_line":"        # we can not share cephx user across projects. so need to clear"},{"line_number":886,"context_line":"        # access rules first and then re-added access_rules."}],"source_content_type":"text/x-python","patch_set":41,"id":"aaece6e6_57a2fb26","line":883,"range":{"start_line":883,"start_character":8,"end_line":883,"end_character":23},"in_reply_to":"301c3fa9_d8555532","updated":"2023-02-16 09:07:34.000000000","message":"i will try to write the unit test about this function.","commit_id":"b524c92ce4e01564cd9f6c9b604351ca5e780850"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"55d66dde3f5c765f73d2b67a010ec957cb5d12b6","unresolved":true,"context_lines":[{"line_number":880,"context_line":"            raise e"},{"line_number":881,"context_line":"        rados_command(self.rados_client, \"fs subvolume evict\", argdict)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"    def transfer_accept(self, context, share, new_user, new_project,"},{"line_number":884,"context_line":"                        access_rules\u003dNone, share_server\u003dNone):"},{"line_number":885,"context_line":"        # we can not share cephx user across projects. so need to clear"},{"line_number":886,"context_line":"        # access rules first and then re-added access_rules."}],"source_content_type":"text/x-python","patch_set":41,"id":"b62cadbd_b0c639c7","line":883,"range":{"start_line":883,"start_character":8,"end_line":883,"end_character":23},"in_reply_to":"a1851e5f_6bc7489c","updated":"2023-02-11 14:32:09.000000000","message":"i am not sure how to write a test about this.","commit_id":"b524c92ce4e01564cd9f6c9b604351ca5e780850"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"2dbe42cebb4ec81583e690e1bcc6b629f9c2c327","unresolved":false,"context_lines":[{"line_number":880,"context_line":"            raise e"},{"line_number":881,"context_line":"        rados_command(self.rados_client, \"fs subvolume evict\", argdict)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"    def transfer_accept(self, context, share, new_user, new_project,"},{"line_number":884,"context_line":"                        access_rules\u003dNone, share_server\u003dNone):"},{"line_number":885,"context_line":"        # we can not share cephx user across projects. so need to clear"},{"line_number":886,"context_line":"        # access rules first and then re-added access_rules."}],"source_content_type":"text/x-python","patch_set":41,"id":"e8b638cc_674dddcc","line":883,"range":{"start_line":883,"start_character":8,"end_line":883,"end_character":23},"in_reply_to":"b62cadbd_b0c639c7","updated":"2023-02-14 20:54:51.000000000","message":"Ack","commit_id":"b524c92ce4e01564cd9f6c9b604351ca5e780850"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"08a602a842f7724b13821688c36f72c1b036588e","unresolved":true,"context_lines":[{"line_number":880,"context_line":"            raise e"},{"line_number":881,"context_line":"        rados_command(self.rados_client, \"fs subvolume evict\", argdict)"},{"line_number":882,"context_line":""},{"line_number":883,"context_line":"    def transfer_accept(self, context, share, new_user, new_project,"},{"line_number":884,"context_line":"                        access_rules\u003dNone, share_server\u003dNone):"},{"line_number":885,"context_line":"        # we can not share cephx user across projects. so need to clear"},{"line_number":886,"context_line":"        # access rules first and then re-added access_rules."}],"source_content_type":"text/x-python","patch_set":41,"id":"301c3fa9_d8555532","line":883,"range":{"start_line":883,"start_character":8,"end_line":883,"end_character":23},"in_reply_to":"b62cadbd_b0c639c7","updated":"2023-02-15 00:04:34.000000000","message":"I think this can be simplified. As suggested on the share manager code, the ceph driver can be modified to just fail the transfer with a specific exception if:\n\n1) there are access rules and clear_rules\u003dFalse and\n2) the source project ID isn\u0027t the same as destination project ID \n\nThis will allow the operation to be retried instead of us wrangling access rules like this..","commit_id":"b524c92ce4e01564cd9f6c9b604351ca5e780850"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"de7f4ec36476e18ab77c79c865f3563ac4962028","unresolved":true,"context_lines":[{"line_number":766,"context_line":""},{"line_number":767,"context_line":"    def transfer_accept(self, context, share, new_user, new_project,"},{"line_number":768,"context_line":"                        access_rules\u003dNone, share_server\u003dNone):"},{"line_number":769,"context_line":"        # we can not share cephx user across projects. so need to clear"},{"line_number":770,"context_line":"        # access rules first and then re-added access_rules."},{"line_number":771,"context_line":"        same_project \u003d True if share[\"project_id\"] \u003d\u003d new_project else False"},{"line_number":772,"context_line":"        if access_rules and not same_project:"},{"line_number":773,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":50,"id":"9a5a6db5_b0622493","line":770,"range":{"start_line":769,"start_character":8,"end_line":770,"end_character":60},"updated":"2023-02-17 07:10:57.000000000","message":"CephFS driver cannot transfer shares by preserving access rules","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"17eeb2f9103b101bb42d3b7301afd7004654ad5b","unresolved":false,"context_lines":[{"line_number":766,"context_line":""},{"line_number":767,"context_line":"    def transfer_accept(self, context, share, new_user, new_project,"},{"line_number":768,"context_line":"                        access_rules\u003dNone, share_server\u003dNone):"},{"line_number":769,"context_line":"        # we can not share cephx user across projects. so need to clear"},{"line_number":770,"context_line":"        # access rules first and then re-added access_rules."},{"line_number":771,"context_line":"        same_project \u003d True if share[\"project_id\"] \u003d\u003d new_project else False"},{"line_number":772,"context_line":"        if access_rules and not same_project:"},{"line_number":773,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":50,"id":"c3414caa_a35bc9a4","line":770,"range":{"start_line":769,"start_character":8,"end_line":770,"end_character":60},"in_reply_to":"9a5a6db5_b0622493","updated":"2023-02-17 08:06:03.000000000","message":"Done","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"de7f4ec36476e18ab77c79c865f3563ac4962028","unresolved":true,"context_lines":[{"line_number":768,"context_line":"                        access_rules\u003dNone, share_server\u003dNone):"},{"line_number":769,"context_line":"        # we can not share cephx user across projects. so need to clear"},{"line_number":770,"context_line":"        # access rules first and then re-added access_rules."},{"line_number":771,"context_line":"        same_project \u003d True if share[\"project_id\"] \u003d\u003d new_project else False"},{"line_number":772,"context_line":"        if access_rules and not same_project:"},{"line_number":773,"context_line":"            try:"},{"line_number":774,"context_line":"                # first clear old access_rules"}],"source_content_type":"text/x-python","patch_set":50,"id":"5f1de89c_fb5e9f86","line":771,"range":{"start_line":771,"start_character":23,"end_line":771,"end_character":76},"updated":"2023-02-17 07:10:57.000000000","message":"simply:\n\n   share[\u0027project_id\u0027] \u003d\u003d new_project","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"17eeb2f9103b101bb42d3b7301afd7004654ad5b","unresolved":false,"context_lines":[{"line_number":768,"context_line":"                        access_rules\u003dNone, share_server\u003dNone):"},{"line_number":769,"context_line":"        # we can not share cephx user across projects. so need to clear"},{"line_number":770,"context_line":"        # access rules first and then re-added access_rules."},{"line_number":771,"context_line":"        same_project \u003d True if share[\"project_id\"] \u003d\u003d new_project else False"},{"line_number":772,"context_line":"        if access_rules and not same_project:"},{"line_number":773,"context_line":"            try:"},{"line_number":774,"context_line":"                # first clear old access_rules"}],"source_content_type":"text/x-python","patch_set":50,"id":"d0b4e443_91f7e72a","line":771,"range":{"start_line":771,"start_character":23,"end_line":771,"end_character":76},"in_reply_to":"5f1de89c_fb5e9f86","updated":"2023-02-17 08:06:03.000000000","message":"Done","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"de7f4ec36476e18ab77c79c865f3563ac4962028","unresolved":true,"context_lines":[{"line_number":770,"context_line":"        # access rules first and then re-added access_rules."},{"line_number":771,"context_line":"        same_project \u003d True if share[\"project_id\"] \u003d\u003d new_project else False"},{"line_number":772,"context_line":"        if access_rules and not same_project:"},{"line_number":773,"context_line":"            try:"},{"line_number":774,"context_line":"                # first clear old access_rules"},{"line_number":775,"context_line":"                self.protocol_helper.update_access("},{"line_number":776,"context_line":"                    context, share, access_rules, [], access_rules)"},{"line_number":777,"context_line":"                # update project_id for share, then update rules with it."},{"line_number":778,"context_line":"                share[\"project_id\"] \u003d new_project"},{"line_number":779,"context_line":"                # update project_id in access rules"},{"line_number":780,"context_line":"                self.protocol_helper.update_access("},{"line_number":781,"context_line":"                    context, share, access_rules, access_rules, [])"},{"line_number":782,"context_line":"            except Exception:"},{"line_number":783,"context_line":"                raise exception.DriverTransferShareWithRules"},{"line_number":784,"context_line":""},{"line_number":785,"context_line":""},{"line_number":786,"context_line":"class NativeProtocolHelper(ganesha.NASHelperBase):"}],"source_content_type":"text/x-python","patch_set":50,"id":"71f61c74_b76271af","line":783,"range":{"start_line":773,"start_character":12,"end_line":783,"end_character":60},"updated":"2023-02-17 07:10:57.000000000","message":"Lets just fail the transfer, there\u0027s no need to update the rules - the user must retry their transfer accept request with clear_access_rules\u003dTrue\n\n  if access_rules and not same_project:\n     raise exception.DriverTransferShareWithRules()","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"17eeb2f9103b101bb42d3b7301afd7004654ad5b","unresolved":false,"context_lines":[{"line_number":770,"context_line":"        # access rules first and then re-added access_rules."},{"line_number":771,"context_line":"        same_project \u003d True if share[\"project_id\"] \u003d\u003d new_project else False"},{"line_number":772,"context_line":"        if access_rules and not same_project:"},{"line_number":773,"context_line":"            try:"},{"line_number":774,"context_line":"                # first clear old access_rules"},{"line_number":775,"context_line":"                self.protocol_helper.update_access("},{"line_number":776,"context_line":"                    context, share, access_rules, [], access_rules)"},{"line_number":777,"context_line":"                # update project_id for share, then update rules with it."},{"line_number":778,"context_line":"                share[\"project_id\"] \u003d new_project"},{"line_number":779,"context_line":"                # update project_id in access rules"},{"line_number":780,"context_line":"                self.protocol_helper.update_access("},{"line_number":781,"context_line":"                    context, share, access_rules, access_rules, [])"},{"line_number":782,"context_line":"            except Exception:"},{"line_number":783,"context_line":"                raise exception.DriverTransferShareWithRules"},{"line_number":784,"context_line":""},{"line_number":785,"context_line":""},{"line_number":786,"context_line":"class NativeProtocolHelper(ganesha.NASHelperBase):"}],"source_content_type":"text/x-python","patch_set":50,"id":"c68e9b09_5d8691e0","line":783,"range":{"start_line":773,"start_character":12,"end_line":783,"end_character":60},"in_reply_to":"71f61c74_b76271af","updated":"2023-02-17 08:06:03.000000000","message":"Done","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"}],"manila/share/manager.py":[{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":3539,"context_line":"        expired_transfers \u003d self.db.get_all_expired_transfers(ctxt)"},{"line_number":3540,"context_line":""},{"line_number":3541,"context_line":"        for transfer in expired_transfers:"},{"line_number":3542,"context_line":"            LOG.debug(\"Transfer %s has expired, will be destroy\","},{"line_number":3543,"context_line":"                      transfer[\u0027id\u0027])"},{"line_number":3544,"context_line":"            self.transfer_api.delete(ctxt, transfer_id\u003dtransfer[\u0027id\u0027])"},{"line_number":3545,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"80164e13_329a3c00","line":3542,"range":{"start_line":3542,"start_character":56,"end_line":3542,"end_character":63},"updated":"2022-09-05 22:23:28.000000000","message":"detroyed.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":3539,"context_line":"        expired_transfers \u003d self.db.get_all_expired_transfers(ctxt)"},{"line_number":3540,"context_line":""},{"line_number":3541,"context_line":"        for transfer in expired_transfers:"},{"line_number":3542,"context_line":"            LOG.debug(\"Transfer %s has expired, will be destroy\","},{"line_number":3543,"context_line":"                      transfer[\u0027id\u0027])"},{"line_number":3544,"context_line":"            self.transfer_api.delete(ctxt, transfer_id\u003dtransfer[\u0027id\u0027])"},{"line_number":3545,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"ebeab510_28581a76","line":3542,"range":{"start_line":3542,"start_character":56,"end_line":3542,"end_character":63},"in_reply_to":"80164e13_329a3c00","updated":"2022-09-07 04:16:09.000000000","message":"Done","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":3578,"context_line":"                                            access_rules, new_user,"},{"line_number":3579,"context_line":"                                            new_project)"},{"line_number":3580,"context_line":"            except Exception as e:"},{"line_number":3581,"context_line":"                if not isinstance(e, NotImplementedError):"},{"line_number":3582,"context_line":"                    LOG.exception("},{"line_number":3583,"context_line":"                        \"The backend could not accept the share %(shr)s.\","},{"line_number":3584,"context_line":"                        {\u0027shr\u0027: share_id})"}],"source_content_type":"text/x-python","patch_set":19,"id":"db1e913b_02784719","line":3581,"range":{"start_line":3581,"start_character":19,"end_line":3581,"end_character":22},"updated":"2022-09-05 22:23:28.000000000","message":"don\u0027t need this not, just revert the conditions","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":3578,"context_line":"                                            access_rules, new_user,"},{"line_number":3579,"context_line":"                                            new_project)"},{"line_number":3580,"context_line":"            except Exception as e:"},{"line_number":3581,"context_line":"                if not isinstance(e, NotImplementedError):"},{"line_number":3582,"context_line":"                    LOG.exception("},{"line_number":3583,"context_line":"                        \"The backend could not accept the share %(shr)s.\","},{"line_number":3584,"context_line":"                        {\u0027shr\u0027: share_id})"}],"source_content_type":"text/x-python","patch_set":19,"id":"2392ac9e_e63bf540","line":3581,"range":{"start_line":3581,"start_character":19,"end_line":3581,"end_character":22},"in_reply_to":"db1e913b_02784719","updated":"2022-09-07 04:16:09.000000000","message":"Done","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":3577,"context_line":"                self.driver.accept_transfer(context, share_instance,"},{"line_number":3578,"context_line":"                                            access_rules, new_user,"},{"line_number":3579,"context_line":"                                            new_project)"},{"line_number":3580,"context_line":"            except Exception as e:"},{"line_number":3581,"context_line":"                if not isinstance(e, NotImplementedError):"},{"line_number":3582,"context_line":"                    LOG.exception("},{"line_number":3583,"context_line":"                        \"The backend could not accept the share %(shr)s.\","},{"line_number":3584,"context_line":"                        {\u0027shr\u0027: share_id})"},{"line_number":3585,"context_line":"                    raise"},{"line_number":3586,"context_line":"                else:"},{"line_number":3587,"context_line":"                    LOG.debug("},{"line_number":3588,"context_line":"                        (\"The backend does not support or no need to accept \""},{"line_number":3589,"context_line":"                         \" the share %(shr)s.\"),"},{"line_number":3590,"context_line":"                        {\u0027shr\u0027: share_id})"},{"line_number":3591,"context_line":""},{"line_number":3592,"context_line":"        LOG.info(\"Transfer share completed successfully.\","},{"line_number":3593,"context_line":"                 resource\u003dshare_ref)"}],"source_content_type":"text/x-python","patch_set":19,"id":"8e61bbe6_0ca64d91","line":3590,"range":{"start_line":3580,"start_character":12,"end_line":3590,"end_character":42},"updated":"2022-09-05 22:23:28.000000000","message":"If driver raises \"NotImplementedError\" it consider as \" not support or not need to accept\" ? If not supported, why is the operation still happening ? Actually, it is performing the transfer, but driver is not participating. As I mentioned in the driver base class, this method could be a \"pass\" by default (which means exactly what it is: don\u0027t do anything) and this try/except can be removed at all.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":3577,"context_line":"                self.driver.accept_transfer(context, share_instance,"},{"line_number":3578,"context_line":"                                            access_rules, new_user,"},{"line_number":3579,"context_line":"                                            new_project)"},{"line_number":3580,"context_line":"            except Exception as e:"},{"line_number":3581,"context_line":"                if not isinstance(e, NotImplementedError):"},{"line_number":3582,"context_line":"                    LOG.exception("},{"line_number":3583,"context_line":"                        \"The backend could not accept the share %(shr)s.\","},{"line_number":3584,"context_line":"                        {\u0027shr\u0027: share_id})"},{"line_number":3585,"context_line":"                    raise"},{"line_number":3586,"context_line":"                else:"},{"line_number":3587,"context_line":"                    LOG.debug("},{"line_number":3588,"context_line":"                        (\"The backend does not support or no need to accept \""},{"line_number":3589,"context_line":"                         \" the share %(shr)s.\"),"},{"line_number":3590,"context_line":"                        {\u0027shr\u0027: share_id})"},{"line_number":3591,"context_line":""},{"line_number":3592,"context_line":"        LOG.info(\"Transfer share completed successfully.\","},{"line_number":3593,"context_line":"                 resource\u003dshare_ref)"}],"source_content_type":"text/x-python","patch_set":19,"id":"67efb9d7_ed57c175","line":3590,"range":{"start_line":3580,"start_character":12,"end_line":3590,"end_character":42},"in_reply_to":"8e61bbe6_0ca64d91","updated":"2022-09-07 04:16:09.000000000","message":"driver base class has changed to pass. but i think this try/except can not be removed. because if some driver implement this accept_transfer function and raise in driver. manager need to catch and raise.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":3535,"context_line":"    @periodic_task.periodic_task("},{"line_number":3536,"context_line":"        spacing\u003dCONF.check_for_expired_transfers)"},{"line_number":3537,"context_line":"    def delete_expired_transfers(self, ctxt):"},{"line_number":3538,"context_line":"        LOG.info(\"Check for expired transfers.\")"},{"line_number":3539,"context_line":"        expired_transfers \u003d self.db.get_all_expired_transfers(ctxt)"},{"line_number":3540,"context_line":""},{"line_number":3541,"context_line":"        for transfer in expired_transfers:"}],"source_content_type":"text/x-python","patch_set":22,"id":"25b8f1e0_4e44e5a6","line":3538,"range":{"start_line":3538,"start_character":18,"end_line":3538,"end_character":23},"updated":"2022-09-08 19:10:08.000000000","message":"nit: Checking","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":3535,"context_line":"    @periodic_task.periodic_task("},{"line_number":3536,"context_line":"        spacing\u003dCONF.check_for_expired_transfers)"},{"line_number":3537,"context_line":"    def delete_expired_transfers(self, ctxt):"},{"line_number":3538,"context_line":"        LOG.info(\"Check for expired transfers.\")"},{"line_number":3539,"context_line":"        expired_transfers \u003d self.db.get_all_expired_transfers(ctxt)"},{"line_number":3540,"context_line":""},{"line_number":3541,"context_line":"        for transfer in expired_transfers:"}],"source_content_type":"text/x-python","patch_set":22,"id":"55e4deb3_5f3dab57","line":3538,"range":{"start_line":3538,"start_character":18,"end_line":3538,"end_character":23},"in_reply_to":"25b8f1e0_4e44e5a6","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":3539,"context_line":"        expired_transfers \u003d self.db.get_all_expired_transfers(ctxt)"},{"line_number":3540,"context_line":""},{"line_number":3541,"context_line":"        for transfer in expired_transfers:"},{"line_number":3542,"context_line":"            LOG.debug(\"Transfer %s has expired, will be destroyed.\","},{"line_number":3543,"context_line":"                      transfer[\u0027id\u0027])"},{"line_number":3544,"context_line":"            self.transfer_api.delete(ctxt, transfer_id\u003dtransfer[\u0027id\u0027])"},{"line_number":3545,"context_line":""},{"line_number":3546,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":22,"id":"9f9637d1_c7ed5c52","line":3543,"range":{"start_line":3542,"start_character":12,"end_line":3543,"end_character":37},"updated":"2022-09-08 19:10:08.000000000","message":"An Info log after the task is done would be nice..","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":3539,"context_line":"        expired_transfers \u003d self.db.get_all_expired_transfers(ctxt)"},{"line_number":3540,"context_line":""},{"line_number":3541,"context_line":"        for transfer in expired_transfers:"},{"line_number":3542,"context_line":"            LOG.debug(\"Transfer %s has expired, will be destroyed.\","},{"line_number":3543,"context_line":"                      transfer[\u0027id\u0027])"},{"line_number":3544,"context_line":"            self.transfer_api.delete(ctxt, transfer_id\u003dtransfer[\u0027id\u0027])"},{"line_number":3545,"context_line":""},{"line_number":3546,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":22,"id":"a13b5e9f_8201e120","line":3543,"range":{"start_line":3542,"start_character":12,"end_line":3543,"end_character":37},"in_reply_to":"9f9637d1_c7ed5c52","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b2222cb2826d105e5b998fee23c6694bc87440","unresolved":true,"context_lines":[{"line_number":3575,"context_line":"                continue"},{"line_number":3576,"context_line":"            try:"},{"line_number":3577,"context_line":"                self.driver.transfer_accept(context, share_instance,"},{"line_number":3578,"context_line":"                                            access_rules, new_user,"},{"line_number":3579,"context_line":"                                            new_project)"},{"line_number":3580,"context_line":"            except Exception as e:"},{"line_number":3581,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":22,"id":"47d342d8_fbf7f9db","line":3578,"range":{"start_line":3578,"start_character":44,"end_line":3578,"end_character":57},"updated":"2022-09-08 22:45:11.000000000","message":"if clearing access rules, we don\u0027t need to send this here - the access rules will be deleted","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":3575,"context_line":"                continue"},{"line_number":3576,"context_line":"            try:"},{"line_number":3577,"context_line":"                self.driver.transfer_accept(context, share_instance,"},{"line_number":3578,"context_line":"                                            access_rules, new_user,"},{"line_number":3579,"context_line":"                                            new_project)"},{"line_number":3580,"context_line":"            except Exception as e:"},{"line_number":3581,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":22,"id":"3ff7db53_861d77fa","line":3578,"range":{"start_line":3578,"start_character":44,"end_line":3578,"end_character":57},"in_reply_to":"47d342d8_fbf7f9db","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b2222cb2826d105e5b998fee23c6694bc87440","unresolved":true,"context_lines":[{"line_number":3582,"context_line":"                    msg \u003d _(\"The backend failed to accept the share: %s.\")"},{"line_number":3583,"context_line":"                    LOG.error(msg, e)"},{"line_number":3584,"context_line":""},{"line_number":3585,"context_line":"        LOG.info(\"Transfer share completed successfully.\","},{"line_number":3586,"context_line":"                 resource\u003dshare_ref)"},{"line_number":3587,"context_line":""},{"line_number":3588,"context_line":"    @add_hooks"}],"source_content_type":"text/x-python","patch_set":22,"id":"8ca2b0a2_a9abcfbb","line":3585,"range":{"start_line":3585,"start_character":27,"end_line":3585,"end_character":32},"updated":"2022-09-08 22:45:11.000000000","message":"log the share ID, old project ID and new project ID - will help with troubleshooting","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":3582,"context_line":"                    msg \u003d _(\"The backend failed to accept the share: %s.\")"},{"line_number":3583,"context_line":"                    LOG.error(msg, e)"},{"line_number":3584,"context_line":""},{"line_number":3585,"context_line":"        LOG.info(\"Transfer share completed successfully.\","},{"line_number":3586,"context_line":"                 resource\u003dshare_ref)"},{"line_number":3587,"context_line":""},{"line_number":3588,"context_line":"    @add_hooks"}],"source_content_type":"text/x-python","patch_set":22,"id":"df339514_2ac7f4a2","line":3585,"range":{"start_line":3585,"start_character":27,"end_line":3585,"end_character":32},"in_reply_to":"8ca2b0a2_a9abcfbb","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":3539,"context_line":"        expired_transfers \u003d self.db.get_all_expired_transfers(ctxt)"},{"line_number":3540,"context_line":""},{"line_number":3541,"context_line":"        for transfer in expired_transfers:"},{"line_number":3542,"context_line":"            LOG.info(\"Transfer %s has expired, will be destroyed.\","},{"line_number":3543,"context_line":"                     transfer[\u0027id\u0027])"},{"line_number":3544,"context_line":"            self.transfer_api.delete(ctxt, transfer_id\u003dtransfer[\u0027id\u0027])"},{"line_number":3545,"context_line":""},{"line_number":3546,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":30,"id":"67e21b9b_dac26b06","line":3543,"range":{"start_line":3542,"start_character":12,"end_line":3543,"end_character":36},"updated":"2022-09-12 23:13:59.000000000","message":"debug is appropriate here; in my previous comment (https://review.opendev.org/c/openstack/manila/+/843832/comments/9f9637d1_c7ed5c52) I wanted to get an Info log added to the API method _after_ the deletion","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":3539,"context_line":"        expired_transfers \u003d self.db.get_all_expired_transfers(ctxt)"},{"line_number":3540,"context_line":""},{"line_number":3541,"context_line":"        for transfer in expired_transfers:"},{"line_number":3542,"context_line":"            LOG.info(\"Transfer %s has expired, will be destroyed.\","},{"line_number":3543,"context_line":"                     transfer[\u0027id\u0027])"},{"line_number":3544,"context_line":"            self.transfer_api.delete(ctxt, transfer_id\u003dtransfer[\u0027id\u0027])"},{"line_number":3545,"context_line":""},{"line_number":3546,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":30,"id":"9e84f632_aa96b04c","line":3543,"range":{"start_line":3542,"start_character":12,"end_line":3543,"end_character":36},"in_reply_to":"67e21b9b_dac26b06","updated":"2022-09-19 02:43:31.000000000","message":"Done","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":3582,"context_line":"                                            new_user,"},{"line_number":3583,"context_line":"                                            new_project,"},{"line_number":3584,"context_line":"                                            access_rules\u003daccess_rules,"},{"line_number":3585,"context_line":"                                            share_server\u003dshare_server_id)"},{"line_number":3586,"context_line":"            except Exception as e:"},{"line_number":3587,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":3588,"context_line":"                    msg \u003d _(\"The backend failed to accept the share: %s.\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"c6f314c0_118c2410","line":3585,"range":{"start_line":3585,"start_character":44,"end_line":3585,"end_character":72},"updated":"2022-09-12 23:13:59.000000000","message":"not just the ID - we need the share server object to be passed to the driver","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":3582,"context_line":"                                            new_user,"},{"line_number":3583,"context_line":"                                            new_project,"},{"line_number":3584,"context_line":"                                            access_rules\u003daccess_rules,"},{"line_number":3585,"context_line":"                                            share_server\u003dshare_server_id)"},{"line_number":3586,"context_line":"            except Exception as e:"},{"line_number":3587,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":3588,"context_line":"                    msg \u003d _(\"The backend failed to accept the share: %s.\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"95f3d916_36a5a2d0","line":3585,"range":{"start_line":3585,"start_character":44,"end_line":3585,"end_character":72},"in_reply_to":"c6f314c0_118c2410","updated":"2022-09-19 02:43:31.000000000","message":"Done","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cfd5d767b00fca37a6a7b08b88bc744a0f959107","unresolved":true,"context_lines":[{"line_number":3594,"context_line":"            # we can not share cephx user across projects. so need to clear"},{"line_number":3595,"context_line":"            # access rules first and then re-added in transfer_accept if"},{"line_number":3596,"context_line":"            # necessary."},{"line_number":3597,"context_line":"            if clear_rules or \u0027cephfs\u0027 in self.driver.__module__:"},{"line_number":3598,"context_line":"                try:"},{"line_number":3599,"context_line":"                    self.access_helper.update_access_rules("},{"line_number":3600,"context_line":"                        context,"}],"source_content_type":"text/x-python","patch_set":40,"id":"0a97b858_81278429","line":3597,"range":{"start_line":3597,"start_character":12,"end_line":3597,"end_character":65},"updated":"2023-02-09 22:12:24.000000000","message":"maybe we should add only:\nif clear rules:\nthen do the update access. I\u0027m not sure that having a condition around a certain driver in the share/manager feels like we are keeping the share manager \"agnostic\".\n\nWe could do the clear part + the recreate part inside the driver itself, that way we\u0027d keep that driver specific detail inside the driver, not in the share/manager","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"272989f23cebbec20ee4b60345065d558bfe3c20","unresolved":false,"context_lines":[{"line_number":3594,"context_line":"            # we can not share cephx user across projects. so need to clear"},{"line_number":3595,"context_line":"            # access rules first and then re-added in transfer_accept if"},{"line_number":3596,"context_line":"            # necessary."},{"line_number":3597,"context_line":"            if clear_rules or \u0027cephfs\u0027 in self.driver.__module__:"},{"line_number":3598,"context_line":"                try:"},{"line_number":3599,"context_line":"                    self.access_helper.update_access_rules("},{"line_number":3600,"context_line":"                        context,"}],"source_content_type":"text/x-python","patch_set":40,"id":"91c813dd_9814c213","line":3597,"range":{"start_line":3597,"start_character":12,"end_line":3597,"end_character":65},"in_reply_to":"0a97b858_81278429","updated":"2023-02-10 08:32:43.000000000","message":"It is a good suggestion, i will try to move clear part and readd rules to driver layer.","commit_id":"e37367b4e89c24cd78eff86908d5823674f2e653"},{"author":{"_account_id":33301,"name":"Caique Mello","email":"caiquemellosbo@gmail.com","username":"MelloCaique"},"change_message_id":"3fe6a4b40f05ba3e78fb6e614f0762c4c556f844","unresolved":true,"context_lines":[{"line_number":3563,"context_line":""},{"line_number":3564,"context_line":"    @periodic_task.periodic_task("},{"line_number":3565,"context_line":"        spacing\u003dCONF.check_for_expired_transfers)"},{"line_number":3566,"context_line":"    def delete_expired_transfers(self, ctxt):"},{"line_number":3567,"context_line":"        LOG.info(\"Checking for expired transfers.\")"},{"line_number":3568,"context_line":"        expired_transfers \u003d self.db.get_all_expired_transfers(ctxt)"},{"line_number":3569,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"25d12d3a_9319e1c8","line":3566,"range":{"start_line":3566,"start_character":8,"end_line":3566,"end_character":32},"updated":"2023-02-10 15:05:52.000000000","message":"Missing coverage","commit_id":"b524c92ce4e01564cd9f6c9b604351ca5e780850"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"55d66dde3f5c765f73d2b67a010ec957cb5d12b6","unresolved":false,"context_lines":[{"line_number":3563,"context_line":""},{"line_number":3564,"context_line":"    @periodic_task.periodic_task("},{"line_number":3565,"context_line":"        spacing\u003dCONF.check_for_expired_transfers)"},{"line_number":3566,"context_line":"    def delete_expired_transfers(self, ctxt):"},{"line_number":3567,"context_line":"        LOG.info(\"Checking for expired transfers.\")"},{"line_number":3568,"context_line":"        expired_transfers \u003d self.db.get_all_expired_transfers(ctxt)"},{"line_number":3569,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"5f26e1f6_dad653e7","line":3566,"range":{"start_line":3566,"start_character":8,"end_line":3566,"end_character":32},"in_reply_to":"25d12d3a_9319e1c8","updated":"2023-02-11 14:32:09.000000000","message":"have added.","commit_id":"b524c92ce4e01564cd9f6c9b604351ca5e780850"},{"author":{"_account_id":33301,"name":"Caique Mello","email":"caiquemellosbo@gmail.com","username":"MelloCaique"},"change_message_id":"3fe6a4b40f05ba3e78fb6e614f0762c4c556f844","unresolved":true,"context_lines":[{"line_number":3573,"context_line":"            self.transfer_api.delete(ctxt, transfer_id\u003dtransfer[\u0027id\u0027])"},{"line_number":3574,"context_line":""},{"line_number":3575,"context_line":"    @utils.require_driver_initialized"},{"line_number":3576,"context_line":"    def transfer_accept(self, context, share_id, new_user,"},{"line_number":3577,"context_line":"                        new_project, clear_rules):"},{"line_number":3578,"context_line":"        # need elevated context as we haven\u0027t \"given\" the share yet"},{"line_number":3579,"context_line":"        elevated_context \u003d context.elevated()"}],"source_content_type":"text/x-python","patch_set":41,"id":"93838630_06021fd6","line":3576,"range":{"start_line":3576,"start_character":8,"end_line":3576,"end_character":23},"updated":"2023-02-10 15:05:52.000000000","message":"Same as above","commit_id":"b524c92ce4e01564cd9f6c9b604351ca5e780850"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"55d66dde3f5c765f73d2b67a010ec957cb5d12b6","unresolved":false,"context_lines":[{"line_number":3573,"context_line":"            self.transfer_api.delete(ctxt, transfer_id\u003dtransfer[\u0027id\u0027])"},{"line_number":3574,"context_line":""},{"line_number":3575,"context_line":"    @utils.require_driver_initialized"},{"line_number":3576,"context_line":"    def transfer_accept(self, context, share_id, new_user,"},{"line_number":3577,"context_line":"                        new_project, clear_rules):"},{"line_number":3578,"context_line":"        # need elevated context as we haven\u0027t \"given\" the share yet"},{"line_number":3579,"context_line":"        elevated_context \u003d context.elevated()"}],"source_content_type":"text/x-python","patch_set":41,"id":"dae253bc_d2316ccf","line":3576,"range":{"start_line":3576,"start_character":8,"end_line":3576,"end_character":23},"in_reply_to":"93838630_06021fd6","updated":"2023-02-11 14:32:09.000000000","message":"Done","commit_id":"b524c92ce4e01564cd9f6c9b604351ca5e780850"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"08a602a842f7724b13821688c36f72c1b036588e","unresolved":true,"context_lines":[{"line_number":3598,"context_line":"                except Exception as e:"},{"line_number":3599,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":3600,"context_line":"                        msg \u003d _(\"Can not remove access rules of share: %s.\")"},{"line_number":3601,"context_line":"                        LOG.error(msg, e)"},{"line_number":3602,"context_line":"                continue"},{"line_number":3603,"context_line":"            try:"},{"line_number":3604,"context_line":"                if not clear_rules:"}],"source_content_type":"text/x-python","patch_set":43,"id":"78d62591_636f0d45","line":3601,"updated":"2023-02-15 00:04:34.000000000","message":"please log share and share instance IDs","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2633a26a8036c9f2cb90fd044ec12512ab5cf69e","unresolved":false,"context_lines":[{"line_number":3598,"context_line":"                except Exception as e:"},{"line_number":3599,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":3600,"context_line":"                        msg \u003d _(\"Can not remove access rules of share: %s.\")"},{"line_number":3601,"context_line":"                        LOG.error(msg, e)"},{"line_number":3602,"context_line":"                continue"},{"line_number":3603,"context_line":"            try:"},{"line_number":3604,"context_line":"                if not clear_rules:"}],"source_content_type":"text/x-python","patch_set":43,"id":"53fc70e9_f621f187","line":3601,"in_reply_to":"78d62591_636f0d45","updated":"2023-02-16 09:07:34.000000000","message":"Done","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"08a602a842f7724b13821688c36f72c1b036588e","unresolved":true,"context_lines":[{"line_number":3599,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":3600,"context_line":"                        msg \u003d _(\"Can not remove access rules of share: %s.\")"},{"line_number":3601,"context_line":"                        LOG.error(msg, e)"},{"line_number":3602,"context_line":"                continue"},{"line_number":3603,"context_line":"            try:"},{"line_number":3604,"context_line":"                if not clear_rules:"},{"line_number":3605,"context_line":"                    # if not just need to clear rules, some drivers need to"}],"source_content_type":"text/x-python","patch_set":43,"id":"3cc269c3_1d2b609e","line":3602,"range":{"start_line":3602,"start_character":0,"end_line":3602,"end_character":24},"updated":"2023-02-15 00:04:34.000000000","message":"why continue? we want to invoke \"transfer_accept\" for the correct share instance or probably _every_ share instance? I\u0027m a bit confused, so let me explain what i\u0027m thinking:\n\nyou\u0027ll have more than one share instance in case of replicated shares. There you have three scenarios:\n\n1) \"Writable\" replication\n- Each share instance has its own access rule mappings, and the driver will need calls per share instance to delete all the rules (if \"clear_rules\u003dTrue and there are any access rules)\n- call the driver to accept transfer with any of the instances (all of them will have replica_state\u003d\"active\")\n2) \"Readable\" replication\n- Each share instance has its own access rule mappings, the driver will need calls per share instance to delete all the rules (if clear_rules\u003dTrue and there are any access rules)\n- call the driver to accept transfer with the share instance that has its replica_state\u003d\"active\" \n3) \"DR\" replication\n- Only the instance with replica_state\u003d\"active\" will have access rule state mappings, and so we need to call the driver with the specific instance to delete all the rules (if clear_rules\u003dTrue and there are any access rules) \n- call the driver to accept transfer with the instance with replica_state\u003d\"active\"","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"cc34afdc9d3f6790d7e98ae64c453001d861d8e1","unresolved":true,"context_lines":[{"line_number":3599,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":3600,"context_line":"                        msg \u003d _(\"Can not remove access rules of share: %s.\")"},{"line_number":3601,"context_line":"                        LOG.error(msg, e)"},{"line_number":3602,"context_line":"                continue"},{"line_number":3603,"context_line":"            try:"},{"line_number":3604,"context_line":"                if not clear_rules:"},{"line_number":3605,"context_line":"                    # if not just need to clear rules, some drivers need to"}],"source_content_type":"text/x-python","patch_set":43,"id":"594dc4d1_03a44b7c","line":3602,"range":{"start_line":3602,"start_character":0,"end_line":3602,"end_character":24},"in_reply_to":"3cc269c3_1d2b609e","updated":"2023-02-15 21:23:58.000000000","message":"Carloss and I brainstormed this a bit more and realized my suggestion above isn\u0027t sufficient.\n\nFor a given active/readable replica, we need to send a request to the correct host to deal with the access rules - currently the code tries to do that with the host of the share (which is really the host of the representative instance) and this won\u0027t work with the way replication is designed.  \n\nI think we need to redesign how shares with multiple instances can be transferred safely mainly around the access rules concern. \n\nOne way could be that we gather the instances that need access rule changes and send RPC requests to the specific backends out of the API itself and wait before accepting the transfer of the share itself; or we could initiate the RPCs from the share manager too (Carlos pointed me to other places where we do this). I\u0027d be interested to hear your thought on how to approach this. \n\nWhatever approach we pick, i think it\u0027s wise to get this tested with a backend like ZFSOnLinux or NetApp so we don\u0027t miss anything. \n\nSince we\u0027re running too close to feature freeze, would it be wise to disallow transferring multiple shares with instances (replicated shares) right now... and have that functionality come in a follow up patch?\n\nI can add this to the PTG for us to put our heads together and redesign.\n\nhttps://etherpad.opendev.org/p/manila-bobcat-ptg-planning\n\nWDYT?","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2633a26a8036c9f2cb90fd044ec12512ab5cf69e","unresolved":true,"context_lines":[{"line_number":3599,"context_line":"                    with excutils.save_and_reraise_exception():"},{"line_number":3600,"context_line":"                        msg \u003d _(\"Can not remove access rules of share: %s.\")"},{"line_number":3601,"context_line":"                        LOG.error(msg, e)"},{"line_number":3602,"context_line":"                continue"},{"line_number":3603,"context_line":"            try:"},{"line_number":3604,"context_line":"                if not clear_rules:"},{"line_number":3605,"context_line":"                    # if not just need to clear rules, some drivers need to"}],"source_content_type":"text/x-python","patch_set":43,"id":"aa110689_b0d0dd20","line":3602,"range":{"start_line":3602,"start_character":0,"end_line":3602,"end_character":24},"in_reply_to":"594dc4d1_03a44b7c","updated":"2023-02-16 09:07:34.000000000","message":"ok, i add TODO marker in manager. and remove continue.","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"2dbe42cebb4ec81583e690e1bcc6b629f9c2c327","unresolved":true,"context_lines":[{"line_number":3601,"context_line":"                        LOG.error(msg, e)"},{"line_number":3602,"context_line":"                continue"},{"line_number":3603,"context_line":"            try:"},{"line_number":3604,"context_line":"                if not clear_rules:"},{"line_number":3605,"context_line":"                    # if not just need to clear rules, some drivers need to"},{"line_number":3606,"context_line":"                    # call driver to complete project_id change, such as"},{"line_number":3607,"context_line":"                    # CephFS driver stores the project_id as metadata."},{"line_number":3608,"context_line":"                    self.driver.transfer_accept(context, share_instance,"},{"line_number":3609,"context_line":"                                                new_user,"},{"line_number":3610,"context_line":"                                                new_project,"}],"source_content_type":"text/x-python","patch_set":43,"id":"feda2c61_059a6766","line":3607,"range":{"start_line":3604,"start_character":16,"end_line":3607,"end_character":70},"updated":"2023-02-14 20:54:51.000000000","message":"It still feels that we are some logic that should be added to the driver into the share manager.\n\nI was thinking of this and I had one idea:\n\n- We keep the condition from line 3591\n- right after line 3597, we set the access_rules variable to an empty list [], as we know if everything went right, access rules should be gone by now.\n- We remove the condition from line 3604 and send the request to the driver for transfer_accept even if the driver does not have something to do.\n\nThat way we would be allowing other drivers that might benefit from this feature to do not need to modify any behavior in the manager in the future, as the share manager would not be verifying logic that drivers should be checking on particularities of its implementations and structure.\n\nIn case of the current cephfs driver: nothing will need to be modified as we will send an empty list of access rules and it is doing things completely relying on having access rules or not.","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2633a26a8036c9f2cb90fd044ec12512ab5cf69e","unresolved":false,"context_lines":[{"line_number":3601,"context_line":"                        LOG.error(msg, e)"},{"line_number":3602,"context_line":"                continue"},{"line_number":3603,"context_line":"            try:"},{"line_number":3604,"context_line":"                if not clear_rules:"},{"line_number":3605,"context_line":"                    # if not just need to clear rules, some drivers need to"},{"line_number":3606,"context_line":"                    # call driver to complete project_id change, such as"},{"line_number":3607,"context_line":"                    # CephFS driver stores the project_id as metadata."},{"line_number":3608,"context_line":"                    self.driver.transfer_accept(context, share_instance,"},{"line_number":3609,"context_line":"                                                new_user,"},{"line_number":3610,"context_line":"                                                new_project,"}],"source_content_type":"text/x-python","patch_set":43,"id":"94c09857_fc885007","line":3607,"range":{"start_line":3604,"start_character":16,"end_line":3607,"end_character":70},"in_reply_to":"4bf909a4_0748c882","updated":"2023-02-16 09:07:34.000000000","message":"ok, good idea, i will try to update the manager logic","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"c0b427fc7e04ca41ffb682ecd143d4ba62711b4f","unresolved":true,"context_lines":[{"line_number":3601,"context_line":"                        LOG.error(msg, e)"},{"line_number":3602,"context_line":"                continue"},{"line_number":3603,"context_line":"            try:"},{"line_number":3604,"context_line":"                if not clear_rules:"},{"line_number":3605,"context_line":"                    # if not just need to clear rules, some drivers need to"},{"line_number":3606,"context_line":"                    # call driver to complete project_id change, such as"},{"line_number":3607,"context_line":"                    # CephFS driver stores the project_id as metadata."},{"line_number":3608,"context_line":"                    self.driver.transfer_accept(context, share_instance,"},{"line_number":3609,"context_line":"                                                new_user,"},{"line_number":3610,"context_line":"                                                new_project,"}],"source_content_type":"text/x-python","patch_set":43,"id":"4bf909a4_0748c882","line":3607,"range":{"start_line":3604,"start_character":16,"end_line":3607,"end_character":70},"in_reply_to":"feda2c61_059a6766","updated":"2023-02-15 00:07:30.000000000","message":"+1\n\nI\u0027ve asked for the same behavior effectively through the comment below.. \n\nif clear_rules was set to True, when invoking the driver, explicitly set access_rules to an empty list...","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"08a602a842f7724b13821688c36f72c1b036588e","unresolved":true,"context_lines":[{"line_number":3611,"context_line":"                                                access_rules\u003daccess_rules,"},{"line_number":3612,"context_line":"                                                share_server\u003dshare_server)"},{"line_number":3613,"context_line":"            except Exception as e:"},{"line_number":3614,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":3615,"context_line":"                    msg \u003d _(\"The backend failed to accept the share: %s.\")"},{"line_number":3616,"context_line":"                    LOG.error(msg, e)"},{"line_number":3617,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"51f51dad_d18d8f66","line":3614,"range":{"start_line":3614,"start_character":16,"end_line":3614,"end_character":59},"updated":"2023-02-15 00:04:34.000000000","message":"maybe we should create a different exception \"DriverDisallowsTransferWithRules\", and allow drivers to just fail the operation and we can set a user message stating this. \n\nThis way, the only change needed in the CephFS driver is to implement the method to raise an exception if  if clear_rules is false and there are any access rules","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"b29dcb269b68b63e7214ce027a02c0a5bc9c127b","unresolved":false,"context_lines":[{"line_number":3611,"context_line":"                                                access_rules\u003daccess_rules,"},{"line_number":3612,"context_line":"                                                share_server\u003dshare_server)"},{"line_number":3613,"context_line":"            except Exception as e:"},{"line_number":3614,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":3615,"context_line":"                    msg \u003d _(\"The backend failed to accept the share: %s.\")"},{"line_number":3616,"context_line":"                    LOG.error(msg, e)"},{"line_number":3617,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"b4af4d1b_4ab3b1c0","line":3614,"range":{"start_line":3614,"start_character":16,"end_line":3614,"end_character":59},"in_reply_to":"428c9c52_83d4e8c2","updated":"2023-02-16 13:36:20.000000000","message":"has add user message here.","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2633a26a8036c9f2cb90fd044ec12512ab5cf69e","unresolved":true,"context_lines":[{"line_number":3611,"context_line":"                                                access_rules\u003daccess_rules,"},{"line_number":3612,"context_line":"                                                share_server\u003dshare_server)"},{"line_number":3613,"context_line":"            except Exception as e:"},{"line_number":3614,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":3615,"context_line":"                    msg \u003d _(\"The backend failed to accept the share: %s.\")"},{"line_number":3616,"context_line":"                    LOG.error(msg, e)"},{"line_number":3617,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"428c9c52_83d4e8c2","line":3614,"range":{"start_line":3614,"start_character":16,"end_line":3614,"end_character":59},"in_reply_to":"51f51dad_d18d8f66","updated":"2023-02-16 09:07:34.000000000","message":"clear_rules will not be given driver, access rules is None means clear_rules is true,\ni will add a new exception DriverTransferShareWithRules if failed to update access\nin driver.\n\nuser message has added in cephfs driver.","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"b1e106ff4105b5db94472e79b7f1911c6c3b249b","unresolved":true,"context_lines":[{"line_number":3609,"context_line":"                        }"},{"line_number":3610,"context_line":"                        LOG.error(msg, msg_payload)"},{"line_number":3611,"context_line":"            try:"},{"line_number":3612,"context_line":"                # TODO complete transferring multiple shares with"},{"line_number":3613,"context_line":"                #  instances (replicated shares)"},{"line_number":3614,"context_line":"                self.driver.transfer_accept(context, share_instance,"},{"line_number":3615,"context_line":"                                            new_user,"},{"line_number":3616,"context_line":"                                            new_project,"}],"source_content_type":"text/x-python","patch_set":45,"id":"78f1849d_e067739a","line":3613,"range":{"start_line":3612,"start_character":16,"end_line":3613,"end_character":48},"updated":"2023-02-16 13:21:47.000000000","message":"I think we should disallow this altogether in the API + add a new validation above in the share manager, considering the following scenarios...\nScenario 1:\n- A share is created and someone create replicas for it\n- We\u0027d get here and we would fail only here, when we actually know that such transfer would fail in the manager.\nSolution for this: add a validation in the transfers api disallowing replicated shares to be transferred\n\nScenario 2:\n- A share is created and it does not have replicas\n- Someone triggers the share transfer, share has no replicas\n- Before the transfer is accepted, someone creates a replica\n- Someone accepts the tranfser\n- We\u0027d get here and we would fail only here, when we actually know that such transfer would fail in the manager.\nSolutions for this: either block share replicas to be created in the replicas API when there\u0027s an \"open\" transfer or have a validation here as well.\n\nAnd also, we will need to stop consuming share replica quotas.\n\nWhat do you think? That way we would not risk getting here and needing to fail with replicas.","commit_id":"cbf675dcefdd2a8f249e45df96e1db048166dc91"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"99cfd275abf784562f7e4dad8c627fc9e6db091f","unresolved":false,"context_lines":[{"line_number":3609,"context_line":"                        }"},{"line_number":3610,"context_line":"                        LOG.error(msg, msg_payload)"},{"line_number":3611,"context_line":"            try:"},{"line_number":3612,"context_line":"                # TODO complete transferring multiple shares with"},{"line_number":3613,"context_line":"                #  instances (replicated shares)"},{"line_number":3614,"context_line":"                self.driver.transfer_accept(context, share_instance,"},{"line_number":3615,"context_line":"                                            new_user,"},{"line_number":3616,"context_line":"                                            new_project,"}],"source_content_type":"text/x-python","patch_set":45,"id":"f827756f_fda65515","line":3613,"range":{"start_line":3612,"start_character":16,"end_line":3613,"end_character":48},"in_reply_to":"78f1849d_e067739a","updated":"2023-02-16 14:40:20.000000000","message":"ok, i agree.   will add this in next patch.\n1) add a validation before transfer create.\n2) block replicas create if the share\u0027s state is \u0027waiting_transfer\u0027","commit_id":"cbf675dcefdd2a8f249e45df96e1db048166dc91"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1ba2ec56bfede52d82728b3782fb6c213acf3bee","unresolved":false,"context_lines":[{"line_number":3609,"context_line":"                        }"},{"line_number":3610,"context_line":"                        LOG.error(msg, msg_payload)"},{"line_number":3611,"context_line":"            try:"},{"line_number":3612,"context_line":"                # TODO complete transferring multiple shares with"},{"line_number":3613,"context_line":"                #  instances (replicated shares)"},{"line_number":3614,"context_line":"                self.driver.transfer_accept(context, share_instance,"},{"line_number":3615,"context_line":"                                            new_user,"},{"line_number":3616,"context_line":"                                            new_project,"}],"source_content_type":"text/x-python","patch_set":45,"id":"dd1e3087_7e128fcf","line":3613,"range":{"start_line":3612,"start_character":16,"end_line":3613,"end_character":48},"in_reply_to":"f827756f_fda65515","updated":"2023-02-16 15:07:37.000000000","message":"As we discussed, replicas can only be created if the share is in the available state, so we just need to check when we create the transfer","commit_id":"cbf675dcefdd2a8f249e45df96e1db048166dc91"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"de7f4ec36476e18ab77c79c865f3563ac4962028","unresolved":true,"context_lines":[{"line_number":3620,"context_line":"                    self.message_api.create("},{"line_number":3621,"context_line":"                        context,"},{"line_number":3622,"context_line":"                        message_field.Action.TRANSFER_ACCEPT,"},{"line_number":3623,"context_line":"                        share_ref[\u0027project_id\u0027],"},{"line_number":3624,"context_line":"                        resource_type\u003dmessage_field.Resource.SHARE,"},{"line_number":3625,"context_line":"                        resource_id\u003dshare_id,"},{"line_number":3626,"context_line":"                        detail\u003d(message_field.Detail."}],"source_content_type":"text/x-python","patch_set":50,"id":"91998d57_a4f18851","line":3623,"range":{"start_line":3623,"start_character":24,"end_line":3623,"end_character":47},"updated":"2023-02-17 07:10:57.000000000","message":"shouldn\u0027t this be the destination project id?","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"17eeb2f9103b101bb42d3b7301afd7004654ad5b","unresolved":false,"context_lines":[{"line_number":3620,"context_line":"                    self.message_api.create("},{"line_number":3621,"context_line":"                        context,"},{"line_number":3622,"context_line":"                        message_field.Action.TRANSFER_ACCEPT,"},{"line_number":3623,"context_line":"                        share_ref[\u0027project_id\u0027],"},{"line_number":3624,"context_line":"                        resource_type\u003dmessage_field.Resource.SHARE,"},{"line_number":3625,"context_line":"                        resource_id\u003dshare_id,"},{"line_number":3626,"context_line":"                        detail\u003d(message_field.Detail."}],"source_content_type":"text/x-python","patch_set":50,"id":"cb761a37_79cfeef6","line":3623,"range":{"start_line":3623,"start_character":24,"end_line":3623,"end_character":47},"in_reply_to":"91998d57_a4f18851","updated":"2023-02-17 08:06:03.000000000","message":"Done","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"}],"manila/share/rpcapi.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"08a602a842f7724b13821688c36f72c1b036588e","unresolved":true,"context_lines":[{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def transfer_accept(self, ctxt, share, new_user,"},{"line_number":315,"context_line":"                        new_project, clear_rules\u003dFalse):"},{"line_number":316,"context_line":"        msg_args \u003d {\u0027share_id\u0027: share[\u0027id\u0027],"},{"line_number":317,"context_line":"                    \u0027new_user\u0027: new_user,"},{"line_number":318,"context_line":"                    \u0027new_project\u0027: new_project,"},{"line_number":319,"context_line":"                    \u0027clear_rules\u0027: clear_rules"},{"line_number":320,"context_line":"                    }"},{"line_number":321,"context_line":"        host \u003d utils.extract_host(share[\u0027instance\u0027][\u0027host\u0027])"},{"line_number":322,"context_line":"        call_context \u003d self.client.prepare(server\u003dhost, version\u003d\u00271.24\u0027)"},{"line_number":323,"context_line":"        call_context.call(ctxt, \u0027transfer_accept\u0027, **msg_args)"}],"source_content_type":"text/x-python","patch_set":43,"id":"57bd2c4e_adff2080","line":320,"range":{"start_line":316,"start_character":19,"end_line":320,"end_character":21},"updated":"2023-02-15 00:04:34.000000000","message":"nit: dict formatting:\n\n\n  msg_args \u003d {\n                \u0027share_id\u0027: share[\u0027id\u0027],\n                \u0027new_user\u0027: new_user,\n                \u0027new_project\u0027: new_project,\n                \u0027clear_rules\u0027: clear_rules,\n             }","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2633a26a8036c9f2cb90fd044ec12512ab5cf69e","unresolved":false,"context_lines":[{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def transfer_accept(self, ctxt, share, new_user,"},{"line_number":315,"context_line":"                        new_project, clear_rules\u003dFalse):"},{"line_number":316,"context_line":"        msg_args \u003d {\u0027share_id\u0027: share[\u0027id\u0027],"},{"line_number":317,"context_line":"                    \u0027new_user\u0027: new_user,"},{"line_number":318,"context_line":"                    \u0027new_project\u0027: new_project,"},{"line_number":319,"context_line":"                    \u0027clear_rules\u0027: clear_rules"},{"line_number":320,"context_line":"                    }"},{"line_number":321,"context_line":"        host \u003d utils.extract_host(share[\u0027instance\u0027][\u0027host\u0027])"},{"line_number":322,"context_line":"        call_context \u003d self.client.prepare(server\u003dhost, version\u003d\u00271.24\u0027)"},{"line_number":323,"context_line":"        call_context.call(ctxt, \u0027transfer_accept\u0027, **msg_args)"}],"source_content_type":"text/x-python","patch_set":43,"id":"7f460c71_8278e741","line":320,"range":{"start_line":316,"start_character":19,"end_line":320,"end_character":21},"in_reply_to":"57bd2c4e_adff2080","updated":"2023-02-16 09:07:34.000000000","message":"Done","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"}],"manila/transfer/api.py":[{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":59,"context_line":"        super().__init__()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _get_share_instance(self, context, share):"},{"line_number":62,"context_line":"        if isinstance(share, str):"},{"line_number":63,"context_line":"            id \u003d share"},{"line_number":64,"context_line":"        else:"},{"line_number":65,"context_line":"            id \u003d share.instance[\u0027id\u0027]"},{"line_number":66,"context_line":"        return self.db.share_instance_get(context, id, with_share_data\u003dTrue)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def get(self, context, transfer_id):"}],"source_content_type":"text/x-python","patch_set":19,"id":"380663f5_de9ee8e7","line":65,"range":{"start_line":62,"start_character":8,"end_line":65,"end_character":37},"updated":"2022-09-05 22:23:28.000000000","message":"this kind of code should be avoided, since the share property has not a deterministic type.  It is complicated to document, maintain and move to python typed. Let the caller get the id from the share instance and keep the share prop as \"share_id\" (string).","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":true,"context_lines":[{"line_number":59,"context_line":"        super().__init__()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _get_share_instance(self, context, share):"},{"line_number":62,"context_line":"        if isinstance(share, str):"},{"line_number":63,"context_line":"            id \u003d share"},{"line_number":64,"context_line":"        else:"},{"line_number":65,"context_line":"            id \u003d share.instance[\u0027id\u0027]"},{"line_number":66,"context_line":"        return self.db.share_instance_get(context, id, with_share_data\u003dTrue)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def get(self, context, transfer_id):"}],"source_content_type":"text/x-python","patch_set":19,"id":"d9ba46d3_b4672b7c","line":65,"range":{"start_line":62,"start_character":8,"end_line":65,"end_character":37},"in_reply_to":"380663f5_de9ee8e7","updated":"2022-09-07 04:16:09.000000000","message":"sorry, i don\u0027t know what your mean, \ni just copy this code from manager.\nhttps://opendev.org/openstack/manila/src/commit/6b7bc9f37bde3a88b75aa47153487591cdd537fd/manila/share/manager.py#L1946","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6384f4c25ff146f89ebc3e0ef0625d7995ed10c1","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        super().__init__()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _get_share_instance(self, context, share):"},{"line_number":62,"context_line":"        if isinstance(share, str):"},{"line_number":63,"context_line":"            id \u003d share"},{"line_number":64,"context_line":"        else:"},{"line_number":65,"context_line":"            id \u003d share.instance[\u0027id\u0027]"},{"line_number":66,"context_line":"        return self.db.share_instance_get(context, id, with_share_data\u003dTrue)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def get(self, context, transfer_id):"}],"source_content_type":"text/x-python","patch_set":19,"id":"8c3dcc37_5779b17b","line":65,"range":{"start_line":62,"start_character":8,"end_line":65,"end_character":37},"in_reply_to":"d9ba46d3_b4672b7c","updated":"2022-09-09 09:21:32.000000000","message":"Done","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"95c303d541225f834a4993e9ed4f6f4b0bbd4370","unresolved":true,"context_lines":[{"line_number":130,"context_line":"            return input_str"},{"line_number":131,"context_line":"        salt \u003d _format_str(salt)"},{"line_number":132,"context_line":"        auth_key \u003d _format_str(auth_key)"},{"line_number":133,"context_line":"        return hmac.new(salt, auth_key, hashlib.sha1).hexdigest()"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def create(self, context, share_id, display_name):"},{"line_number":136,"context_line":"        \"\"\"Creates an entry in the transfers table.\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"3e7059aa_e3f0647e","line":133,"range":{"start_line":133,"start_character":40,"end_line":133,"end_character":52},"updated":"2022-09-06 13:16:08.000000000","message":"sha1 tends to not be so strong as expected by the FIPS standards, could you please change the algorithm here?","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            return input_str"},{"line_number":131,"context_line":"        salt \u003d _format_str(salt)"},{"line_number":132,"context_line":"        auth_key \u003d _format_str(auth_key)"},{"line_number":133,"context_line":"        return hmac.new(salt, auth_key, hashlib.sha1).hexdigest()"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def create(self, context, share_id, display_name):"},{"line_number":136,"context_line":"        \"\"\"Creates an entry in the transfers table.\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"e3e88930_dac5dcc6","line":133,"range":{"start_line":133,"start_character":40,"end_line":133,"end_character":52},"in_reply_to":"285b65f5_321035b6","updated":"2022-09-09 09:18:29.000000000","message":"i got it!","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":true,"context_lines":[{"line_number":130,"context_line":"            return input_str"},{"line_number":131,"context_line":"        salt \u003d _format_str(salt)"},{"line_number":132,"context_line":"        auth_key \u003d _format_str(auth_key)"},{"line_number":133,"context_line":"        return hmac.new(salt, auth_key, hashlib.sha1).hexdigest()"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def create(self, context, share_id, display_name):"},{"line_number":136,"context_line":"        \"\"\"Creates an entry in the transfers table.\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"cd96c4c0_ec045473","line":133,"range":{"start_line":133,"start_character":40,"end_line":133,"end_character":52},"in_reply_to":"3e7059aa_e3f0647e","updated":"2022-09-07 04:16:09.000000000","message":"i see\nhttps://opendev.org/openstack/manila/src/commit/6b7bc9f37bde3a88b75aa47153487591cdd537fd/manila/share/manager.py#L404\nhttps://opendev.org/openstack/manila/src/commit/6b7bc9f37bde3a88b75aa47153487591cdd537fd/manila/share/drivers/hpe/hpe_3par_driver.py#L360\naslo use sha1.\n\nWhat algorithm should I use here? I\u0027m not sure about the FIPS standards","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":130,"context_line":"            return input_str"},{"line_number":131,"context_line":"        salt \u003d _format_str(salt)"},{"line_number":132,"context_line":"        auth_key \u003d _format_str(auth_key)"},{"line_number":133,"context_line":"        return hmac.new(salt, auth_key, hashlib.sha1).hexdigest()"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def create(self, context, share_id, display_name):"},{"line_number":136,"context_line":"        \"\"\"Creates an entry in the transfers table.\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"285b65f5_321035b6","line":133,"range":{"start_line":133,"start_character":40,"end_line":133,"end_character":52},"in_reply_to":"cd96c4c0_ec045473","updated":"2022-09-08 22:01:44.000000000","message":"yes; FIPS recommends moving away from sha1, sha256 could be a better choice - it produces a hash that\u0027s 64 characters long, as opposed to 40 from sha1... which isn\u0027t a big deal for storage requirements..","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":158,"context_line":"        auth_key \u003d self._get_random_string(CONF.share_transfer_key_length)"},{"line_number":159,"context_line":"        crypt_hash \u003d self._get_crypt_hash(salt, auth_key)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        transfer_rec \u003d {\u0027resource_type\u0027: \u0027share\u0027,"},{"line_number":162,"context_line":"                        \u0027resource_id\u0027: share_id,"},{"line_number":163,"context_line":"                        \u0027display_name\u0027: display_name,"},{"line_number":164,"context_line":"                        \u0027salt\u0027: salt,"}],"source_content_type":"text/x-python","patch_set":19,"id":"4449e1a1_bfcd9658","line":161,"range":{"start_line":161,"start_character":42,"end_line":161,"end_character":49},"updated":"2022-09-05 22:23:28.000000000","message":"hard coded enum string. Please, use the constants.py file to create the constant \"SHARE_RESOURCE_TYPE\". Use this constant in line 399, it is hard coded too.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        auth_key \u003d self._get_random_string(CONF.share_transfer_key_length)"},{"line_number":159,"context_line":"        crypt_hash \u003d self._get_crypt_hash(salt, auth_key)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        transfer_rec \u003d {\u0027resource_type\u0027: \u0027share\u0027,"},{"line_number":162,"context_line":"                        \u0027resource_id\u0027: share_id,"},{"line_number":163,"context_line":"                        \u0027display_name\u0027: display_name,"},{"line_number":164,"context_line":"                        \u0027salt\u0027: salt,"}],"source_content_type":"text/x-python","patch_set":19,"id":"3b04590f_4671250f","line":161,"range":{"start_line":161,"start_character":42,"end_line":161,"end_character":49},"in_reply_to":"4449e1a1_bfcd9658","updated":"2022-09-07 04:16:09.000000000","message":"Done","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":170,"context_line":"            transfer \u003d self.db.transfer_create(context, transfer_rec)"},{"line_number":171,"context_line":"        except Exception:"},{"line_number":172,"context_line":"            LOG.error(\"Failed to create transfer record for %s\", share_id)"},{"line_number":173,"context_line":"            raise"},{"line_number":174,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":175,"context_line":"                                             share_instance,"},{"line_number":176,"context_line":"                                             \"transfer.create.end\")"}],"source_content_type":"text/x-python","patch_set":19,"id":"2ef5f7d4_6be9a447","line":173,"range":{"start_line":173,"start_character":12,"end_line":173,"end_character":17},"updated":"2022-09-05 22:23:28.000000000","message":"can use the:\nexcept Exception:\n    with excutils.save_and_reraise_exception()","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            transfer \u003d self.db.transfer_create(context, transfer_rec)"},{"line_number":171,"context_line":"        except Exception:"},{"line_number":172,"context_line":"            LOG.error(\"Failed to create transfer record for %s\", share_id)"},{"line_number":173,"context_line":"            raise"},{"line_number":174,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":175,"context_line":"                                             share_instance,"},{"line_number":176,"context_line":"                                             \"transfer.create.end\")"}],"source_content_type":"text/x-python","patch_set":19,"id":"35e226cc_4da43249","line":173,"range":{"start_line":173,"start_character":12,"end_line":173,"end_character":17},"in_reply_to":"2ef5f7d4_6be9a447","updated":"2022-09-07 04:16:09.000000000","message":"Done","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        return reservations, donor_reservations"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def accept(self, context, transfer_id, auth_key, clear_rules\u003dFalse):"},{"line_number":240,"context_line":"        \"\"\"Accept a share that has been offered for transfer.\"\"\""},{"line_number":241,"context_line":"        # We must use an elevated context to see the share that is still"},{"line_number":242,"context_line":"        # owned by the donor."}],"source_content_type":"text/x-python","patch_set":19,"id":"a5f5dc6a_b1789914","line":239,"range":{"start_line":239,"start_character":8,"end_line":239,"end_character":14},"updated":"2022-09-05 22:23:28.000000000","message":"this function is a bit huge (160 lines). Could you split it on smaller pieces ? For example, there are some checks that could be a separated function ( check share type access, check quota, check replica and so on). Wdyt ?","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        return reservations, donor_reservations"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def accept(self, context, transfer_id, auth_key, clear_rules\u003dFalse):"},{"line_number":240,"context_line":"        \"\"\"Accept a share that has been offered for transfer.\"\"\""},{"line_number":241,"context_line":"        # We must use an elevated context to see the share that is still"},{"line_number":242,"context_line":"        # owned by the donor."}],"source_content_type":"text/x-python","patch_set":19,"id":"0988d428_55c1a25d","line":239,"range":{"start_line":239,"start_character":8,"end_line":239,"end_character":14},"in_reply_to":"a5f5dc6a_b1789914","updated":"2022-09-07 04:16:09.000000000","message":"This function has been broken down","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":252,"context_line":"        share_id \u003d transfer[\u0027resource_id\u0027]"},{"line_number":253,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":254,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":255,"context_line":"        if share_ref[\u0027status\u0027] !\u003d \u0027awaiting-transfer\u0027:"},{"line_number":256,"context_line":"            msg \u003d (_(\u0027Transfer %(transfer_id)s: share id %(share_id)s \u0027"},{"line_number":257,"context_line":"                     \u0027expected in awaiting-transfer state.\u0027)"},{"line_number":258,"context_line":"                   % {\u0027transfer_id\u0027: transfer_id, \u0027share_id\u0027: share_id})"}],"source_content_type":"text/x-python","patch_set":19,"id":"bf350253_a808e03c","line":255,"range":{"start_line":255,"start_character":35,"end_line":255,"end_character":53},"updated":"2022-09-05 22:23:28.000000000","message":"should this state be on the constants, instead of hard coding the string here ? Same for all references to this string on the code.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        share_id \u003d transfer[\u0027resource_id\u0027]"},{"line_number":253,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":254,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":255,"context_line":"        if share_ref[\u0027status\u0027] !\u003d \u0027awaiting-transfer\u0027:"},{"line_number":256,"context_line":"            msg \u003d (_(\u0027Transfer %(transfer_id)s: share id %(share_id)s \u0027"},{"line_number":257,"context_line":"                     \u0027expected in awaiting-transfer state.\u0027)"},{"line_number":258,"context_line":"                   % {\u0027transfer_id\u0027: transfer_id, \u0027share_id\u0027: share_id})"}],"source_content_type":"text/x-python","patch_set":19,"id":"d08720ad_d33abd6e","line":255,"range":{"start_line":255,"start_character":35,"end_line":255,"end_character":53},"in_reply_to":"bf350253_a808e03c","updated":"2022-09-07 04:16:09.000000000","message":"Done","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":355,"context_line":"                                             share_instance,"},{"line_number":356,"context_line":"                                             \"transfer.accept.start\")"},{"line_number":357,"context_line":"        try:"},{"line_number":358,"context_line":"            self.share_api.accept_transfer(context,"},{"line_number":359,"context_line":"                                           share_ref,"},{"line_number":360,"context_line":"                                           context.user_id,"},{"line_number":361,"context_line":"                                           context.project_id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"745d6423_b4b8b75b","line":358,"range":{"start_line":358,"start_character":27,"end_line":358,"end_character":42},"updated":"2022-09-05 22:23:28.000000000","message":"why is it called \"accept_transfer\" and \"transfer_accept\" others ? Should it follow a defined pattern ?","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                                             share_instance,"},{"line_number":356,"context_line":"                                             \"transfer.accept.start\")"},{"line_number":357,"context_line":"        try:"},{"line_number":358,"context_line":"            self.share_api.accept_transfer(context,"},{"line_number":359,"context_line":"                                           share_ref,"},{"line_number":360,"context_line":"                                           context.user_id,"},{"line_number":361,"context_line":"                                           context.project_id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a444a4d_95615973","line":358,"range":{"start_line":358,"start_character":27,"end_line":358,"end_character":42},"in_reply_to":"745d6423_b4b8b75b","updated":"2022-09-07 04:16:09.000000000","message":"Done, all change to transfer_accept.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":376,"context_line":"            if snap_donor_res:"},{"line_number":377,"context_line":"                QUOTAS.commit(context, snap_donor_res, project_id\u003ddonor_id)"},{"line_number":378,"context_line":"            LOG.info(\"share %s has been transferred.\", share_id)"},{"line_number":379,"context_line":"        except Exception:"},{"line_number":380,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":381,"context_line":"                QUOTAS.rollback(context, reservations)"},{"line_number":382,"context_line":"                if snap_res:"}],"source_content_type":"text/x-python","patch_set":19,"id":"e2a3af87_69e39e3f","line":379,"range":{"start_line":379,"start_character":7,"end_line":379,"end_character":24},"updated":"2022-09-05 22:23:28.000000000","message":"There is no rollback to the transfer, if it fails, the \"transfer\" will continue be \"accepted\" (modification done at line #365 and #358). Example, the CephFS has the metadata as the transfer, but the commit failed.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1acc40ead3805e3ac14d078ce1c020af244fddfd","unresolved":true,"context_lines":[{"line_number":376,"context_line":"            if snap_donor_res:"},{"line_number":377,"context_line":"                QUOTAS.commit(context, snap_donor_res, project_id\u003ddonor_id)"},{"line_number":378,"context_line":"            LOG.info(\"share %s has been transferred.\", share_id)"},{"line_number":379,"context_line":"        except Exception:"},{"line_number":380,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":381,"context_line":"                QUOTAS.rollback(context, reservations)"},{"line_number":382,"context_line":"                if snap_res:"}],"source_content_type":"text/x-python","patch_set":19,"id":"c5e8814f_4aa26262","line":379,"range":{"start_line":379,"start_character":7,"end_line":379,"end_character":24},"in_reply_to":"81f77fe3_27964d2f","updated":"2022-09-07 16:28:59.000000000","message":"You didn\u0027t get my point. There are two possible roll back scenarios, please, explain how they are fixed:\n\n1. the share_api.transfer_accept succeed. It means driver like CephFS applies on the storage side the new project id for the share.\n\n2. The db.transfer_accept succeed. It means the transfer has been changed on db layer.\n\n\nHowever, during QUOTA commit phase it fails. How would the (1) and (2) undo the operations ? In the exception treatment, the code is only rolling back all quotas.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4bbdebd6b1f931951d6b77f17ceb44e56748c7ff","unresolved":false,"context_lines":[{"line_number":376,"context_line":"            if snap_donor_res:"},{"line_number":377,"context_line":"                QUOTAS.commit(context, snap_donor_res, project_id\u003ddonor_id)"},{"line_number":378,"context_line":"            LOG.info(\"share %s has been transferred.\", share_id)"},{"line_number":379,"context_line":"        except Exception:"},{"line_number":380,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":381,"context_line":"                QUOTAS.rollback(context, reservations)"},{"line_number":382,"context_line":"                if snap_res:"}],"source_content_type":"text/x-python","patch_set":19,"id":"b06c3c8d_f4d1ca66","line":379,"range":{"start_line":379,"start_character":7,"end_line":379,"end_character":24},"in_reply_to":"c5e8814f_4aa26262","updated":"2022-09-08 03:17:21.000000000","message":"i got it. i will add rollback logic.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":376,"context_line":"            if snap_donor_res:"},{"line_number":377,"context_line":"                QUOTAS.commit(context, snap_donor_res, project_id\u003ddonor_id)"},{"line_number":378,"context_line":"            LOG.info(\"share %s has been transferred.\", share_id)"},{"line_number":379,"context_line":"        except Exception:"},{"line_number":380,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":381,"context_line":"                QUOTAS.rollback(context, reservations)"},{"line_number":382,"context_line":"                if snap_res:"}],"source_content_type":"text/x-python","patch_set":19,"id":"81f77fe3_27964d2f","line":379,"range":{"start_line":379,"start_character":7,"end_line":379,"end_character":24},"in_reply_to":"e2a3af87_69e39e3f","updated":"2022-09-07 04:16:09.000000000","message":"only share_api.transfer_accept success(this means driver transfer accept success), \nthen will call db to transfer accept, if failed in driver, will catch raise directly, and will not call db to continue acceptd. so if driver failed. we no need to roll back.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":395,"context_line":"                                             \"transfer.accept.end\")"},{"line_number":396,"context_line":"        return {\u0027id\u0027: transfer_id,"},{"line_number":397,"context_line":"                \u0027display_name\u0027: transfer[\u0027display_name\u0027],"},{"line_number":398,"context_line":"                \u0027resource_type\u0027: \u0027share\u0027,"},{"line_number":399,"context_line":"                \u0027resource_id\u0027: share_id}"}],"source_content_type":"text/x-python","patch_set":19,"id":"8d155443_50f85c21","line":398,"range":{"start_line":398,"start_character":34,"end_line":398,"end_character":39},"updated":"2022-09-05 22:23:28.000000000","message":"hard coded name. please, use a variable to it.","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":395,"context_line":"                                             \"transfer.accept.end\")"},{"line_number":396,"context_line":"        return {\u0027id\u0027: transfer_id,"},{"line_number":397,"context_line":"                \u0027display_name\u0027: transfer[\u0027display_name\u0027],"},{"line_number":398,"context_line":"                \u0027resource_type\u0027: \u0027share\u0027,"},{"line_number":399,"context_line":"                \u0027resource_id\u0027: share_id}"}],"source_content_type":"text/x-python","patch_set":19,"id":"bdf2f1e8_4e2d3c71","line":398,"range":{"start_line":398,"start_character":34,"end_line":398,"end_character":39},"in_reply_to":"8d155443_50f85c21","updated":"2022-09-07 04:16:09.000000000","message":"Done","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"share_transfer_opts \u003d ["},{"line_number":41,"context_line":"    cfg.IntOpt(\u0027share_transfer_salt_length\u0027, default\u003d8,"},{"line_number":42,"context_line":"               help\u003d\u0027The number of characters in the salt.\u0027),"},{"line_number":43,"context_line":"    cfg.IntOpt(\u0027share_transfer_key_length\u0027, default\u003d16,"},{"line_number":44,"context_line":"               help\u003d\u0027The number of characters in the \u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"3b6e9f9c_d86ac4ee","line":41,"range":{"start_line":41,"start_character":54,"end_line":41,"end_character":55},"updated":"2022-09-08 19:10:08.000000000","message":"min\u003d8, max\u003d255?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"share_transfer_opts \u003d ["},{"line_number":41,"context_line":"    cfg.IntOpt(\u0027share_transfer_salt_length\u0027, default\u003d8,"},{"line_number":42,"context_line":"               help\u003d\u0027The number of characters in the salt.\u0027),"},{"line_number":43,"context_line":"    cfg.IntOpt(\u0027share_transfer_key_length\u0027, default\u003d16,"},{"line_number":44,"context_line":"               help\u003d\u0027The number of characters in the \u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"3bcc93dd_3377d5e6","line":41,"range":{"start_line":41,"start_character":54,"end_line":41,"end_character":55},"in_reply_to":"3b6e9f9c_d86ac4ee","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":40,"context_line":"share_transfer_opts \u003d ["},{"line_number":41,"context_line":"    cfg.IntOpt(\u0027share_transfer_salt_length\u0027, default\u003d8,"},{"line_number":42,"context_line":"               help\u003d\u0027The number of characters in the salt.\u0027),"},{"line_number":43,"context_line":"    cfg.IntOpt(\u0027share_transfer_key_length\u0027, default\u003d16,"},{"line_number":44,"context_line":"               help\u003d\u0027The number of characters in the \u0027"},{"line_number":45,"context_line":"               \u0027autogenerated auth key.\u0027), ]"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"1041aa56_ccdf861f","line":43,"range":{"start_line":43,"start_character":44,"end_line":43,"end_character":55},"updated":"2022-09-08 19:10:08.000000000","message":"min\u003d16, max\u003d255?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":40,"context_line":"share_transfer_opts \u003d ["},{"line_number":41,"context_line":"    cfg.IntOpt(\u0027share_transfer_salt_length\u0027, default\u003d8,"},{"line_number":42,"context_line":"               help\u003d\u0027The number of characters in the salt.\u0027),"},{"line_number":43,"context_line":"    cfg.IntOpt(\u0027share_transfer_key_length\u0027, default\u003d16,"},{"line_number":44,"context_line":"               help\u003d\u0027The number of characters in the \u0027"},{"line_number":45,"context_line":"               \u0027autogenerated auth key.\u0027), ]"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"267e42a4_d538bb2e","line":43,"range":{"start_line":43,"start_character":44,"end_line":43,"end_character":55},"in_reply_to":"1041aa56_ccdf861f","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":42,"context_line":"               help\u003d\u0027The number of characters in the salt.\u0027),"},{"line_number":43,"context_line":"    cfg.IntOpt(\u0027share_transfer_key_length\u0027, default\u003d16,"},{"line_number":44,"context_line":"               help\u003d\u0027The number of characters in the \u0027"},{"line_number":45,"context_line":"               \u0027autogenerated auth key.\u0027), ]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"CONF \u003d cfg.CONF"},{"line_number":48,"context_line":"CONF.register_opts(share_transfer_opts)"}],"source_content_type":"text/x-python","patch_set":22,"id":"59288987_7dec2a5a","line":45,"range":{"start_line":45,"start_character":43,"end_line":45,"end_character":44},"updated":"2022-09-08 19:10:08.000000000","message":"nit: move to next line","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":42,"context_line":"               help\u003d\u0027The number of characters in the salt.\u0027),"},{"line_number":43,"context_line":"    cfg.IntOpt(\u0027share_transfer_key_length\u0027, default\u003d16,"},{"line_number":44,"context_line":"               help\u003d\u0027The number of characters in the \u0027"},{"line_number":45,"context_line":"               \u0027autogenerated auth key.\u0027), ]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"CONF \u003d cfg.CONF"},{"line_number":48,"context_line":"CONF.register_opts(share_transfer_opts)"}],"source_content_type":"text/x-python","patch_set":22,"id":"d6b4a5df_240612e8","line":45,"range":{"start_line":45,"start_character":43,"end_line":45,"end_character":44},"in_reply_to":"59288987_7dec2a5a","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"df57051d38a6aff83416de6f5a139e926f027855","unresolved":true,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def get(self, context, transfer_id):"},{"line_number":69,"context_line":"        transfer \u003d self.db.share_transfer_get(context, transfer_id)"},{"line_number":70,"context_line":"        return dict(transfer)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def delete(self, context, transfer_id):"},{"line_number":73,"context_line":"        \"\"\"Make the RPC call to delete a share transfer.\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"83d32eca_7ec2c1dd","line":70,"range":{"start_line":70,"start_character":15,"end_line":70,"end_character":29},"updated":"2022-09-08 19:10:08.000000000","message":"why the dict conversion?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def get(self, context, transfer_id):"},{"line_number":69,"context_line":"        transfer \u003d self.db.share_transfer_get(context, transfer_id)"},{"line_number":70,"context_line":"        return dict(transfer)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def delete(self, context, transfer_id):"},{"line_number":73,"context_line":"        \"\"\"Make the RPC call to delete a share transfer.\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"f15be67c_e6e0ae04","line":70,"range":{"start_line":70,"start_character":15,"end_line":70,"end_character":29},"in_reply_to":"83d32eca_7ec2c1dd","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def delete(self, context, transfer_id):"},{"line_number":73,"context_line":"        \"\"\"Make the RPC call to delete a share transfer.\"\"\""},{"line_number":74,"context_line":"        transfer \u003d self.db.share_transfer_get(context, transfer_id)"},{"line_number":75,"context_line":"        share_ref \u003d self.db.share_get(context, transfer.resource_id)"},{"line_number":76,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":77,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"}],"source_content_type":"text/x-python","patch_set":22,"id":"42ec6f67_1737e2f0","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":67},"updated":"2022-09-08 22:01:44.000000000","message":"Only admins or someone who belongs to the project represented in \"transfers.source_project_id\" should be allowed to delete a transfer; you could apply a policy to do that work for you\n\n\n   policy.check_policy(context, \u0027share_transfer\u0027, \u0027delete\u0027, target_obj\u003d{\u0027project_id\u0027: transfer.source_project_id})","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":true,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def delete(self, context, transfer_id):"},{"line_number":73,"context_line":"        \"\"\"Make the RPC call to delete a share transfer.\"\"\""},{"line_number":74,"context_line":"        transfer \u003d self.db.share_transfer_get(context, transfer_id)"},{"line_number":75,"context_line":"        share_ref \u003d self.db.share_get(context, transfer.resource_id)"},{"line_number":76,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":77,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"}],"source_content_type":"text/x-python","patch_set":22,"id":"a5c7810a_eec0dc2e","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":67},"in_reply_to":"42ec6f67_1737e2f0","updated":"2022-09-09 09:18:29.000000000","message":"in api/v2/share_transfer.py \n@wsgi.Controller.authorize(\u0027delete\u0027)\n    def delete(self, req, id):\n        xxxxxxx\n\nhere already check policy. \nand i think target_obj should be default value \u0027project_id\u0027: context.project_id.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def delete(self, context, transfer_id):"},{"line_number":73,"context_line":"        \"\"\"Make the RPC call to delete a share transfer.\"\"\""},{"line_number":74,"context_line":"        transfer \u003d self.db.share_transfer_get(context, transfer_id)"},{"line_number":75,"context_line":"        share_ref \u003d self.db.share_get(context, transfer.resource_id)"},{"line_number":76,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":77,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"}],"source_content_type":"text/x-python","patch_set":22,"id":"70101bf6_95bbdd3a","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":67},"in_reply_to":"4753c438_06cfa0bd","updated":"2022-09-19 02:43:31.000000000","message":"i got it, thanks.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def delete(self, context, transfer_id):"},{"line_number":73,"context_line":"        \"\"\"Make the RPC call to delete a share transfer.\"\"\""},{"line_number":74,"context_line":"        transfer \u003d self.db.share_transfer_get(context, transfer_id)"},{"line_number":75,"context_line":"        share_ref \u003d self.db.share_get(context, transfer.resource_id)"},{"line_number":76,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":77,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"}],"source_content_type":"text/x-python","patch_set":22,"id":"4753c438_06cfa0bd","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":67},"in_reply_to":"a5c7810a_eec0dc2e","updated":"2022-09-12 23:13:59.000000000","message":"I didn\u0027t understand the response.. the \"wsgi.Controller.authorize\" will check whether you have permission to execute the delete API - i was asking for another policy check here so we can prevent non-project users from deleting the transfer.. \n\nconsider two projects: A and B\n\nmember Aa from A initiated a transfer, right now, if member Bb from B knows the transfer ID, they can delete the transfer - there\u0027s nothing in the code to prevent this.. So, i\u0027m asking for a policy check that will compare context.project_id with the transfer.source_project_id.. this way, Bb cannot delete Aa\u0027s transfer request","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":72,"context_line":"    def delete(self, context, transfer_id):"},{"line_number":73,"context_line":"        \"\"\"Make the RPC call to delete a share transfer.\"\"\""},{"line_number":74,"context_line":"        transfer \u003d self.db.share_transfer_get(context, transfer_id)"},{"line_number":75,"context_line":"        share_ref \u003d self.db.share_get(context, transfer.resource_id)"},{"line_number":76,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":77,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":78,"context_line":"                                             share_instance,"}],"source_content_type":"text/x-python","patch_set":22,"id":"61652044_2a5960cf","line":75,"range":{"start_line":75,"start_character":0,"end_line":75,"end_character":68},"updated":"2022-09-08 22:01:44.000000000","message":"it\u0027s possible that the share may be gone; do we want to still allow the transfer record to be deleted by handling this exception with a warning?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    def delete(self, context, transfer_id):"},{"line_number":73,"context_line":"        \"\"\"Make the RPC call to delete a share transfer.\"\"\""},{"line_number":74,"context_line":"        transfer \u003d self.db.share_transfer_get(context, transfer_id)"},{"line_number":75,"context_line":"        share_ref \u003d self.db.share_get(context, transfer.resource_id)"},{"line_number":76,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":77,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":78,"context_line":"                                             share_instance,"}],"source_content_type":"text/x-python","patch_set":22,"id":"80179ea3_7e379199","line":75,"range":{"start_line":75,"start_character":0,"end_line":75,"end_character":68},"in_reply_to":"61652044_2a5960cf","updated":"2022-09-09 09:18:29.000000000","message":"i will check if share already exists, if not exists will not update_share_status,\nbut still delete the transfer.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b2222cb2826d105e5b998fee23c6694bc87440","unresolved":true,"context_lines":[{"line_number":73,"context_line":"        \"\"\"Make the RPC call to delete a share transfer.\"\"\""},{"line_number":74,"context_line":"        transfer \u003d self.db.share_transfer_get(context, transfer_id)"},{"line_number":75,"context_line":"        share_ref \u003d self.db.share_get(context, transfer.resource_id)"},{"line_number":76,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":77,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":78,"context_line":"                                             share_instance,"},{"line_number":79,"context_line":"                                             \"transfer.delete.start\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"92f347da_f9774e80","line":76,"range":{"start_line":76,"start_character":0,"end_line":76,"end_character":69},"updated":"2022-09-08 22:45:11.000000000","message":"won\u0027t share[\u0027instance\u0027] give you this..","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \"\"\"Make the RPC call to delete a share transfer.\"\"\""},{"line_number":74,"context_line":"        transfer \u003d self.db.share_transfer_get(context, transfer_id)"},{"line_number":75,"context_line":"        share_ref \u003d self.db.share_get(context, transfer.resource_id)"},{"line_number":76,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":77,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":78,"context_line":"                                             share_instance,"},{"line_number":79,"context_line":"                                             \"transfer.delete.start\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"5b8097a2_b5bd4f23","line":76,"range":{"start_line":76,"start_character":0,"end_line":76,"end_character":69},"in_reply_to":"92f347da_f9774e80","updated":"2022-09-09 09:18:29.000000000","message":"...yes, this will be more simple.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":74,"context_line":"        transfer \u003d self.db.share_transfer_get(context, transfer_id)"},{"line_number":75,"context_line":"        share_ref \u003d self.db.share_get(context, transfer.resource_id)"},{"line_number":76,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":77,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":78,"context_line":"                                             share_instance,"},{"line_number":79,"context_line":"                                             \"transfer.delete.start\")"},{"line_number":80,"context_line":"        if share_ref[\u0027status\u0027] !\u003d constants.STATUS_AWAITING_TRANSFER:"},{"line_number":81,"context_line":"            msg \u003d (_(\u0027Transfer %(transfer_id)s: share id %(share_id)s \u0027"},{"line_number":82,"context_line":"                     \u0027expected in awaiting-transfer state.\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"ee09bd72_890888b4","line":79,"range":{"start_line":77,"start_character":0,"end_line":79,"end_character":69},"updated":"2022-09-08 22:01:44.000000000","message":"do this just before line 86","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        transfer \u003d self.db.share_transfer_get(context, transfer_id)"},{"line_number":75,"context_line":"        share_ref \u003d self.db.share_get(context, transfer.resource_id)"},{"line_number":76,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":77,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":78,"context_line":"                                             share_instance,"},{"line_number":79,"context_line":"                                             \"transfer.delete.start\")"},{"line_number":80,"context_line":"        if share_ref[\u0027status\u0027] !\u003d constants.STATUS_AWAITING_TRANSFER:"},{"line_number":81,"context_line":"            msg \u003d (_(\u0027Transfer %(transfer_id)s: share id %(share_id)s \u0027"},{"line_number":82,"context_line":"                     \u0027expected in awaiting-transfer state.\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"af6721ff_91acb3b7","line":79,"range":{"start_line":77,"start_character":0,"end_line":79,"end_character":69},"in_reply_to":"ee09bd72_890888b4","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":79,"context_line":"                                             \"transfer.delete.start\")"},{"line_number":80,"context_line":"        if share_ref[\u0027status\u0027] !\u003d constants.STATUS_AWAITING_TRANSFER:"},{"line_number":81,"context_line":"            msg \u003d (_(\u0027Transfer %(transfer_id)s: share id %(share_id)s \u0027"},{"line_number":82,"context_line":"                     \u0027expected in awaiting-transfer state.\u0027)"},{"line_number":83,"context_line":"                   % {\u0027transfer_id\u0027: transfer_id, \u0027share_id\u0027: share_ref[\u0027id\u0027]})"},{"line_number":84,"context_line":"            LOG.error(msg)"},{"line_number":85,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":22,"id":"1f0f21e0_a2824bb7","line":82,"range":{"start_line":82,"start_character":34,"end_line":82,"end_character":51},"updated":"2022-09-08 22:01:44.000000000","message":"\"awaiting_transfer\"","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                                             \"transfer.delete.start\")"},{"line_number":80,"context_line":"        if share_ref[\u0027status\u0027] !\u003d constants.STATUS_AWAITING_TRANSFER:"},{"line_number":81,"context_line":"            msg \u003d (_(\u0027Transfer %(transfer_id)s: share id %(share_id)s \u0027"},{"line_number":82,"context_line":"                     \u0027expected in awaiting-transfer state.\u0027)"},{"line_number":83,"context_line":"                   % {\u0027transfer_id\u0027: transfer_id, \u0027share_id\u0027: share_ref[\u0027id\u0027]})"},{"line_number":84,"context_line":"            LOG.error(msg)"},{"line_number":85,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":22,"id":"701cfe3d_e25fd2c2","line":82,"range":{"start_line":82,"start_character":34,"end_line":82,"end_character":51},"in_reply_to":"1f0f21e0_a2824bb7","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":77,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":78,"context_line":"                                             share_instance,"},{"line_number":79,"context_line":"                                             \"transfer.delete.start\")"},{"line_number":80,"context_line":"        if share_ref[\u0027status\u0027] !\u003d constants.STATUS_AWAITING_TRANSFER:"},{"line_number":81,"context_line":"            msg \u003d (_(\u0027Transfer %(transfer_id)s: share id %(share_id)s \u0027"},{"line_number":82,"context_line":"                     \u0027expected in awaiting-transfer state.\u0027)"},{"line_number":83,"context_line":"                   % {\u0027transfer_id\u0027: transfer_id, \u0027share_id\u0027: share_ref[\u0027id\u0027]})"},{"line_number":84,"context_line":"            LOG.error(msg)"},{"line_number":85,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":86,"context_line":"        self.db.transfer_destroy(context, transfer_id)"},{"line_number":87,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":88,"context_line":"                                             share_instance,"}],"source_content_type":"text/x-python","patch_set":22,"id":"0781c3d7_4e4ce1a5","line":85,"range":{"start_line":80,"start_character":8,"end_line":85,"end_character":52},"updated":"2022-09-08 22:01:44.000000000","message":"You must hold parameters for lazy translation when logging:\n\n msg \u003d (_(\u0027Transfer %(transfer_id)s: share id %(share_id)s \u0027\n                     \u0027expected in awaiting-transfer state.\u0027))\n msg_payload \u003d {\u0027transfer_id\u0027: transfer_id, \u0027share_id\u0027: share_ref[\u0027id\u0027]})\n LOG.error(msg, msg_payload)\n raise exception.InvalidShare(reason\u003dmsg % msg_payload)","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":78,"context_line":"                                             share_instance,"},{"line_number":79,"context_line":"                                             \"transfer.delete.start\")"},{"line_number":80,"context_line":"        if share_ref[\u0027status\u0027] !\u003d constants.STATUS_AWAITING_TRANSFER:"},{"line_number":81,"context_line":"            msg \u003d (_(\u0027Transfer %(transfer_id)s: share id %(share_id)s \u0027"},{"line_number":82,"context_line":"                     \u0027expected in awaiting-transfer state.\u0027)"},{"line_number":83,"context_line":"                   % {\u0027transfer_id\u0027: transfer_id, \u0027share_id\u0027: share_ref[\u0027id\u0027]})"},{"line_number":84,"context_line":"            LOG.error(msg)"},{"line_number":85,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":86,"context_line":"        self.db.transfer_destroy(context, transfer_id)"},{"line_number":87,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":88,"context_line":"                                             share_instance,"}],"source_content_type":"text/x-python","patch_set":22,"id":"341672ab_de6e4fe5","line":85,"range":{"start_line":80,"start_character":8,"end_line":85,"end_character":52},"in_reply_to":"0781c3d7_4e4ce1a5","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b2222cb2826d105e5b998fee23c6694bc87440","unresolved":true,"context_lines":[{"line_number":93,"context_line":"        filters \u003d filters or {}"},{"line_number":94,"context_line":"        all_tenants \u003d strutils.bool_from_string(filters.pop(\u0027all_tenants\u0027,"},{"line_number":95,"context_line":"                                                            \u0027false\u0027))"},{"line_number":96,"context_line":"        if context.is_admin and all_tenants:"},{"line_number":97,"context_line":"            transfers \u003d self.db.transfer_get_all(context,"},{"line_number":98,"context_line":"                                                 limit\u003dlimit,"},{"line_number":99,"context_line":"                                                 sort_key\u003dsort_key,"}],"source_content_type":"text/x-python","patch_set":22,"id":"914b88fc_f1c20fdf","line":96,"range":{"start_line":96,"start_character":8,"end_line":96,"end_character":44},"updated":"2022-09-08 22:45:11.000000000","message":"shouldn\u0027t get_all be a policy of its own, i\u0027d really like us the umbrella \"context.is_admin\" policy lesser and lesser","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        filters \u003d filters or {}"},{"line_number":94,"context_line":"        all_tenants \u003d strutils.bool_from_string(filters.pop(\u0027all_tenants\u0027,"},{"line_number":95,"context_line":"                                                            \u0027false\u0027))"},{"line_number":96,"context_line":"        if context.is_admin and all_tenants:"},{"line_number":97,"context_line":"            transfers \u003d self.db.transfer_get_all(context,"},{"line_number":98,"context_line":"                                                 limit\u003dlimit,"},{"line_number":99,"context_line":"                                                 sort_key\u003dsort_key,"}],"source_content_type":"text/x-python","patch_set":22,"id":"54aff2db_317aee67","line":96,"range":{"start_line":96,"start_character":8,"end_line":96,"end_character":44},"in_reply_to":"58013d96_059b55cb","updated":"2022-09-19 02:43:31.000000000","message":"ok, will use RBAC instead of context.is_admin.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        filters \u003d filters or {}"},{"line_number":94,"context_line":"        all_tenants \u003d strutils.bool_from_string(filters.pop(\u0027all_tenants\u0027,"},{"line_number":95,"context_line":"                                                            \u0027false\u0027))"},{"line_number":96,"context_line":"        if context.is_admin and all_tenants:"},{"line_number":97,"context_line":"            transfers \u003d self.db.transfer_get_all(context,"},{"line_number":98,"context_line":"                                                 limit\u003dlimit,"},{"line_number":99,"context_line":"                                                 sort_key\u003dsort_key,"}],"source_content_type":"text/x-python","patch_set":22,"id":"e213655c_ac13264c","line":96,"range":{"start_line":96,"start_character":8,"end_line":96,"end_character":44},"in_reply_to":"914b88fc_f1c20fdf","updated":"2022-09-09 09:18:29.000000000","message":"in policy check_str\u003dbase.PROJECT_READER when get_all. \nthat means admin or no-admin user both can get transfer list.\nso here in order to make sure only admin can use all_tenants\ni have to user contenxt.is_admin.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        filters \u003d filters or {}"},{"line_number":94,"context_line":"        all_tenants \u003d strutils.bool_from_string(filters.pop(\u0027all_tenants\u0027,"},{"line_number":95,"context_line":"                                                            \u0027false\u0027))"},{"line_number":96,"context_line":"        if context.is_admin and all_tenants:"},{"line_number":97,"context_line":"            transfers \u003d self.db.transfer_get_all(context,"},{"line_number":98,"context_line":"                                                 limit\u003dlimit,"},{"line_number":99,"context_line":"                                                 sort_key\u003dsort_key,"}],"source_content_type":"text/x-python","patch_set":22,"id":"58013d96_059b55cb","line":96,"range":{"start_line":96,"start_character":8,"end_line":96,"end_character":44},"in_reply_to":"e213655c_ac13264c","updated":"2022-09-12 23:13:59.000000000","message":"context.is_admin is a catch-all policy; it creates a weird \"admin\" bucket for a large number of APIs making it very confusing. In the wallaby cycle, we decided to audit all the APIs that use \"context.is_admin\" and create individual RBAC policies for each of these... so since this is a new API, i think we should begin by creating a new policy for the use of \"all_tenants\"...","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":135,"context_line":"    def create(self, context, share_id, display_name):"},{"line_number":136,"context_line":"        \"\"\"Creates an entry in the transfers table.\"\"\""},{"line_number":137,"context_line":"        LOG.info(\"Generating transfer record for share %s\", share_id)"},{"line_number":138,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":139,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":140,"context_line":"        if share_ref[\u0027status\u0027] !\u003d \"available\":"},{"line_number":141,"context_line":"            raise exception.InvalidShare(reason\u003d_(\"status must be available\"))"}],"source_content_type":"text/x-python","patch_set":22,"id":"308aeb61_81602356","line":138,"range":{"start_line":138,"start_character":0,"end_line":138,"end_character":56},"updated":"2022-09-08 22:01:44.000000000","message":"Don\u0027t use this call - it doesn\u0027t check for shares in the project namespace. It allows anyone to retrieve any share! You should use share/api\u0027s get() call: https://github.com/openstack/manila/blob/b49605945a8e58ea33abfd559d9b87a6507519ab/manila/share/api.py#L1948-L1952\n\nIf it is weird to import a share api here, do this validation and pass the share object from the create method in v2/share_transfer.py file\n\n\nWhen you add thsi though, also handle NotFound or NotAuthorized errors and return them as HTTP 400 - BadRequest - \"invalid share ID\"","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    def create(self, context, share_id, display_name):"},{"line_number":136,"context_line":"        \"\"\"Creates an entry in the transfers table.\"\"\""},{"line_number":137,"context_line":"        LOG.info(\"Generating transfer record for share %s\", share_id)"},{"line_number":138,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":139,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":140,"context_line":"        if share_ref[\u0027status\u0027] !\u003d \"available\":"},{"line_number":141,"context_line":"            raise exception.InvalidShare(reason\u003d_(\"status must be available\"))"}],"source_content_type":"text/x-python","patch_set":22,"id":"bcaaad3b_ce6ca938","line":138,"range":{"start_line":138,"start_character":0,"end_line":138,"end_character":56},"in_reply_to":"308aeb61_81602356","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":140,"context_line":"        if share_ref[\u0027status\u0027] !\u003d \"available\":"},{"line_number":141,"context_line":"            raise exception.InvalidShare(reason\u003d_(\"status must be available\"))"},{"line_number":142,"context_line":"        if share_ref[\u0027share_network_id\u0027]:"},{"line_number":143,"context_line":"            raise exception.InvalidShare(reason\u003d_(\"Share with network not\""},{"line_number":144,"context_line":"                                                  \"support create transfer\"))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share(context, share_id)"},{"line_number":147,"context_line":"        for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":22,"id":"4a22c1bc_a1348f92","line":144,"range":{"start_line":143,"start_character":51,"end_line":144,"end_character":74},"updated":"2022-09-08 22:01:44.000000000","message":"Shares exported over share networks cannot be transferred.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if share_ref[\u0027status\u0027] !\u003d \"available\":"},{"line_number":141,"context_line":"            raise exception.InvalidShare(reason\u003d_(\"status must be available\"))"},{"line_number":142,"context_line":"        if share_ref[\u0027share_network_id\u0027]:"},{"line_number":143,"context_line":"            raise exception.InvalidShare(reason\u003d_(\"Share with network not\""},{"line_number":144,"context_line":"                                                  \"support create transfer\"))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share(context, share_id)"},{"line_number":147,"context_line":"        for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":22,"id":"073023a6_c272bbe4","line":144,"range":{"start_line":143,"start_character":51,"end_line":144,"end_character":74},"in_reply_to":"4a22c1bc_a1348f92","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":142,"context_line":"        if share_ref[\u0027share_network_id\u0027]:"},{"line_number":143,"context_line":"            raise exception.InvalidShare(reason\u003d_(\"Share with network not\""},{"line_number":144,"context_line":"                                                  \"support create transfer\"))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share(context, share_id)"},{"line_number":147,"context_line":"        for snapshot in snapshots:"},{"line_number":148,"context_line":"            if snapshot[\u0027status\u0027] !\u003d \"available\":"}],"source_content_type":"text/x-python","patch_set":22,"id":"cacf20c0_9718a2a9","line":145,"updated":"2022-09-08 22:01:44.000000000","message":"we should also be disallowing transferring shares within groups?\n\nhttps://specs.openstack.org/openstack/manila-specs/specs/yoga/share-transfer-between-project.html#proposed-change","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        if share_ref[\u0027share_network_id\u0027]:"},{"line_number":143,"context_line":"            raise exception.InvalidShare(reason\u003d_(\"Share with network not\""},{"line_number":144,"context_line":"                                                  \"support create transfer\"))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share(context, share_id)"},{"line_number":147,"context_line":"        for snapshot in snapshots:"},{"line_number":148,"context_line":"            if snapshot[\u0027status\u0027] !\u003d \"available\":"}],"source_content_type":"text/x-python","patch_set":22,"id":"7cec4b5d_c517a088","line":145,"in_reply_to":"cacf20c0_9718a2a9","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":169,"context_line":"        try:"},{"line_number":170,"context_line":"            transfer \u003d self.db.transfer_create(context, transfer_rec)"},{"line_number":171,"context_line":"        except Exception:"},{"line_number":172,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":173,"context_line":"                LOG.error(\"Failed to create transfer record for %s\", share_id)"},{"line_number":174,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":175,"context_line":"                                             share_instance,"},{"line_number":176,"context_line":"                                             \"transfer.create.end\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"7e7d3727_3d93db6f","line":173,"range":{"start_line":172,"start_character":54,"end_line":173,"end_character":78},"updated":"2022-09-08 22:01:44.000000000","message":"do we want to roll-back the share status here? in case the transfer record failed to be created but the share status was already updated?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        try:"},{"line_number":170,"context_line":"            transfer \u003d self.db.transfer_create(context, transfer_rec)"},{"line_number":171,"context_line":"        except Exception:"},{"line_number":172,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":173,"context_line":"                LOG.error(\"Failed to create transfer record for %s\", share_id)"},{"line_number":174,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":175,"context_line":"                                             share_instance,"},{"line_number":176,"context_line":"                                             \"transfer.create.end\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"8030810a_824bc134","line":173,"range":{"start_line":172,"start_character":54,"end_line":173,"end_character":78},"in_reply_to":"7e7d3727_3d93db6f","updated":"2022-09-09 09:18:29.000000000","message":"in db layer def transfer_create():\n\nfirst to create transfer record and then update share status,\nif failed to create transfer record, will not update share status,\nso here no need to roll back.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b2222cb2826d105e5b998fee23c6694bc87440","unresolved":true,"context_lines":[{"line_number":242,"context_line":"            context, share_type_id, expected_fields\u003d[\u0027projects\u0027])"},{"line_number":243,"context_line":"        if not share_type[\u0027is_public\u0027]:"},{"line_number":244,"context_line":"            if context.project_id not in share_type[\u0027projects\u0027]:"},{"line_number":245,"context_line":"                msg \u003d _(\"Share type %(st)s of share %(s)s is not public, \""},{"line_number":246,"context_line":"                        \"and current project can not access the share \""},{"line_number":247,"context_line":"                        \"type \") % {\u0027st\u0027: share_type_id, \u0027s\u0027: share_id}"},{"line_number":248,"context_line":"                LOG.error(msg)"},{"line_number":249,"context_line":"                raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"b4b89833_fc9b1b04","line":247,"range":{"start_line":245,"start_character":16,"end_line":247,"end_character":71},"updated":"2022-09-08 22:45:11.000000000","message":"don\u0027t print the share type here.. it will be disclosing details to users that don\u0027t need to have access..","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            context, share_type_id, expected_fields\u003d[\u0027projects\u0027])"},{"line_number":243,"context_line":"        if not share_type[\u0027is_public\u0027]:"},{"line_number":244,"context_line":"            if context.project_id not in share_type[\u0027projects\u0027]:"},{"line_number":245,"context_line":"                msg \u003d _(\"Share type %(st)s of share %(s)s is not public, \""},{"line_number":246,"context_line":"                        \"and current project can not access the share \""},{"line_number":247,"context_line":"                        \"type \") % {\u0027st\u0027: share_type_id, \u0027s\u0027: share_id}"},{"line_number":248,"context_line":"                LOG.error(msg)"},{"line_number":249,"context_line":"                raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"687911db_426d39a5","line":247,"range":{"start_line":245,"start_character":16,"end_line":247,"end_character":71},"in_reply_to":"b4b89833_fc9b1b04","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b2222cb2826d105e5b998fee23c6694bc87440","unresolved":true,"context_lines":[{"line_number":254,"context_line":"            # We don\u0027t accept for replicas that are busy in some operation"},{"line_number":255,"context_line":"            if replica[\u0027status\u0027] in constants.TRANSITIONAL_STATUSES:"},{"line_number":256,"context_line":"                msg \u003d (_(\u0027Transfer %(transfer_id)s: share replica \u0027"},{"line_number":257,"context_line":"                         \u0027%(replica_id)s of %(share_id)s are busy \u0027"},{"line_number":258,"context_line":"                         \u0027in some operation.\u0027)"},{"line_number":259,"context_line":"                       % {\u0027transfer_id\u0027: transfer_id,"},{"line_number":260,"context_line":"                          \u0027replica_id\u0027: replica[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":22,"id":"cb0d1363_1f890e8a","line":257,"range":{"start_line":257,"start_character":57,"end_line":257,"end_character":60},"updated":"2022-09-08 22:45:11.000000000","message":"is","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":254,"context_line":"            # We don\u0027t accept for replicas that are busy in some operation"},{"line_number":255,"context_line":"            if replica[\u0027status\u0027] in constants.TRANSITIONAL_STATUSES:"},{"line_number":256,"context_line":"                msg \u003d (_(\u0027Transfer %(transfer_id)s: share replica \u0027"},{"line_number":257,"context_line":"                         \u0027%(replica_id)s of %(share_id)s are busy \u0027"},{"line_number":258,"context_line":"                         \u0027in some operation.\u0027)"},{"line_number":259,"context_line":"                       % {\u0027transfer_id\u0027: transfer_id,"},{"line_number":260,"context_line":"                          \u0027replica_id\u0027: replica[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":22,"id":"06b43082_08ef5817","line":257,"range":{"start_line":257,"start_character":57,"end_line":257,"end_character":60},"in_reply_to":"cb0d1363_1f890e8a","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d838d7dc22bec682ff7dd47b725146b7e759aafb","unresolved":true,"context_lines":[{"line_number":326,"context_line":"            raise exception.InvalidAuthKey(reason\u003dmsg)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        share_id \u003d transfer[\u0027resource_id\u0027]"},{"line_number":329,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":330,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":331,"context_line":"        if share_ref[\u0027status\u0027] !\u003d constants.STATUS_AWAITING_TRANSFER:"},{"line_number":332,"context_line":"            msg \u003d (_(\u0027Transfer %(transfer_id)s: share id %(share_id)s \u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"6a6222cc_d805205d","line":329,"range":{"start_line":329,"start_character":8,"end_line":329,"end_character":56},"updated":"2022-09-08 22:01:44.000000000","message":"This may be an invalid share; we must handle a NotFound error here and respond with 400 - InvalidShare","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":326,"context_line":"            raise exception.InvalidAuthKey(reason\u003dmsg)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        share_id \u003d transfer[\u0027resource_id\u0027]"},{"line_number":329,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":330,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":331,"context_line":"        if share_ref[\u0027status\u0027] !\u003d constants.STATUS_AWAITING_TRANSFER:"},{"line_number":332,"context_line":"            msg \u003d (_(\u0027Transfer %(transfer_id)s: share id %(share_id)s \u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"1f2a6461_80093237","line":329,"range":{"start_line":329,"start_character":8,"end_line":329,"end_character":56},"in_reply_to":"6a6222cc_d805205d","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b2222cb2826d105e5b998fee23c6694bc87440","unresolved":true,"context_lines":[{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        share_id \u003d transfer[\u0027resource_id\u0027]"},{"line_number":329,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":330,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":331,"context_line":"        if share_ref[\u0027status\u0027] !\u003d constants.STATUS_AWAITING_TRANSFER:"},{"line_number":332,"context_line":"            msg \u003d (_(\u0027Transfer %(transfer_id)s: share id %(share_id)s \u0027"},{"line_number":333,"context_line":"                     \u0027expected in awaiting-transfer state.\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"7e8b8b72_0390f04b","line":330,"range":{"start_line":330,"start_character":7,"end_line":330,"end_character":69},"updated":"2022-09-08 22:45:11.000000000","message":"won\u0027t share.instance give you this - no need for another round trip to the database..","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        share_id \u003d transfer[\u0027resource_id\u0027]"},{"line_number":329,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":330,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":331,"context_line":"        if share_ref[\u0027status\u0027] !\u003d constants.STATUS_AWAITING_TRANSFER:"},{"line_number":332,"context_line":"            msg \u003d (_(\u0027Transfer %(transfer_id)s: share id %(share_id)s \u0027"},{"line_number":333,"context_line":"                     \u0027expected in awaiting-transfer state.\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"55b48c39_e6a530f0","line":330,"range":{"start_line":330,"start_character":7,"end_line":330,"end_character":69},"in_reply_to":"7e8b8b72_0390f04b","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b2222cb2826d105e5b998fee23c6694bc87440","unresolved":true,"context_lines":[{"line_number":340,"context_line":"        if share_type_id:"},{"line_number":341,"context_line":"            self._check_share_type_access(context, share_type_id, share_id)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        # check per share quota limit"},{"line_number":344,"context_line":"        self.share_api.check_is_share_size_within_per_share_quota_limit("},{"line_number":345,"context_line":"            context, share_ref_size)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        # check share replicas quota and status, if replicas exists."},{"line_number":348,"context_line":"        replicas \u003d self.db.share_replicas_get_all_by_share(context, share_id)"},{"line_number":349,"context_line":"        supports_replication \u003d len(replicas) \u003e 0"},{"line_number":350,"context_line":"        if supports_replication:"},{"line_number":351,"context_line":"            self._check_replicas_status(replicas, transfer_id, share_id)"},{"line_number":352,"context_line":"            share_replica_size \u003d len(replicas) * share_ref_size"},{"line_number":353,"context_line":"            replication_reserve_opts \u003d {"},{"line_number":354,"context_line":"                \u0027share_replicas\u0027: len(replicas),"},{"line_number":355,"context_line":"                \u0027replica_gigabytes\u0027: share_replica_size}"},{"line_number":356,"context_line":"            donor_replication_reserve_opts \u003d {"},{"line_number":357,"context_line":"                \u0027share_replicas\u0027: -len(replicas),"},{"line_number":358,"context_line":"                \u0027replica_gigabytes\u0027: -share_replica_size}"},{"line_number":359,"context_line":"        else:"},{"line_number":360,"context_line":"            replication_reserve_opts \u003d donor_replication_reserve_opts \u003d {}"},{"line_number":361,"context_line":"            share_replica_size \u003d 0"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"        # check accept transferred project quotas"},{"line_number":364,"context_line":"        reservations \u003d self._check_transferred_project_quota("},{"line_number":365,"context_line":"            context, share_ref_size, supports_replication,"},{"line_number":366,"context_line":"            share_replica_size, replication_reserve_opts)"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        # check donor project quotas"},{"line_number":369,"context_line":"        donor_id \u003d share_ref[\u0027project_id\u0027]"},{"line_number":370,"context_line":"        donor_reservations \u003d self._check_donor_project_quota("},{"line_number":371,"context_line":"            context, donor_id, share_ref_size, supports_replication,"},{"line_number":372,"context_line":"            donor_replication_reserve_opts, transfer_id)"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        snap_res \u003d None"},{"line_number":375,"context_line":"        snap_donor_res \u003d None"},{"line_number":376,"context_line":"        accept_snapshots \u003d False"},{"line_number":377,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share("},{"line_number":378,"context_line":"            context.elevated(), share_id)"},{"line_number":379,"context_line":"        if snapshots:"},{"line_number":380,"context_line":"            self._check_snapshot_status(snapshots, transfer_id)"},{"line_number":381,"context_line":"            accept_snapshots \u003d True"},{"line_number":382,"context_line":"            snap_res, snap_donor_res \u003d self._handle_snapshot_quota("},{"line_number":383,"context_line":"                context, snapshots, share_ref[\u0027project_id\u0027])"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":386,"context_line":"                                             share_instance,"}],"source_content_type":"text/x-python","patch_set":22,"id":"22ac8754_73e715e7","line":383,"range":{"start_line":343,"start_character":8,"end_line":383,"end_character":60},"updated":"2022-09-08 22:45:11.000000000","message":"this could be more readable if we extract this method into a different method and try to make one reservation for all of the quotas we\u0027re consuming for each project (donor/receiver)?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":true,"context_lines":[{"line_number":340,"context_line":"        if share_type_id:"},{"line_number":341,"context_line":"            self._check_share_type_access(context, share_type_id, share_id)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        # check per share quota limit"},{"line_number":344,"context_line":"        self.share_api.check_is_share_size_within_per_share_quota_limit("},{"line_number":345,"context_line":"            context, share_ref_size)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"        # check share replicas quota and status, if replicas exists."},{"line_number":348,"context_line":"        replicas \u003d self.db.share_replicas_get_all_by_share(context, share_id)"},{"line_number":349,"context_line":"        supports_replication \u003d len(replicas) \u003e 0"},{"line_number":350,"context_line":"        if supports_replication:"},{"line_number":351,"context_line":"            self._check_replicas_status(replicas, transfer_id, share_id)"},{"line_number":352,"context_line":"            share_replica_size \u003d len(replicas) * share_ref_size"},{"line_number":353,"context_line":"            replication_reserve_opts \u003d {"},{"line_number":354,"context_line":"                \u0027share_replicas\u0027: len(replicas),"},{"line_number":355,"context_line":"                \u0027replica_gigabytes\u0027: share_replica_size}"},{"line_number":356,"context_line":"            donor_replication_reserve_opts \u003d {"},{"line_number":357,"context_line":"                \u0027share_replicas\u0027: -len(replicas),"},{"line_number":358,"context_line":"                \u0027replica_gigabytes\u0027: -share_replica_size}"},{"line_number":359,"context_line":"        else:"},{"line_number":360,"context_line":"            replication_reserve_opts \u003d donor_replication_reserve_opts \u003d {}"},{"line_number":361,"context_line":"            share_replica_size \u003d 0"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"        # check accept transferred project quotas"},{"line_number":364,"context_line":"        reservations \u003d self._check_transferred_project_quota("},{"line_number":365,"context_line":"            context, share_ref_size, supports_replication,"},{"line_number":366,"context_line":"            share_replica_size, replication_reserve_opts)"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        # check donor project quotas"},{"line_number":369,"context_line":"        donor_id \u003d share_ref[\u0027project_id\u0027]"},{"line_number":370,"context_line":"        donor_reservations \u003d self._check_donor_project_quota("},{"line_number":371,"context_line":"            context, donor_id, share_ref_size, supports_replication,"},{"line_number":372,"context_line":"            donor_replication_reserve_opts, transfer_id)"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        snap_res \u003d None"},{"line_number":375,"context_line":"        snap_donor_res \u003d None"},{"line_number":376,"context_line":"        accept_snapshots \u003d False"},{"line_number":377,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share("},{"line_number":378,"context_line":"            context.elevated(), share_id)"},{"line_number":379,"context_line":"        if snapshots:"},{"line_number":380,"context_line":"            self._check_snapshot_status(snapshots, transfer_id)"},{"line_number":381,"context_line":"            accept_snapshots \u003d True"},{"line_number":382,"context_line":"            snap_res, snap_donor_res \u003d self._handle_snapshot_quota("},{"line_number":383,"context_line":"                context, snapshots, share_ref[\u0027project_id\u0027])"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":386,"context_line":"                                             share_instance,"}],"source_content_type":"text/x-python","patch_set":22,"id":"9213fdb5_ce92ce95","line":383,"range":{"start_line":343,"start_character":8,"end_line":383,"end_character":60},"in_reply_to":"22ac8754_73e715e7","updated":"2022-09-09 09:18:29.000000000","message":"..i am not sure how to do it?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b2222cb2826d105e5b998fee23c6694bc87440","unresolved":true,"context_lines":[{"line_number":391,"context_line":"                                           context.user_id,"},{"line_number":392,"context_line":"                                           context.project_id,"},{"line_number":393,"context_line":"                                           clear_rules\u003dclear_rules)"},{"line_number":394,"context_line":"            # Transfer ownership of the share now, must use an elevated"},{"line_number":395,"context_line":"            # context."},{"line_number":396,"context_line":"            self.db.transfer_accept(context.elevated(),"},{"line_number":397,"context_line":"                                    transfer_id,"},{"line_number":398,"context_line":"                                    context.user_id,"},{"line_number":399,"context_line":"                                    context.project_id,"},{"line_number":400,"context_line":"                                    accept_snapshots\u003daccept_snapshots)"},{"line_number":401,"context_line":"            if reservations:"},{"line_number":402,"context_line":"                QUOTAS.commit(context, reservations)"},{"line_number":403,"context_line":"            if snap_res:"},{"line_number":404,"context_line":"                QUOTAS.commit(context, snap_res)"},{"line_number":405,"context_line":"            if donor_reservations:"},{"line_number":406,"context_line":"                QUOTAS.commit(context, donor_reservations, project_id\u003ddonor_id)"},{"line_number":407,"context_line":"            if snap_donor_res:"},{"line_number":408,"context_line":"                QUOTAS.commit(context, snap_donor_res, project_id\u003ddonor_id)"},{"line_number":409,"context_line":"            LOG.info(\"share %s has been transferred.\", share_id)"},{"line_number":410,"context_line":"        except Exception:"},{"line_number":411,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":412,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"6144933f_969fafa5","line":409,"range":{"start_line":394,"start_character":12,"end_line":409,"end_character":64},"updated":"2022-09-08 22:45:11.000000000","message":"This part should be happening in the share manager after the driver\u0027s finished the transfer","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":true,"context_lines":[{"line_number":391,"context_line":"                                           context.user_id,"},{"line_number":392,"context_line":"                                           context.project_id,"},{"line_number":393,"context_line":"                                           clear_rules\u003dclear_rules)"},{"line_number":394,"context_line":"            # Transfer ownership of the share now, must use an elevated"},{"line_number":395,"context_line":"            # context."},{"line_number":396,"context_line":"            self.db.transfer_accept(context.elevated(),"},{"line_number":397,"context_line":"                                    transfer_id,"},{"line_number":398,"context_line":"                                    context.user_id,"},{"line_number":399,"context_line":"                                    context.project_id,"},{"line_number":400,"context_line":"                                    accept_snapshots\u003daccept_snapshots)"},{"line_number":401,"context_line":"            if reservations:"},{"line_number":402,"context_line":"                QUOTAS.commit(context, reservations)"},{"line_number":403,"context_line":"            if snap_res:"},{"line_number":404,"context_line":"                QUOTAS.commit(context, snap_res)"},{"line_number":405,"context_line":"            if donor_reservations:"},{"line_number":406,"context_line":"                QUOTAS.commit(context, donor_reservations, project_id\u003ddonor_id)"},{"line_number":407,"context_line":"            if snap_donor_res:"},{"line_number":408,"context_line":"                QUOTAS.commit(context, snap_donor_res, project_id\u003ddonor_id)"},{"line_number":409,"context_line":"            LOG.info(\"share %s has been transferred.\", share_id)"},{"line_number":410,"context_line":"        except Exception:"},{"line_number":411,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":412,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"9b7a66af_f078d3c5","line":409,"range":{"start_line":394,"start_character":12,"end_line":409,"end_character":64},"in_reply_to":"19c70f19_70f270e2","updated":"2022-09-19 02:43:31.000000000","message":"in manila/share/rpcapi.py\ndef transfer_accept():\n....\ncall_context.call(ctxt, \u0027transfer_accept\u0027, **msg_args)\n\nwe can see transfer_accept is a synchronous call, not an asynchronous call.\nso here self.db.tranfer_accept() will wait share_api.transfer_accept success. Otherwise it will not be executed if synchronous failed or timeout.\nso do we have to move this to manager layer? that is my opinion, how do you think?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                                           context.user_id,"},{"line_number":392,"context_line":"                                           context.project_id,"},{"line_number":393,"context_line":"                                           clear_rules\u003dclear_rules)"},{"line_number":394,"context_line":"            # Transfer ownership of the share now, must use an elevated"},{"line_number":395,"context_line":"            # context."},{"line_number":396,"context_line":"            self.db.transfer_accept(context.elevated(),"},{"line_number":397,"context_line":"                                    transfer_id,"},{"line_number":398,"context_line":"                                    context.user_id,"},{"line_number":399,"context_line":"                                    context.project_id,"},{"line_number":400,"context_line":"                                    accept_snapshots\u003daccept_snapshots)"},{"line_number":401,"context_line":"            if reservations:"},{"line_number":402,"context_line":"                QUOTAS.commit(context, reservations)"},{"line_number":403,"context_line":"            if snap_res:"},{"line_number":404,"context_line":"                QUOTAS.commit(context, snap_res)"},{"line_number":405,"context_line":"            if donor_reservations:"},{"line_number":406,"context_line":"                QUOTAS.commit(context, donor_reservations, project_id\u003ddonor_id)"},{"line_number":407,"context_line":"            if snap_donor_res:"},{"line_number":408,"context_line":"                QUOTAS.commit(context, snap_donor_res, project_id\u003ddonor_id)"},{"line_number":409,"context_line":"            LOG.info(\"share %s has been transferred.\", share_id)"},{"line_number":410,"context_line":"        except Exception:"},{"line_number":411,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":412,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"19c70f19_70f270e2","line":409,"range":{"start_line":394,"start_character":12,"end_line":409,"end_character":64},"in_reply_to":"460af898_36860c2b","updated":"2022-09-12 23:13:59.000000000","message":"but the transfer isn\u0027t complete until the share manager\u0027s \"transfer_accept\" method has run.. so this is incorrect?\n\nI mean, you initiate a RPC call to the share manager and return here, and complete all the quota adjustments and finish the transfer - but what if there is an asynchronous failure in the share manager regarding the transfer?","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                                           context.user_id,"},{"line_number":392,"context_line":"                                           context.project_id,"},{"line_number":393,"context_line":"                                           clear_rules\u003dclear_rules)"},{"line_number":394,"context_line":"            # Transfer ownership of the share now, must use an elevated"},{"line_number":395,"context_line":"            # context."},{"line_number":396,"context_line":"            self.db.transfer_accept(context.elevated(),"},{"line_number":397,"context_line":"                                    transfer_id,"},{"line_number":398,"context_line":"                                    context.user_id,"},{"line_number":399,"context_line":"                                    context.project_id,"},{"line_number":400,"context_line":"                                    accept_snapshots\u003daccept_snapshots)"},{"line_number":401,"context_line":"            if reservations:"},{"line_number":402,"context_line":"                QUOTAS.commit(context, reservations)"},{"line_number":403,"context_line":"            if snap_res:"},{"line_number":404,"context_line":"                QUOTAS.commit(context, snap_res)"},{"line_number":405,"context_line":"            if donor_reservations:"},{"line_number":406,"context_line":"                QUOTAS.commit(context, donor_reservations, project_id\u003ddonor_id)"},{"line_number":407,"context_line":"            if snap_donor_res:"},{"line_number":408,"context_line":"                QUOTAS.commit(context, snap_donor_res, project_id\u003ddonor_id)"},{"line_number":409,"context_line":"            LOG.info(\"share %s has been transferred.\", share_id)"},{"line_number":410,"context_line":"        except Exception:"},{"line_number":411,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":412,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"460af898_36860c2b","line":409,"range":{"start_line":394,"start_character":12,"end_line":409,"end_character":64},"in_reply_to":"6144933f_969fafa5","updated":"2022-09-09 09:18:29.000000000","message":"if put it to manager layer, reservations, snap_res, donor_reservations, snap_donor_res all need to transfer to manager layer. This is going to get messy.\ni think this can works fine.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b2222cb2826d105e5b998fee23c6694bc87440","unresolved":true,"context_lines":[{"line_number":409,"context_line":"            LOG.info(\"share %s has been transferred.\", share_id)"},{"line_number":410,"context_line":"        except Exception:"},{"line_number":411,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":412,"context_line":"                try:"},{"line_number":413,"context_line":"                    # storage try to rollback"},{"line_number":414,"context_line":"                    self.share_api.transfer_accept(context,"},{"line_number":415,"context_line":"                                                   share_ref,"},{"line_number":416,"context_line":"                                                   share_ref[\u0027user_id\u0027],"},{"line_number":417,"context_line":"                                                   share_ref[\u0027project_id\u0027])"},{"line_number":418,"context_line":"                    # db try to rollback"},{"line_number":419,"context_line":"                    self.db.transfer_accept_rollback("},{"line_number":420,"context_line":"                        context.elevated(), transfer_id,"},{"line_number":421,"context_line":"                        share_ref[\u0027user_id\u0027], share_ref[\u0027project_id\u0027],"},{"line_number":422,"context_line":"                        rollback_snap\u003daccept_snapshots)"},{"line_number":423,"context_line":"                finally:"},{"line_number":424,"context_line":"                    if reservations:"},{"line_number":425,"context_line":"                        QUOTAS.rollback(context, reservations)"},{"line_number":426,"context_line":"                    if snap_res:"},{"line_number":427,"context_line":"                        QUOTAS.rollback(context, snap_res)"},{"line_number":428,"context_line":"                    if donor_reservations:"},{"line_number":429,"context_line":"                        QUOTAS.rollback(context, donor_reservations,"},{"line_number":430,"context_line":"                                        project_id\u003ddonor_id)"},{"line_number":431,"context_line":"                    if snap_donor_res:"},{"line_number":432,"context_line":"                        QUOTAS.rollback(context, snap_donor_res,"},{"line_number":433,"context_line":"                                        project_id\u003ddonor_id)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":436,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"}],"source_content_type":"text/x-python","patch_set":22,"id":"ec9653f9_6a7f785c","line":433,"range":{"start_line":412,"start_character":16,"end_line":433,"end_character":60},"updated":"2022-09-08 22:45:11.000000000","message":"same as above","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":true,"context_lines":[{"line_number":409,"context_line":"            LOG.info(\"share %s has been transferred.\", share_id)"},{"line_number":410,"context_line":"        except Exception:"},{"line_number":411,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":412,"context_line":"                try:"},{"line_number":413,"context_line":"                    # storage try to rollback"},{"line_number":414,"context_line":"                    self.share_api.transfer_accept(context,"},{"line_number":415,"context_line":"                                                   share_ref,"},{"line_number":416,"context_line":"                                                   share_ref[\u0027user_id\u0027],"},{"line_number":417,"context_line":"                                                   share_ref[\u0027project_id\u0027])"},{"line_number":418,"context_line":"                    # db try to rollback"},{"line_number":419,"context_line":"                    self.db.transfer_accept_rollback("},{"line_number":420,"context_line":"                        context.elevated(), transfer_id,"},{"line_number":421,"context_line":"                        share_ref[\u0027user_id\u0027], share_ref[\u0027project_id\u0027],"},{"line_number":422,"context_line":"                        rollback_snap\u003daccept_snapshots)"},{"line_number":423,"context_line":"                finally:"},{"line_number":424,"context_line":"                    if reservations:"},{"line_number":425,"context_line":"                        QUOTAS.rollback(context, reservations)"},{"line_number":426,"context_line":"                    if snap_res:"},{"line_number":427,"context_line":"                        QUOTAS.rollback(context, snap_res)"},{"line_number":428,"context_line":"                    if donor_reservations:"},{"line_number":429,"context_line":"                        QUOTAS.rollback(context, donor_reservations,"},{"line_number":430,"context_line":"                                        project_id\u003ddonor_id)"},{"line_number":431,"context_line":"                    if snap_donor_res:"},{"line_number":432,"context_line":"                        QUOTAS.rollback(context, snap_donor_res,"},{"line_number":433,"context_line":"                                        project_id\u003ddonor_id)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":436,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"}],"source_content_type":"text/x-python","patch_set":22,"id":"852bf73f_b4967b59","line":433,"range":{"start_line":412,"start_character":16,"end_line":433,"end_character":60},"in_reply_to":"e9d73dad_31004d2b","updated":"2022-09-19 02:43:31.000000000","message":"same above, We can talk about it in more depth.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":true,"context_lines":[{"line_number":409,"context_line":"            LOG.info(\"share %s has been transferred.\", share_id)"},{"line_number":410,"context_line":"        except Exception:"},{"line_number":411,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":412,"context_line":"                try:"},{"line_number":413,"context_line":"                    # storage try to rollback"},{"line_number":414,"context_line":"                    self.share_api.transfer_accept(context,"},{"line_number":415,"context_line":"                                                   share_ref,"},{"line_number":416,"context_line":"                                                   share_ref[\u0027user_id\u0027],"},{"line_number":417,"context_line":"                                                   share_ref[\u0027project_id\u0027])"},{"line_number":418,"context_line":"                    # db try to rollback"},{"line_number":419,"context_line":"                    self.db.transfer_accept_rollback("},{"line_number":420,"context_line":"                        context.elevated(), transfer_id,"},{"line_number":421,"context_line":"                        share_ref[\u0027user_id\u0027], share_ref[\u0027project_id\u0027],"},{"line_number":422,"context_line":"                        rollback_snap\u003daccept_snapshots)"},{"line_number":423,"context_line":"                finally:"},{"line_number":424,"context_line":"                    if reservations:"},{"line_number":425,"context_line":"                        QUOTAS.rollback(context, reservations)"},{"line_number":426,"context_line":"                    if snap_res:"},{"line_number":427,"context_line":"                        QUOTAS.rollback(context, snap_res)"},{"line_number":428,"context_line":"                    if donor_reservations:"},{"line_number":429,"context_line":"                        QUOTAS.rollback(context, donor_reservations,"},{"line_number":430,"context_line":"                                        project_id\u003ddonor_id)"},{"line_number":431,"context_line":"                    if snap_donor_res:"},{"line_number":432,"context_line":"                        QUOTAS.rollback(context, snap_donor_res,"},{"line_number":433,"context_line":"                                        project_id\u003ddonor_id)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":436,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"}],"source_content_type":"text/x-python","patch_set":22,"id":"ed1df103_f64fad28","line":433,"range":{"start_line":412,"start_character":16,"end_line":433,"end_character":60},"in_reply_to":"ec9653f9_6a7f785c","updated":"2022-09-09 09:18:29.000000000","message":"Follow-up as an optimization point, there is no time today. 😞","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":409,"context_line":"            LOG.info(\"share %s has been transferred.\", share_id)"},{"line_number":410,"context_line":"        except Exception:"},{"line_number":411,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":412,"context_line":"                try:"},{"line_number":413,"context_line":"                    # storage try to rollback"},{"line_number":414,"context_line":"                    self.share_api.transfer_accept(context,"},{"line_number":415,"context_line":"                                                   share_ref,"},{"line_number":416,"context_line":"                                                   share_ref[\u0027user_id\u0027],"},{"line_number":417,"context_line":"                                                   share_ref[\u0027project_id\u0027])"},{"line_number":418,"context_line":"                    # db try to rollback"},{"line_number":419,"context_line":"                    self.db.transfer_accept_rollback("},{"line_number":420,"context_line":"                        context.elevated(), transfer_id,"},{"line_number":421,"context_line":"                        share_ref[\u0027user_id\u0027], share_ref[\u0027project_id\u0027],"},{"line_number":422,"context_line":"                        rollback_snap\u003daccept_snapshots)"},{"line_number":423,"context_line":"                finally:"},{"line_number":424,"context_line":"                    if reservations:"},{"line_number":425,"context_line":"                        QUOTAS.rollback(context, reservations)"},{"line_number":426,"context_line":"                    if snap_res:"},{"line_number":427,"context_line":"                        QUOTAS.rollback(context, snap_res)"},{"line_number":428,"context_line":"                    if donor_reservations:"},{"line_number":429,"context_line":"                        QUOTAS.rollback(context, donor_reservations,"},{"line_number":430,"context_line":"                                        project_id\u003ddonor_id)"},{"line_number":431,"context_line":"                    if snap_donor_res:"},{"line_number":432,"context_line":"                        QUOTAS.rollback(context, snap_donor_res,"},{"line_number":433,"context_line":"                                        project_id\u003ddonor_id)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":436,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"}],"source_content_type":"text/x-python","patch_set":22,"id":"e9d73dad_31004d2b","line":433,"range":{"start_line":412,"start_character":16,"end_line":433,"end_character":60},"in_reply_to":"ed1df103_f64fad28","updated":"2022-09-12 23:13:59.000000000","message":"I totally agree that this is a late breaking comment - i\u0027m sorry about that. I think we should take some time and get this right. Thank you very much for being patient with the reviews and making all the changes requested!","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b2222cb2826d105e5b998fee23c6694bc87440","unresolved":true,"context_lines":[{"line_number":432,"context_line":"                        QUOTAS.rollback(context, snap_donor_res,"},{"line_number":433,"context_line":"                                        project_id\u003ddonor_id)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":436,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":437,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":438,"context_line":"                                             share_instance,"},{"line_number":439,"context_line":"                                             \"transfer.accept.end\")"},{"line_number":440,"context_line":"        return {\u0027id\u0027: transfer_id,"},{"line_number":441,"context_line":"                \u0027display_name\u0027: transfer[\u0027display_name\u0027],"},{"line_number":442,"context_line":"                \u0027resource_type\u0027: constants.SHARE_RESOURCE_TYPE,"}],"source_content_type":"text/x-python","patch_set":22,"id":"f44bc17f_f94150ee","line":439,"range":{"start_line":435,"start_character":8,"end_line":439,"end_character":67},"updated":"2022-09-08 22:45:11.000000000","message":"same as above","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":true,"context_lines":[{"line_number":432,"context_line":"                        QUOTAS.rollback(context, snap_donor_res,"},{"line_number":433,"context_line":"                                        project_id\u003ddonor_id)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"        share_ref \u003d self.db.share_get(context, share_id)"},{"line_number":436,"context_line":"        share_instance \u003d self._get_share_instance(context, share_ref)"},{"line_number":437,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":438,"context_line":"                                             share_instance,"},{"line_number":439,"context_line":"                                             \"transfer.accept.end\")"},{"line_number":440,"context_line":"        return {\u0027id\u0027: transfer_id,"},{"line_number":441,"context_line":"                \u0027display_name\u0027: transfer[\u0027display_name\u0027],"},{"line_number":442,"context_line":"                \u0027resource_type\u0027: constants.SHARE_RESOURCE_TYPE,"}],"source_content_type":"text/x-python","patch_set":22,"id":"d9f766e8_c059d1dc","line":439,"range":{"start_line":435,"start_character":8,"end_line":439,"end_character":67},"in_reply_to":"f44bc17f_f94150ee","updated":"2022-09-09 09:18:29.000000000","message":"Follow-up as an optimization point, there is no time today.","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f6b2222cb2826d105e5b998fee23c6694bc87440","unresolved":true,"context_lines":[{"line_number":437,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":438,"context_line":"                                             share_instance,"},{"line_number":439,"context_line":"                                             \"transfer.accept.end\")"},{"line_number":440,"context_line":"        return {\u0027id\u0027: transfer_id,"},{"line_number":441,"context_line":"                \u0027display_name\u0027: transfer[\u0027display_name\u0027],"},{"line_number":442,"context_line":"                \u0027resource_type\u0027: constants.SHARE_RESOURCE_TYPE,"},{"line_number":443,"context_line":"                \u0027resource_id\u0027: share_id}"}],"source_content_type":"text/x-python","patch_set":22,"id":"e939159f_f56eb8a1","line":443,"range":{"start_line":440,"start_character":8,"end_line":443,"end_character":40},"updated":"2022-09-08 22:45:11.000000000","message":"We can still return this information along with 202...","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4d6cb4cfbd25cd6d007d9d5af86b767fa2955795","unresolved":false,"context_lines":[{"line_number":437,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":438,"context_line":"                                             share_instance,"},{"line_number":439,"context_line":"                                             \"transfer.accept.end\")"},{"line_number":440,"context_line":"        return {\u0027id\u0027: transfer_id,"},{"line_number":441,"context_line":"                \u0027display_name\u0027: transfer[\u0027display_name\u0027],"},{"line_number":442,"context_line":"                \u0027resource_type\u0027: constants.SHARE_RESOURCE_TYPE,"},{"line_number":443,"context_line":"                \u0027resource_id\u0027: share_id}"}],"source_content_type":"text/x-python","patch_set":22,"id":"e6f539a3_34188ad9","line":443,"range":{"start_line":440,"start_character":8,"end_line":443,"end_character":40},"in_reply_to":"e939159f_f56eb8a1","updated":"2022-09-09 09:18:29.000000000","message":"Done","commit_id":"1cfbc1f08bc1833e2fb8b8e0cf2d437d756273eb"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":91,"context_line":"                                 update_share_status\u003dupdate_share_status)"},{"line_number":92,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":93,"context_line":"                                             share_instance,"},{"line_number":94,"context_line":"                                             \"transfer.delete.end\")"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def get_all(self, context, limit\u003dNone, sort_key\u003dNone,"},{"line_number":97,"context_line":"                sort_dir\u003dNone, filters\u003dNone, offset\u003dNone):"}],"source_content_type":"text/x-python","patch_set":30,"id":"0eecfd99_fafdacf4","line":94,"updated":"2022-09-12 23:13:59.000000000","message":"I commented in share/manager.py - you should LOG.info here that transfer has been deleted","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                                 update_share_status\u003dupdate_share_status)"},{"line_number":92,"context_line":"        share_utils.notify_about_share_usage(context, share_ref,"},{"line_number":93,"context_line":"                                             share_instance,"},{"line_number":94,"context_line":"                                             \"transfer.delete.end\")"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def get_all(self, context, limit\u003dNone, sort_key\u003dNone,"},{"line_number":97,"context_line":"                sort_dir\u003dNone, filters\u003dNone, offset\u003dNone):"}],"source_content_type":"text/x-python","patch_set":30,"id":"10570ea4_4ef58900","line":94,"in_reply_to":"0eecfd99_fafdacf4","updated":"2022-09-19 02:43:31.000000000","message":"Done","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3b43131b7fa1a192b3df819d81b1ca8ffc919983","unresolved":true,"context_lines":[{"line_number":153,"context_line":"                \"Shares exported over share networks cannot be transferred.\"))"},{"line_number":154,"context_line":"        if share_ref[\u0027share_group_id\u0027]:"},{"line_number":155,"context_line":"            raise exception.InvalidShare(reason\u003d_("},{"line_number":156,"context_line":"                \"Shares exported over share group cannot be transferred.\"))"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share(context, share_id)"},{"line_number":159,"context_line":"        for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":30,"id":"6f773d56_102baffa","line":156,"range":{"start_line":156,"start_character":17,"end_line":156,"end_character":49},"updated":"2022-09-12 23:13:59.000000000","message":"Shares within share groups","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a10a85f574033d60eed7fa37e8251d856dce0648","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                \"Shares exported over share networks cannot be transferred.\"))"},{"line_number":154,"context_line":"        if share_ref[\u0027share_group_id\u0027]:"},{"line_number":155,"context_line":"            raise exception.InvalidShare(reason\u003d_("},{"line_number":156,"context_line":"                \"Shares exported over share group cannot be transferred.\"))"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share(context, share_id)"},{"line_number":159,"context_line":"        for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":30,"id":"3fbc2377_b02f5307","line":156,"range":{"start_line":156,"start_character":17,"end_line":156,"end_character":49},"in_reply_to":"6f773d56_102baffa","updated":"2022-09-19 02:43:31.000000000","message":"Done","commit_id":"c48b4cb09ec14f8d302f4e2922dfb300c3fc346a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        return transfer"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def delete(self, context, transfer_id):"},{"line_number":73,"context_line":"        \"\"\"Make the RPC call to delete a share transfer.\"\"\""},{"line_number":74,"context_line":"        transfer \u003d self.db.share_transfer_get(context, transfer_id)"},{"line_number":75,"context_line":"        policy.check_policy(context, \u0027share_transfer\u0027, \u0027delete\u0027, target_obj\u003d{"},{"line_number":76,"context_line":"            \u0027project_id\u0027: transfer[\u0027source_project_id\u0027]})"}],"source_content_type":"text/x-python","patch_set":36,"id":"711cc551_b9ecf823","line":73,"range":{"start_line":73,"start_character":16,"end_line":73,"end_character":28},"updated":"2023-02-03 01:01:05.000000000","message":"no rpc call here?","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        return transfer"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def delete(self, context, transfer_id):"},{"line_number":73,"context_line":"        \"\"\"Make the RPC call to delete a share transfer.\"\"\""},{"line_number":74,"context_line":"        transfer \u003d self.db.share_transfer_get(context, transfer_id)"},{"line_number":75,"context_line":"        policy.check_policy(context, \u0027share_transfer\u0027, \u0027delete\u0027, target_obj\u003d{"},{"line_number":76,"context_line":"            \u0027project_id\u0027: transfer[\u0027source_project_id\u0027]})"}],"source_content_type":"text/x-python","patch_set":36,"id":"dee203b8_5fa0dca0","line":73,"range":{"start_line":73,"start_character":16,"end_line":73,"end_character":28},"in_reply_to":"711cc551_b9ecf823","updated":"2023-02-06 07:50:51.000000000","message":"The instructions here are wrong, delete transfer does not require backend storage to do anything, no rpc is needed.","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":112,"context_line":"            try:"},{"line_number":113,"context_line":"                policy.check_policy(context, \u0027share_transfer\u0027,"},{"line_number":114,"context_line":"                                    \u0027get_all_tenant\u0027)"},{"line_number":115,"context_line":"            except Exception:"},{"line_number":116,"context_line":"                query_by_project \u003d True"},{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            query_by_project \u003d True"}],"source_content_type":"text/x-python","patch_set":36,"id":"70002f3e_7390a744","line":115,"updated":"2023-02-03 01:01:05.000000000","message":"exception.PolicyNotAuthorized","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            try:"},{"line_number":113,"context_line":"                policy.check_policy(context, \u0027share_transfer\u0027,"},{"line_number":114,"context_line":"                                    \u0027get_all_tenant\u0027)"},{"line_number":115,"context_line":"            except Exception:"},{"line_number":116,"context_line":"                query_by_project \u003d True"},{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            query_by_project \u003d True"}],"source_content_type":"text/x-python","patch_set":36,"id":"09be3119_3b809a2a","line":115,"in_reply_to":"70002f3e_7390a744","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def create(self, context, share_id, display_name):"},{"line_number":161,"context_line":"        \"\"\"Creates an entry in the transfers table.\"\"\""},{"line_number":162,"context_line":"        LOG.info(\"Generating transfer record for share %s\", share_id)"},{"line_number":163,"context_line":"        try:"},{"line_number":164,"context_line":"            share_ref \u003d self.share_api.get(context, share_id)"},{"line_number":165,"context_line":"        except exception.NotFound:"}],"source_content_type":"text/x-python","patch_set":36,"id":"043adb2c_62bed482","line":162,"range":{"start_line":162,"start_character":0,"end_line":162,"end_character":69},"updated":"2023-02-03 01:01:05.000000000","message":"debug\n\ninfo log is appropriate for units of work that are complete; and not for beginning a task that might end up failing (due to any of the exceptions being handled below):\n\nhttps://specs.openstack.org/openstack/openstack-specs/specs/log-guidelines.html#overall-logging-rules","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def create(self, context, share_id, display_name):"},{"line_number":161,"context_line":"        \"\"\"Creates an entry in the transfers table.\"\"\""},{"line_number":162,"context_line":"        LOG.info(\"Generating transfer record for share %s\", share_id)"},{"line_number":163,"context_line":"        try:"},{"line_number":164,"context_line":"            share_ref \u003d self.share_api.get(context, share_id)"},{"line_number":165,"context_line":"        except exception.NotFound:"}],"source_content_type":"text/x-python","patch_set":36,"id":"850607c2_3092fed3","line":162,"range":{"start_line":162,"start_character":0,"end_line":162,"end_character":69},"in_reply_to":"043adb2c_62bed482","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":166,"context_line":"            msg \u003d _(\"Share specified was not found.\")"},{"line_number":167,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":168,"context_line":"        share_instance \u003d share_ref[\u0027instance\u0027]"},{"line_number":169,"context_line":"        if share_ref[\u0027status\u0027] !\u003d \"available\":"},{"line_number":170,"context_line":"            raise exception.InvalidShare(reason\u003d_(\"status must be available\"))"},{"line_number":171,"context_line":"        if share_ref[\u0027share_network_id\u0027]:"},{"line_number":172,"context_line":"            raise exception.InvalidShare(reason\u003d_("}],"source_content_type":"text/x-python","patch_set":36,"id":"f84167a8_1ee418c7","line":169,"updated":"2023-02-03 01:01:05.000000000","message":"Before any of these checks, \n\nperform a policy check if the transfer can be allowed for the given share given the user\u0027s context:\n\n  policy.check_policy(context, \n                      \"share_transfer\",\n                      \"create\", \n                      target_obj\u003dshare_ref)\n\nwithout this, public shares not owned by the project can be transferred by its members","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            msg \u003d _(\"Share specified was not found.\")"},{"line_number":167,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":168,"context_line":"        share_instance \u003d share_ref[\u0027instance\u0027]"},{"line_number":169,"context_line":"        if share_ref[\u0027status\u0027] !\u003d \"available\":"},{"line_number":170,"context_line":"            raise exception.InvalidShare(reason\u003d_(\"status must be available\"))"},{"line_number":171,"context_line":"        if share_ref[\u0027share_network_id\u0027]:"},{"line_number":172,"context_line":"            raise exception.InvalidShare(reason\u003d_("}],"source_content_type":"text/x-python","patch_set":36,"id":"60caf86a_7c4a384c","line":169,"in_reply_to":"f84167a8_1ee418c7","updated":"2023-02-06 07:50:51.000000000","message":"Yes。","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":167,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":168,"context_line":"        share_instance \u003d share_ref[\u0027instance\u0027]"},{"line_number":169,"context_line":"        if share_ref[\u0027status\u0027] !\u003d \"available\":"},{"line_number":170,"context_line":"            raise exception.InvalidShare(reason\u003d_(\"status must be available\"))"},{"line_number":171,"context_line":"        if share_ref[\u0027share_network_id\u0027]:"},{"line_number":172,"context_line":"            raise exception.InvalidShare(reason\u003d_("},{"line_number":173,"context_line":"                \"Shares exported over share networks cannot be transferred.\"))"}],"source_content_type":"text/x-python","patch_set":36,"id":"71b0bdda_61a7886e","line":170,"updated":"2023-02-03 01:01:05.000000000","message":"Share\u0027s status","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":168,"context_line":"        share_instance \u003d share_ref[\u0027instance\u0027]"},{"line_number":169,"context_line":"        if share_ref[\u0027status\u0027] !\u003d \"available\":"},{"line_number":170,"context_line":"            raise exception.InvalidShare(reason\u003d_(\"status must be available\"))"},{"line_number":171,"context_line":"        if share_ref[\u0027share_network_id\u0027]:"},{"line_number":172,"context_line":"            raise exception.InvalidShare(reason\u003d_("},{"line_number":173,"context_line":"                \"Shares exported over share networks cannot be transferred.\"))"}],"source_content_type":"text/x-python","patch_set":36,"id":"13b00872_826759b7","line":170,"in_reply_to":"71b0bdda_61a7886e","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"62ddc390415203dc2e9e06d3abdba015e31b5c1b","unresolved":true,"context_lines":[{"line_number":178,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share(context, share_id)"},{"line_number":179,"context_line":"        for snapshot in snapshots:"},{"line_number":180,"context_line":"            if snapshot[\u0027status\u0027] !\u003d \"available\":"},{"line_number":181,"context_line":"                msg \u003d _(\"snapshot: %s status must be \""},{"line_number":182,"context_line":"                        \"available\") % snapshot[\u0027id\u0027]"},{"line_number":183,"context_line":"                raise exception.InvalidSnapshot(reason\u003dmsg)"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"cf785862_cd749dea","line":181,"updated":"2023-02-03 01:01:05.000000000","message":"Snapshot","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"40a3617954fa1dd292403b7a9ecfc27e6f5346e4","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share(context, share_id)"},{"line_number":179,"context_line":"        for snapshot in snapshots:"},{"line_number":180,"context_line":"            if snapshot[\u0027status\u0027] !\u003d \"available\":"},{"line_number":181,"context_line":"                msg \u003d _(\"snapshot: %s status must be \""},{"line_number":182,"context_line":"                        \"available\") % snapshot[\u0027id\u0027]"},{"line_number":183,"context_line":"                raise exception.InvalidSnapshot(reason\u003dmsg)"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"123b50a1_8c4533a2","line":181,"in_reply_to":"cf785862_cd749dea","updated":"2023-02-06 07:50:51.000000000","message":"Done","commit_id":"4db6a02cebab8fe590bbbeee4bade44f68d58da0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"08a602a842f7724b13821688c36f72c1b036588e","unresolved":true,"context_lines":[{"line_number":155,"context_line":"            return input_str"},{"line_number":156,"context_line":"        salt \u003d _format_str(salt)"},{"line_number":157,"context_line":"        auth_key \u003d _format_str(auth_key)"},{"line_number":158,"context_line":"        return hmac.new(salt, auth_key, hashlib.sha1).hexdigest()"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def create(self, context, share_id, display_name):"},{"line_number":161,"context_line":"        \"\"\"Creates an entry in the transfers table.\"\"\""}],"source_content_type":"text/x-python","patch_set":43,"id":"2e64b98a_f2317cbc","line":158,"range":{"start_line":158,"start_character":48,"end_line":158,"end_character":52},"updated":"2023-02-15 00:04:34.000000000","message":"I see that you were okay with updating this to sha256: https://review.opendev.org/c/openstack/manila/+/843832/comments/3e7059aa_e3f0647e \n\ndid something change here?","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2633a26a8036c9f2cb90fd044ec12512ab5cf69e","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            return input_str"},{"line_number":156,"context_line":"        salt \u003d _format_str(salt)"},{"line_number":157,"context_line":"        auth_key \u003d _format_str(auth_key)"},{"line_number":158,"context_line":"        return hmac.new(salt, auth_key, hashlib.sha1).hexdigest()"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def create(self, context, share_id, display_name):"},{"line_number":161,"context_line":"        \"\"\"Creates an entry in the transfers table.\"\"\""}],"source_content_type":"text/x-python","patch_set":43,"id":"183a8cec_4ad30f56","line":158,"range":{"start_line":158,"start_character":48,"end_line":158,"end_character":52},"in_reply_to":"2e64b98a_f2317cbc","updated":"2023-02-16 09:07:34.000000000","message":"Done","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"08a602a842f7724b13821688c36f72c1b036588e","unresolved":true,"context_lines":[{"line_number":453,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":454,"context_line":"                try:"},{"line_number":455,"context_line":"                    # storage try to rollback"},{"line_number":456,"context_line":"                    self.share_api.transfer_accept(context,"},{"line_number":457,"context_line":"                                                   share_ref,"},{"line_number":458,"context_line":"                                                   share_ref[\u0027user_id\u0027],"},{"line_number":459,"context_line":"                                                   share_ref[\u0027project_id\u0027])"},{"line_number":460,"context_line":"                    # db try to rollback"},{"line_number":461,"context_line":"                    self.db.transfer_accept_rollback("},{"line_number":462,"context_line":"                        context.elevated(), transfer_id,"}],"source_content_type":"text/x-python","patch_set":43,"id":"9f32e9be_742e0004","line":459,"range":{"start_line":456,"start_character":0,"end_line":459,"end_character":75},"updated":"2023-02-15 00:04:34.000000000","message":"It\u0027s possible that access rules may be gone at this point - wouldn\u0027t it be wise to recover them?","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2633a26a8036c9f2cb90fd044ec12512ab5cf69e","unresolved":false,"context_lines":[{"line_number":453,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":454,"context_line":"                try:"},{"line_number":455,"context_line":"                    # storage try to rollback"},{"line_number":456,"context_line":"                    self.share_api.transfer_accept(context,"},{"line_number":457,"context_line":"                                                   share_ref,"},{"line_number":458,"context_line":"                                                   share_ref[\u0027user_id\u0027],"},{"line_number":459,"context_line":"                                                   share_ref[\u0027project_id\u0027])"},{"line_number":460,"context_line":"                    # db try to rollback"},{"line_number":461,"context_line":"                    self.db.transfer_accept_rollback("},{"line_number":462,"context_line":"                        context.elevated(), transfer_id,"}],"source_content_type":"text/x-python","patch_set":43,"id":"d44d2c45_18fa4161","line":459,"range":{"start_line":456,"start_character":0,"end_line":459,"end_character":75},"in_reply_to":"9f32e9be_742e0004","updated":"2023-02-16 09:07:34.000000000","message":"if access rules has gone, the driver would do nothing.","commit_id":"5b56f2a2c6507017e72d92538151c619a81df194"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"de7f4ec36476e18ab77c79c865f3563ac4962028","unresolved":true,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        # Note that the string returned by this function must contain only"},{"line_number":140,"context_line":"        # characters that the recipient can enter on their keyboard. The"},{"line_number":141,"context_line":"        # function ssh224().hexdigit() achieves this by generating a hash"},{"line_number":142,"context_line":"        # which will only contain hexadecimal digits."},{"line_number":143,"context_line":"        while len(rndstr) \u003c length:"},{"line_number":144,"context_line":"            rndstr +\u003d hashlib.sha256(os.urandom(255)).hexdigest()"}],"source_content_type":"text/x-python","patch_set":50,"id":"af420ead_7642d5cf","line":141,"range":{"start_line":141,"start_character":19,"end_line":141,"end_character":25},"updated":"2023-02-17 07:10:57.000000000","message":"sha256","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"17eeb2f9103b101bb42d3b7301afd7004654ad5b","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        # Note that the string returned by this function must contain only"},{"line_number":140,"context_line":"        # characters that the recipient can enter on their keyboard. The"},{"line_number":141,"context_line":"        # function ssh224().hexdigit() achieves this by generating a hash"},{"line_number":142,"context_line":"        # which will only contain hexadecimal digits."},{"line_number":143,"context_line":"        while len(rndstr) \u003c length:"},{"line_number":144,"context_line":"            rndstr +\u003d hashlib.sha256(os.urandom(255)).hexdigest()"}],"source_content_type":"text/x-python","patch_set":50,"id":"5df08947_21c7974c","line":141,"range":{"start_line":141,"start_character":19,"end_line":141,"end_character":25},"in_reply_to":"af420ead_7642d5cf","updated":"2023-02-17 08:06:03.000000000","message":"Done","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"de7f4ec36476e18ab77c79c865f3563ac4962028","unresolved":true,"context_lines":[{"line_number":178,"context_line":"            raise exception.InvalidShare(reason\u003d_("},{"line_number":179,"context_line":"                \"Shares within share groups cannot be transferred.\"))"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        replicas \u003d self.db.share_replicas_get_all_by_share(context, share_id)"},{"line_number":182,"context_line":"        if len(replicas) \u003e 0:"},{"line_number":183,"context_line":"            raise exception.InvalidShare(reason\u003d_("},{"line_number":184,"context_line":"                \"Shares within share replicas cannot be transferred.\"))"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"a2b100d0_b44b1fc9","line":182,"range":{"start_line":181,"start_character":8,"end_line":182,"end_character":29},"updated":"2023-02-17 07:10:57.000000000","message":"No need for another lookup:\n\n  if share_ref.has_replicas:","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"17eeb2f9103b101bb42d3b7301afd7004654ad5b","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            raise exception.InvalidShare(reason\u003d_("},{"line_number":179,"context_line":"                \"Shares within share groups cannot be transferred.\"))"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        replicas \u003d self.db.share_replicas_get_all_by_share(context, share_id)"},{"line_number":182,"context_line":"        if len(replicas) \u003e 0:"},{"line_number":183,"context_line":"            raise exception.InvalidShare(reason\u003d_("},{"line_number":184,"context_line":"                \"Shares within share replicas cannot be transferred.\"))"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":50,"id":"84cc337a_944c798c","line":182,"range":{"start_line":181,"start_character":8,"end_line":182,"end_character":29},"in_reply_to":"a2b100d0_b44b1fc9","updated":"2023-02-17 08:06:03.000000000","message":"Done","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"de7f4ec36476e18ab77c79c865f3563ac4962028","unresolved":true,"context_lines":[{"line_number":181,"context_line":"        replicas \u003d self.db.share_replicas_get_all_by_share(context, share_id)"},{"line_number":182,"context_line":"        if len(replicas) \u003e 0:"},{"line_number":183,"context_line":"            raise exception.InvalidShare(reason\u003d_("},{"line_number":184,"context_line":"                \"Shares within share replicas cannot be transferred.\"))"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share(context, share_id)"},{"line_number":187,"context_line":"        for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":50,"id":"dd2863d4_e0a345cc","line":184,"range":{"start_line":184,"start_character":17,"end_line":184,"end_character":46},"updated":"2023-02-17 07:10:57.000000000","message":"Shares with replicas","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"17eeb2f9103b101bb42d3b7301afd7004654ad5b","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        replicas \u003d self.db.share_replicas_get_all_by_share(context, share_id)"},{"line_number":182,"context_line":"        if len(replicas) \u003e 0:"},{"line_number":183,"context_line":"            raise exception.InvalidShare(reason\u003d_("},{"line_number":184,"context_line":"                \"Shares within share replicas cannot be transferred.\"))"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        snapshots \u003d self.db.share_snapshot_get_all_for_share(context, share_id)"},{"line_number":187,"context_line":"        for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":50,"id":"007d4990_882cc97f","line":184,"range":{"start_line":184,"start_character":17,"end_line":184,"end_character":46},"in_reply_to":"dd2863d4_e0a345cc","updated":"2023-02-17 08:06:03.000000000","message":"Done","commit_id":"e910e9b0b137144e0a9b87fd124e0fe4ea338704"}],"releasenotes/notes/bp-share-transfer-between-project-5c2ba9944b17e26e.yaml":[{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Share can be transfer between project with API version ``2.72``"},{"line_number":4,"context_line":"    and beyond."}],"source_content_type":"text/x-yaml","patch_set":19,"id":"f5a1cbea_0b65dd6a","line":3,"range":{"start_line":3,"start_character":61,"end_line":3,"end_character":65},"updated":"2022-09-05 22:23:28.000000000","message":"2.73","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3bf7a65cd99324dc93b5abe84b08258f04e51a93","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Share can be transfer between project with API version ``2.72``"},{"line_number":4,"context_line":"    and beyond."}],"source_content_type":"text/x-yaml","patch_set":19,"id":"f113b208_02c59ab5","line":3,"range":{"start_line":3,"start_character":17,"end_line":3,"end_character":26},"updated":"2022-09-05 22:23:28.000000000","message":"transferred","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Share can be transfer between project with API version ``2.72``"},{"line_number":4,"context_line":"    and beyond."}],"source_content_type":"text/x-yaml","patch_set":19,"id":"e4365fa8_b1f41a72","line":3,"range":{"start_line":3,"start_character":17,"end_line":3,"end_character":26},"in_reply_to":"f113b208_02c59ab5","updated":"2022-09-07 04:16:09.000000000","message":"Done","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1f611b1649465ffc322031a7544d2dc1e82aecc5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Share can be transfer between project with API version ``2.72``"},{"line_number":4,"context_line":"    and beyond."}],"source_content_type":"text/x-yaml","patch_set":19,"id":"c005e068_5c20de1f","line":3,"range":{"start_line":3,"start_character":61,"end_line":3,"end_character":65},"in_reply_to":"f5a1cbea_0b65dd6a","updated":"2022-09-07 04:16:09.000000000","message":"Done","commit_id":"425ccc29d4ce2a70cfe019e8883b4bb72e135baa"},{"author":{"_account_id":33301,"name":"Caique Mello","email":"caiquemellosbo@gmail.com","username":"MelloCaique"},"change_message_id":"3fe6a4b40f05ba3e78fb6e614f0762c4c556f844","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Share can be transferred between project with API version ``2.74``"},{"line_number":4,"context_line":"    and beyond."}],"source_content_type":"text/x-yaml","patch_set":41,"id":"b2b0e728_eed1b024","line":3,"range":{"start_line":3,"start_character":64,"end_line":3,"end_character":68},"updated":"2023-02-10 15:05:52.000000000","message":"Update to 2.75","commit_id":"b524c92ce4e01564cd9f6c9b604351ca5e780850"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"55d66dde3f5c765f73d2b67a010ec957cb5d12b6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Share can be transferred between project with API version ``2.74``"},{"line_number":4,"context_line":"    and beyond."}],"source_content_type":"text/x-yaml","patch_set":41,"id":"5095e187_3f4c45eb","line":3,"range":{"start_line":3,"start_character":64,"end_line":3,"end_character":68},"in_reply_to":"b2b0e728_eed1b024","updated":"2023-02-11 14:32:09.000000000","message":"Done","commit_id":"b524c92ce4e01564cd9f6c9b604351ca5e780850"}]}
