)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Manila share support Recycle Bin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support share Recycle Bin, the end user can soft delete"},{"line_number":10,"context_line":"share to Recycle Bin, and can restore the share within 7 dyas,"},{"line_number":11,"context_line":"otherwise the share will be deleted automatically"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Partially-Implements: blueprint manila-share-support-recycle-bin"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"6c50befd_719cd3e4","line":10,"range":{"start_line":10,"start_character":57,"end_line":10,"end_character":61},"updated":"2021-08-31 01:25:07.000000000","message":"nit: days","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c361dee6836437ce57a63df2f9ebc5a990182522","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Manila share support Recycle Bin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support share Recycle Bin, the end user can soft delete"},{"line_number":10,"context_line":"share to Recycle Bin, and can restore the share within 7 dyas,"},{"line_number":11,"context_line":"otherwise the share will be deleted automatically"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Partially-Implements: blueprint manila-share-support-recycle-bin"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"b5d6b025_f76228b8","line":10,"range":{"start_line":10,"start_character":57,"end_line":10,"end_character":61},"in_reply_to":"6c50befd_719cd3e4","updated":"2021-08-31 10:24:51.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":17,"id":"51186d29_e699a211","line":16,"updated":"2021-08-31 01:25:07.000000000","message":"Please add DocImpact","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c361dee6836437ce57a63df2f9ebc5a990182522","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"bf22a58c_83e842de","line":16,"in_reply_to":"51186d29_e699a211","updated":"2021-08-31 10:24:51.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"342455b2a78619d6c8a5504a254657d080680840","unresolved":true,"context_lines":[{"line_number":10,"context_line":"share to Recycle Bin, and can restore the share within 7 days,"},{"line_number":11,"context_line":"otherwise the share will be deleted automatically."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":"Partially-Implements: blueprint manila-share-support-recycle-bin"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ic838eec5fea890be6513514053329b1d2d86b3ba"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"6eff2b31_37f61412","line":13,"updated":"2021-12-16 11:56:57.000000000","message":"Please also add APIImpact","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6769d17b1fc8b7415ae188b2e7aa634e19b0968b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"share to Recycle Bin, and can restore the share within 7 days,"},{"line_number":11,"context_line":"otherwise the share will be deleted automatically."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":"Partially-Implements: blueprint manila-share-support-recycle-bin"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ic838eec5fea890be6513514053329b1d2d86b3ba"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"e64fae82_2d938a3b","line":13,"in_reply_to":"6eff2b31_37f61412","updated":"2021-12-17 07:27:44.000000000","message":"Done","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":10,"context_line":"share to Recycle Bin, and can restore the share within 7 days,"},{"line_number":11,"context_line":"otherwise the share will be deleted automatically."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":"APIImpact"},{"line_number":15,"context_line":"Partially-Implements: blueprint manila-share-support-recycle-bin"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":40,"id":"5ec162dd_7adb0b82","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":9},"updated":"2022-02-17 01:58:10.000000000","message":"Thanks, we\u0027ll need to write up user/admin docs for this feature..","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":10,"context_line":"share to Recycle Bin, and can restore the share within 7 days,"},{"line_number":11,"context_line":"otherwise the share will be deleted automatically."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":"APIImpact"},{"line_number":15,"context_line":"Partially-Implements: blueprint manila-share-support-recycle-bin"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":40,"id":"685b0bd3_c3b9d2a6","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":9},"in_reply_to":"5ec162dd_7adb0b82","updated":"2022-02-18 08:25:48.000000000","message":"the doc has added in share-actions.inc.","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"342455b2a78619d6c8a5504a254657d080680840","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"02b4c4f1_1daae8d6","updated":"2021-12-16 11:56:57.000000000","message":"Thank you for working through the comments, haixin!\nAddressed few more inline.\nI have another question:\nWhat happens if we try to unmanage a share that is in the recycle bin?","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2ec502c3d5aa071a415c49c586bacc29d688cc0c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"0772ce48_9d37f3fd","updated":"2021-10-26 02:08:38.000000000","message":"after X release, can we check and merged this feature?","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"414fd55c1f0368d65fea1a8303cfa28e8e54f526","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"71841e36_88d14d74","updated":"2021-11-05 06:12:26.000000000","message":"hi all, this patch needs review.","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"99c1a7130eba584f51c35663839c8fbdca5efbd2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"fab66c17_991ccea2","updated":"2021-12-09 20:11:35.000000000","message":"recheck","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6769d17b1fc8b7415ae188b2e7aa634e19b0968b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"ba6c1561_71257960","updated":"2021-12-17 07:27:44.000000000","message":"thanks for your review, Carlos Eduardo.","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6769d17b1fc8b7415ae188b2e7aa634e19b0968b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"7c07343c_162e7edf","in_reply_to":"02b4c4f1_1daae8d6","updated":"2021-12-17 07:27:44.000000000","message":"we do not allow unmageage  share in recycle bin, \nin manila/api/v1/share_unmange.p#40---43","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"61370d71eda08922d5dce90b62811ccf2b87c7a5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"1ddce47d_7fc669c4","updated":"2022-02-04 15:54:30.000000000","message":"Hi, haixin! Thank you for addressing the comments I added in the past round, and also thanks for the patience on this  change :)\n\nI have some more comments inline, could you please check them?\nAlso, I did have the chance to give this and the client changes a try.\nHere are the scenarios I tested:\n\n- Soft deleting a share\n- Restore the soft deleted share\n- Restore a share that was already deleted by the deletion routine\n- Soft delete a share that is already soft deleted\n- List soft deleted shares\n- Attempt to soft delete a share that it\u0027s migrating\n- Attempt to soft delete a share that has replicas\n- Attempt to extend/shrink a share that was soft deleted\n- Force-delete/delete a soft deleted share\n- Create snapshots from soft deleted shares\n- Attempting to soft delete shares that had snapshots\n- Create a share replica from a soft deleted share\n- Soft delete unmanaged share\n\nAll of them acted as expected.","commit_id":"03fa54edb099342ee51aeb20867b95328901de97"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6eeb724e0fd9ce3688f23510edc3b0e5bb4860ce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"194570c3_f6b99b3e","updated":"2022-02-07 06:46:04.000000000","message":"thanks for your review,  Carlos Eduardo.","commit_id":"c81d766168769e1c7746d44d8b778e9db212218b"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"41bb19be9362dd6a4b8485a608a380749f35d0b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"bab9bb80_f1ffd583","updated":"2022-02-16 21:17:19.000000000","message":"Haixin, this change is looking good!\nI spotted few more places with a lack of coverage but I\u0027d say not enough for me to hold off this change at this point.\nSo I\u0027d like to ask you if you could please submit a follow-up change increasing the unit test coverage? :)","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"218e0be8_cc4bd237","updated":"2022-02-17 01:58:10.000000000","message":"Hi Haixin, \n\nThought we could get this in today, but, there\u0027re some issues that we should resolve before merging this; Can you please take a look at the comments and update this?\n\nIts okay to take some time on the unit tests, but, the code issues must best be solved before we merge this. \n\nThanks a lot for your patience with the reviews here.","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"418ae861ffdc7fbf4d85709a84ee548ca8074987","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"620087b9_33797605","updated":"2022-02-10 13:44:57.000000000","message":"run-NetApp CI","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":41,"id":"8d6592b0_69c3b8f7","updated":"2022-02-18 08:25:48.000000000","message":"thanks for your review, Carlos Eduardo and Goutham Pacha Ravi.","commit_id":"d3438481e3bdbd5d66fdb5ecfa55084335fad1ba"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"374fec7f43d6d3303feba60fbe9357eef5da38d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":46,"id":"f6ed8f96_b360581b","updated":"2022-02-22 00:13:07.000000000","message":"Thank you for the coverage enhancement.\nCould you please address Goutham\u0027s comments in a follow-up change by RC? :)","commit_id":"d51eb05c055e1dbb71bb5475917a5bf161f98b41"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a68b950cc190357516a9a4cf0ff7a445382ce9f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":46,"id":"27549046_c94637a4","updated":"2022-02-21 23:54:17.000000000","message":"Thanks for the latest changes. I guess we need to chat some more about the use of \"force\" in the periodic task that cleans up the deleted shares. Lets get this in and open a bug if necessary. ","commit_id":"d51eb05c055e1dbb71bb5475917a5bf161f98b41"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"239dc1249f8df7d596ab01449f273bee03140a74","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":46,"id":"5c4547ca_770d829f","updated":"2022-02-22 01:15:44.000000000","message":"thanks. :)","commit_id":"d51eb05c055e1dbb71bb5475917a5bf161f98b41"}],"api-ref/source/parameters.yaml":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"342455b2a78619d6c8a5504a254657d080680840","unresolved":true,"context_lines":[{"line_number":275,"context_line":"  type: boolean"},{"line_number":276,"context_line":"is_soft_deleted_query:"},{"line_number":277,"context_line":"  description: |"},{"line_number":278,"context_line":"    Whether to query shares in recycle bin, default is ``False``."},{"line_number":279,"context_line":"  in: query"},{"line_number":280,"context_line":"  required: false"},{"line_number":281,"context_line":"  type: boolean"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"49bcf96a_619a346c","line":278,"range":{"start_line":278,"start_character":4,"end_line":278,"end_character":42},"updated":"2021-12-16 11:56:57.000000000","message":"A boolean parameter that, when set to `True`, will make Manila return all shares including the ones present in the recycle bin. Default is `False`.","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6769d17b1fc8b7415ae188b2e7aa634e19b0968b","unresolved":false,"context_lines":[{"line_number":275,"context_line":"  type: boolean"},{"line_number":276,"context_line":"is_soft_deleted_query:"},{"line_number":277,"context_line":"  description: |"},{"line_number":278,"context_line":"    Whether to query shares in recycle bin, default is ``False``."},{"line_number":279,"context_line":"  in: query"},{"line_number":280,"context_line":"  required: false"},{"line_number":281,"context_line":"  type: boolean"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"08cae9d4_9f01f014","line":278,"range":{"start_line":278,"start_character":4,"end_line":278,"end_character":42},"in_reply_to":"49bcf96a_619a346c","updated":"2021-12-17 07:27:44.000000000","message":"A boolean query parameter that, when set to True, will return all shares\nin recycle bin. Default is False, will return all shares not in recycle\nbin.","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":326,"context_line":"  in: query"},{"line_number":327,"context_line":"  required: false"},{"line_number":328,"context_line":"  type: boolean"},{"line_number":329,"context_line":"is_soft_deleted_query:"},{"line_number":330,"context_line":"  description: |"},{"line_number":331,"context_line":"    A boolean query parameter that, when set to True, will return all shares"},{"line_number":332,"context_line":"    in recycle bin. Default is False, will return all shares not in recycle"},{"line_number":333,"context_line":"    bin."},{"line_number":334,"context_line":"  in: query"},{"line_number":335,"context_line":"  required: false"},{"line_number":336,"context_line":"  type: boolean"},{"line_number":337,"context_line":"  min_version: 2.69"},{"line_number":338,"context_line":"limit:"},{"line_number":339,"context_line":"  description: |"},{"line_number":340,"context_line":"    The maximum number of shares to return."}],"source_content_type":"text/x-yaml","patch_set":40,"id":"2443c0d6_fb7651f0","line":337,"range":{"start_line":329,"start_character":0,"end_line":337,"end_character":19},"updated":"2022-02-17 01:58:10.000000000","message":"missing \"scheduled_to_be_deleted_at\" parameter..","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":326,"context_line":"  in: query"},{"line_number":327,"context_line":"  required: false"},{"line_number":328,"context_line":"  type: boolean"},{"line_number":329,"context_line":"is_soft_deleted_query:"},{"line_number":330,"context_line":"  description: |"},{"line_number":331,"context_line":"    A boolean query parameter that, when set to True, will return all shares"},{"line_number":332,"context_line":"    in recycle bin. Default is False, will return all shares not in recycle"},{"line_number":333,"context_line":"    bin."},{"line_number":334,"context_line":"  in: query"},{"line_number":335,"context_line":"  required: false"},{"line_number":336,"context_line":"  type: boolean"},{"line_number":337,"context_line":"  min_version: 2.69"},{"line_number":338,"context_line":"limit:"},{"line_number":339,"context_line":"  description: |"},{"line_number":340,"context_line":"    The maximum number of shares to return."}],"source_content_type":"text/x-yaml","patch_set":40,"id":"31ed96d8_4ac4f6eb","line":337,"range":{"start_line":329,"start_character":0,"end_line":337,"end_character":19},"in_reply_to":"2443c0d6_fb7651f0","updated":"2022-02-18 08:25:48.000000000","message":"yes, will add it.","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"}],"api-ref/source/share-actions.inc":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":514,"context_line":""},{"line_number":515,"context_line":"- Share status must be ``available``, ``error`` or ``inactive``"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"- You cannot already have a snapshot of the share."},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"- You cannot already have a group snapshot of the share."},{"line_number":520,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":17,"id":"5775ef39_2389f723","line":517,"range":{"start_line":517,"start_character":2,"end_line":517,"end_character":49},"updated":"2021-08-31 01:25:07.000000000","message":"Share can\u0027t have any snapshot","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":false,"context_lines":[{"line_number":514,"context_line":""},{"line_number":515,"context_line":"- Share status must be ``available``, ``error`` or ``inactive``"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"- You cannot already have a snapshot of the share."},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"- You cannot already have a group snapshot of the share."},{"line_number":520,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":17,"id":"3547d762_71fe6ef6","line":517,"range":{"start_line":517,"start_character":2,"end_line":517,"end_character":49},"in_reply_to":"5775ef39_2389f723","updated":"2021-08-31 07:24:19.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":516,"context_line":""},{"line_number":517,"context_line":"- You cannot already have a snapshot of the share."},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"- You cannot already have a group snapshot of the share."},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"- You cannot already have a replica of the share."},{"line_number":522,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":17,"id":"a4ce8058_9c9dc57e","line":519,"range":{"start_line":519,"start_character":2,"end_line":519,"end_character":55},"updated":"2021-08-31 01:25:07.000000000","message":"Share can\u0027t have a share group snapshot","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":false,"context_lines":[{"line_number":516,"context_line":""},{"line_number":517,"context_line":"- You cannot already have a snapshot of the share."},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"- You cannot already have a group snapshot of the share."},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"- You cannot already have a replica of the share."},{"line_number":522,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":17,"id":"2adffae5_b9e14e98","line":519,"range":{"start_line":519,"start_character":2,"end_line":519,"end_character":55},"in_reply_to":"a4ce8058_9c9dc57e","updated":"2021-08-31 07:24:19.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":518,"context_line":""},{"line_number":519,"context_line":"- You cannot already have a group snapshot of the share."},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"- You cannot already have a replica of the share."},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"- You cannot soft delete share already in Recycle Bin."},{"line_number":524,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":17,"id":"decf653a_b1e84680","line":521,"range":{"start_line":521,"start_character":2,"end_line":521,"end_character":48},"updated":"2021-08-31 01:25:07.000000000","message":"Share can\u0027t have dependent replicas","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":false,"context_lines":[{"line_number":518,"context_line":""},{"line_number":519,"context_line":"- You cannot already have a group snapshot of the share."},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"- You cannot already have a replica of the share."},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"- You cannot soft delete share already in Recycle Bin."},{"line_number":524,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":17,"id":"ddd2aae1_54ae2a5e","line":521,"range":{"start_line":521,"start_character":2,"end_line":521,"end_character":48},"in_reply_to":"decf653a_b1e84680","updated":"2021-08-31 07:24:19.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":520,"context_line":""},{"line_number":521,"context_line":"- You cannot already have a replica of the share."},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"- You cannot soft delete share already in Recycle Bin."},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"- You cannot soft delete a share that doesn\u0027t belong to your project."},{"line_number":526,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":17,"id":"89718ec8_789093b9","line":523,"range":{"start_line":523,"start_character":31,"end_line":523,"end_character":53},"updated":"2021-08-31 01:25:07.000000000","message":"that already is in the Recycle Bin.","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":false,"context_lines":[{"line_number":520,"context_line":""},{"line_number":521,"context_line":"- You cannot already have a replica of the share."},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"- You cannot soft delete share already in Recycle Bin."},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"- You cannot soft delete a share that doesn\u0027t belong to your project."},{"line_number":526,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":17,"id":"bee6761d_caad16a7","line":523,"range":{"start_line":523,"start_character":31,"end_line":523,"end_character":53},"in_reply_to":"89718ec8_789093b9","updated":"2021-08-31 07:24:19.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":558,"context_line":""},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"Restore share (since API v2.64)"},{"line_number":561,"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\u003d\u003d\u003d"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":".. rest_method::  POST /v2/shares/{share_id}/action"},{"line_number":564,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":17,"id":"aaba5507_d176b70b","line":561,"range":{"start_line":561,"start_character":31,"end_line":561,"end_character":35},"updated":"2021-08-31 01:25:07.000000000","message":"nit: please remove","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":false,"context_lines":[{"line_number":558,"context_line":""},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"Restore share (since API v2.64)"},{"line_number":561,"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\u003d\u003d\u003d"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":".. rest_method::  POST /v2/shares/{share_id}/action"},{"line_number":564,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":17,"id":"9912979b_f443c291","line":561,"range":{"start_line":561,"start_character":31,"end_line":561,"end_character":35},"in_reply_to":"aaba5507_d176b70b","updated":"2021-08-31 07:24:19.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"}],"api-ref/source/shares.inc":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a68b950cc190357516a9a4cf0ff7a445382ce9f5","unresolved":true,"context_lines":[{"line_number":321,"context_line":"   - count: count"},{"line_number":322,"context_line":"   - volume_type: volume_type_shares_response"},{"line_number":323,"context_line":"   - export_location: export_location"},{"line_number":324,"context_line":"   - export_locations: export_locations"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"Response example"},{"line_number":327,"context_line":"----------------"}],"source_content_type":"text/x-c++src","patch_set":40,"id":"c4591aa6_9ebaef39","line":324,"updated":"2022-02-21 23:54:17.000000000","message":"scheduled_to_be_deleted_at\nis_soft_deleted\n\nhere too?","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"239dc1249f8df7d596ab01449f273bee03140a74","unresolved":false,"context_lines":[{"line_number":321,"context_line":"   - count: count"},{"line_number":322,"context_line":"   - volume_type: volume_type_shares_response"},{"line_number":323,"context_line":"   - export_location: export_location"},{"line_number":324,"context_line":"   - export_locations: export_locations"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"Response example"},{"line_number":327,"context_line":"----------------"}],"source_content_type":"text/x-c++src","patch_set":40,"id":"830b24a7_51dd9315","line":324,"in_reply_to":"c4591aa6_9ebaef39","updated":"2022-02-22 01:15:44.000000000","message":"i will add those after this patch merged. as doc fix.","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a68b950cc190357516a9a4cf0ff7a445382ce9f5","unresolved":true,"context_lines":[{"line_number":486,"context_line":"   - volume_type: volume_type_shares_response"},{"line_number":487,"context_line":"   - export_location: export_location"},{"line_number":488,"context_line":"   - export_locations: export_locations"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"Response example"},{"line_number":491,"context_line":"----------------"},{"line_number":492,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":40,"id":"b401969e_d56bd61e","line":489,"updated":"2022-02-21 23:54:17.000000000","message":"scheduled_to_be_deleted_at\nis_soft_deleted\n\nhere too","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a68b950cc190357516a9a4cf0ff7a445382ce9f5","unresolved":true,"context_lines":[{"line_number":590,"context_line":"   - count: count"},{"line_number":591,"context_line":"   - volume_type: volume_type_shares_response"},{"line_number":592,"context_line":"   - export_location: export_location"},{"line_number":593,"context_line":"   - export_locations: export_locations"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"Response example"},{"line_number":596,"context_line":"----------------"}],"source_content_type":"text/x-c++src","patch_set":40,"id":"d1c39b9d_3dc6dc89","line":593,"updated":"2022-02-21 23:54:17.000000000","message":"scheduled_to_be_deleted_at\nis_soft_deleted\n\nhere too","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a68b950cc190357516a9a4cf0ff7a445382ce9f5","unresolved":true,"context_lines":[{"line_number":689,"context_line":"   - volume_type: volume_type_shares_response"},{"line_number":690,"context_line":"   - export_location: export_location"},{"line_number":691,"context_line":"   - export_locations: export_locations"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"Response example"},{"line_number":694,"context_line":"----------------"},{"line_number":695,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":40,"id":"bc6bfce1_c66b9f9d","line":692,"updated":"2022-02-21 23:54:17.000000000","message":"scheduled_to_be_deleted_at\nis_soft_deleted\n\nhere too","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"}],"manila/api/openstack/api_version_request.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":172,"context_line":"             \u0027update_security_service\u0027, \u0027update_security_service_check\u0027 and"},{"line_number":173,"context_line":"             \u0027add_security_service_check\u0027."},{"line_number":174,"context_line":"    * 2.64 - Added new share action to soft delete share to recycle bin or"},{"line_number":175,"context_line":"             restore share from recycle bin. add new parameter"},{"line_number":176,"context_line":"             \u0027is_soft_deleted\u0027 to list shares API for query shares in recycle"},{"line_number":177,"context_line":"             bin."},{"line_number":178,"context_line":"\"\"\""},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":17,"id":"e665e91e_811d317b","line":177,"range":{"start_line":175,"start_character":45,"end_line":177,"end_character":16},"updated":"2021-08-31 01:25:07.000000000","message":"Also, a new parameter called `is_soft_deleted` was added so administrators can filter out shares in the recycle bin while listing shares.","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":false,"context_lines":[{"line_number":172,"context_line":"             \u0027update_security_service\u0027, \u0027update_security_service_check\u0027 and"},{"line_number":173,"context_line":"             \u0027add_security_service_check\u0027."},{"line_number":174,"context_line":"    * 2.64 - Added new share action to soft delete share to recycle bin or"},{"line_number":175,"context_line":"             restore share from recycle bin. add new parameter"},{"line_number":176,"context_line":"             \u0027is_soft_deleted\u0027 to list shares API for query shares in recycle"},{"line_number":177,"context_line":"             bin."},{"line_number":178,"context_line":"\"\"\""},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":17,"id":"96fc595a_a6d945cc","line":177,"range":{"start_line":175,"start_character":45,"end_line":177,"end_character":16},"in_reply_to":"e665e91e_811d317b","updated":"2021-08-31 07:24:19.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"796fa697ff8c1fd4854e1b5187d5135ff4ed4fda","unresolved":true,"context_lines":[{"line_number":172,"context_line":"             \u0027update_security_service\u0027, \u0027update_security_service_check\u0027 and"},{"line_number":173,"context_line":"             \u0027add_security_service_check\u0027."},{"line_number":174,"context_line":"    * 2.64 - Added \u0027force\u0027 field to extend share api, which can extend share"},{"line_number":175,"context_line":"             directly without go through share scheduler."},{"line_number":176,"context_line":"    * 2.65 - Added new share action to soft delete share to recycle bin or"},{"line_number":177,"context_line":"             restore share from recycle bin. Also, a new parameter called"},{"line_number":178,"context_line":"             `is_soft_deleted` was added so administrators can filter out"}],"source_content_type":"text/x-python","patch_set":20,"id":"e465535e_e889d037","line":175,"range":{"start_line":175,"start_character":30,"end_line":175,"end_character":32},"updated":"2021-09-01 18:42:02.000000000","message":"validation","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":false,"context_lines":[{"line_number":172,"context_line":"             \u0027update_security_service\u0027, \u0027update_security_service_check\u0027 and"},{"line_number":173,"context_line":"             \u0027add_security_service_check\u0027."},{"line_number":174,"context_line":"    * 2.64 - Added \u0027force\u0027 field to extend share api, which can extend share"},{"line_number":175,"context_line":"             directly without go through share scheduler."},{"line_number":176,"context_line":"    * 2.65 - Added new share action to soft delete share to recycle bin or"},{"line_number":177,"context_line":"             restore share from recycle bin. Also, a new parameter called"},{"line_number":178,"context_line":"             `is_soft_deleted` was added so administrators can filter out"}],"source_content_type":"text/x-python","patch_set":20,"id":"d90de6e6_2466d1cc","line":175,"range":{"start_line":175,"start_character":30,"end_line":175,"end_character":32},"in_reply_to":"e465535e_e889d037","updated":"2021-09-02 10:18:39.000000000","message":"Done","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bf2b823ef7cffb318baa35685f9399aa2f9e16de","unresolved":true,"context_lines":[{"line_number":171,"context_line":"             actions on the share network\u0027s endpoint:"},{"line_number":172,"context_line":"             \u0027update_security_service\u0027, \u0027update_security_service_check\u0027 and"},{"line_number":173,"context_line":"             \u0027add_security_service_check\u0027."},{"line_number":174,"context_line":"    * 2.64 - Added \u0027force\u0027 field to extend share api, which can extend share"},{"line_number":175,"context_line":"             directly without validation through share scheduler."},{"line_number":176,"context_line":"    * 2.65 - Added new share action to soft delete share to recycle bin or"},{"line_number":177,"context_line":"             restore share from recycle bin. Also, a new parameter called"},{"line_number":178,"context_line":"             `is_soft_deleted` was added so administrators can filter out"}],"source_content_type":"text/x-python","patch_set":23,"id":"7702def6_d288aa57","line":175,"range":{"start_line":174,"start_character":13,"end_line":175,"end_character":65},"updated":"2021-09-03 07:35:50.000000000","message":"Thanks for adding this here","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c02f17e4371992d25bcdbbfcf735ea06d3e16050","unresolved":false,"context_lines":[{"line_number":171,"context_line":"             actions on the share network\u0027s endpoint:"},{"line_number":172,"context_line":"             \u0027update_security_service\u0027, \u0027update_security_service_check\u0027 and"},{"line_number":173,"context_line":"             \u0027add_security_service_check\u0027."},{"line_number":174,"context_line":"    * 2.64 - Added \u0027force\u0027 field to extend share api, which can extend share"},{"line_number":175,"context_line":"             directly without validation through share scheduler."},{"line_number":176,"context_line":"    * 2.65 - Added new share action to soft delete share to recycle bin or"},{"line_number":177,"context_line":"             restore share from recycle bin. Also, a new parameter called"},{"line_number":178,"context_line":"             `is_soft_deleted` was added so administrators can filter out"}],"source_content_type":"text/x-python","patch_set":23,"id":"5c9e29a8_66dea909","line":175,"range":{"start_line":174,"start_character":13,"end_line":175,"end_character":65},"in_reply_to":"7702def6_d288aa57","updated":"2021-09-03 09:12:34.000000000","message":"Done","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bf2b823ef7cffb318baa35685f9399aa2f9e16de","unresolved":true,"context_lines":[{"line_number":175,"context_line":"             directly without validation through share scheduler."},{"line_number":176,"context_line":"    * 2.65 - Added new share action to soft delete share to recycle bin or"},{"line_number":177,"context_line":"             restore share from recycle bin. Also, a new parameter called"},{"line_number":178,"context_line":"             `is_soft_deleted` was added so administrators can filter out"},{"line_number":179,"context_line":"             shares in the recycle bin while listing shares."},{"line_number":180,"context_line":"\"\"\""},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"f0d5b573_5a80c110","line":178,"range":{"start_line":178,"start_character":44,"end_line":178,"end_character":58},"updated":"2021-09-03 07:35:50.000000000","message":"users","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c02f17e4371992d25bcdbbfcf735ea06d3e16050","unresolved":false,"context_lines":[{"line_number":175,"context_line":"             directly without validation through share scheduler."},{"line_number":176,"context_line":"    * 2.65 - Added new share action to soft delete share to recycle bin or"},{"line_number":177,"context_line":"             restore share from recycle bin. Also, a new parameter called"},{"line_number":178,"context_line":"             `is_soft_deleted` was added so administrators can filter out"},{"line_number":179,"context_line":"             shares in the recycle bin while listing shares."},{"line_number":180,"context_line":"\"\"\""},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"4ea58944_7ae30a43","line":178,"range":{"start_line":178,"start_character":44,"end_line":178,"end_character":58},"in_reply_to":"f0d5b573_5a80c110","updated":"2021-09-03 09:12:34.000000000","message":"Done","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bf2b823ef7cffb318baa35685f9399aa2f9e16de","unresolved":true,"context_lines":[{"line_number":183,"context_line":"# The default api version request is defined to be the"},{"line_number":184,"context_line":"# minimum version of the API supported."},{"line_number":185,"context_line":"_MIN_API_VERSION \u003d \"2.0\""},{"line_number":186,"context_line":"_MAX_API_VERSION \u003d \"2.65\""},{"line_number":187,"context_line":"DEFAULT_API_VERSION \u003d _MIN_API_VERSION"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"69ef13ec_5e2c21b1","line":186,"range":{"start_line":186,"start_character":19,"end_line":186,"end_character":25},"updated":"2021-09-03 07:35:50.000000000","message":"thanks for fixing this up as well","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c02f17e4371992d25bcdbbfcf735ea06d3e16050","unresolved":false,"context_lines":[{"line_number":183,"context_line":"# The default api version request is defined to be the"},{"line_number":184,"context_line":"# minimum version of the API supported."},{"line_number":185,"context_line":"_MIN_API_VERSION \u003d \"2.0\""},{"line_number":186,"context_line":"_MAX_API_VERSION \u003d \"2.65\""},{"line_number":187,"context_line":"DEFAULT_API_VERSION \u003d _MIN_API_VERSION"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"da391048_7d3234db","line":186,"range":{"start_line":186,"start_character":19,"end_line":186,"end_character":25},"in_reply_to":"69ef13ec_5e2c21b1","updated":"2021-09-03 09:12:34.000000000","message":"Done","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"342455b2a78619d6c8a5504a254657d080680840","unresolved":true,"context_lines":[{"line_number":171,"context_line":"             actions on the share network\u0027s endpoint:"},{"line_number":172,"context_line":"             \u0027update_security_service\u0027, \u0027update_security_service_check\u0027 and"},{"line_number":173,"context_line":"             \u0027add_security_service_check\u0027."},{"line_number":174,"context_line":"    * 2.64 - Added \u0027force\u0027 field to extend share api, which can extend share"},{"line_number":175,"context_line":"             directly without validation through share scheduler."},{"line_number":176,"context_line":"    * 2.65 - Added ability to set scheduler hints via the share create API."},{"line_number":177,"context_line":"    * 2.66 - Added new share action to soft delete share to recycle bin or"},{"line_number":178,"context_line":"             restore share from recycle bin. Also, a new parameter called"}],"source_content_type":"text/x-python","patch_set":27,"id":"305ac104_40f220ab","line":175,"range":{"start_line":174,"start_character":0,"end_line":175,"end_character":65},"updated":"2021-12-16 11:56:57.000000000","message":"This is being shown as a modification added by you change, but it isn\u0027t the case, right? Perhaps it\u0027s an issue with rebase...","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6769d17b1fc8b7415ae188b2e7aa634e19b0968b","unresolved":false,"context_lines":[{"line_number":171,"context_line":"             actions on the share network\u0027s endpoint:"},{"line_number":172,"context_line":"             \u0027update_security_service\u0027, \u0027update_security_service_check\u0027 and"},{"line_number":173,"context_line":"             \u0027add_security_service_check\u0027."},{"line_number":174,"context_line":"    * 2.64 - Added \u0027force\u0027 field to extend share api, which can extend share"},{"line_number":175,"context_line":"             directly without validation through share scheduler."},{"line_number":176,"context_line":"    * 2.65 - Added ability to set scheduler hints via the share create API."},{"line_number":177,"context_line":"    * 2.66 - Added new share action to soft delete share to recycle bin or"},{"line_number":178,"context_line":"             restore share from recycle bin. Also, a new parameter called"}],"source_content_type":"text/x-python","patch_set":27,"id":"3a2e1b28_b0745bb0","line":175,"range":{"start_line":174,"start_character":0,"end_line":175,"end_character":65},"in_reply_to":"305ac104_40f220ab","updated":"2021-12-17 07:27:44.000000000","message":"api 2.64 is a patch that I submitted and merged before, but I forgot to update here, so I want submit it together this time.","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":170,"context_line":"             actions on the share network\u0027s endpoint:"},{"line_number":171,"context_line":"             \u0027update_security_service\u0027, \u0027update_security_service_check\u0027 and"},{"line_number":172,"context_line":"             \u0027add_security_service_check\u0027."},{"line_number":173,"context_line":"    * 2.64 - Added \u0027force\u0027 field to extend share api, which can extend share"},{"line_number":174,"context_line":"             directly without validation through share scheduler."},{"line_number":175,"context_line":"    * 2.65 - Added ability to set affinity scheduler hints via the share"},{"line_number":176,"context_line":"             create API."},{"line_number":177,"context_line":"    * 2.66 - Added filter search by group spec for share group type list."}],"source_content_type":"text/x-python","patch_set":40,"id":"2e7e1b10_b69e4894","line":174,"range":{"start_line":173,"start_character":0,"end_line":174,"end_character":65},"updated":"2022-02-17 01:58:10.000000000","message":"Thanks!","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":170,"context_line":"             actions on the share network\u0027s endpoint:"},{"line_number":171,"context_line":"             \u0027update_security_service\u0027, \u0027update_security_service_check\u0027 and"},{"line_number":172,"context_line":"             \u0027add_security_service_check\u0027."},{"line_number":173,"context_line":"    * 2.64 - Added \u0027force\u0027 field to extend share api, which can extend share"},{"line_number":174,"context_line":"             directly without validation through share scheduler."},{"line_number":175,"context_line":"    * 2.65 - Added ability to set affinity scheduler hints via the share"},{"line_number":176,"context_line":"             create API."},{"line_number":177,"context_line":"    * 2.66 - Added filter search by group spec for share group type list."}],"source_content_type":"text/x-python","patch_set":40,"id":"5c59614f_9fb22fff","line":174,"range":{"start_line":173,"start_character":0,"end_line":174,"end_character":65},"in_reply_to":"2e7e1b10_b69e4894","updated":"2022-02-18 08:25:48.000000000","message":"Done","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"}],"manila/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"342455b2a78619d6c8a5504a254657d080680840","unresolved":true,"context_lines":[{"line_number":358,"context_line":"  Added \u0027force\u0027 field to extend share api, which can extend share directly"},{"line_number":359,"context_line":"  without go through share scheduler."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"2.65"},{"line_number":362,"context_line":"----"},{"line_number":363,"context_line":"  Added ability to specify \"scheduler_hints\" in the request body of the POST"},{"line_number":364,"context_line":"  /shares request. These hints will invoke Affinity/Anti-Affinity scheduler"}],"source_content_type":"text/x-rst","patch_set":27,"id":"959a3afb_6b8bc8ce","line":361,"updated":"2021-12-16 11:56:57.000000000","message":"Please add (Maximum in Xena)","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6769d17b1fc8b7415ae188b2e7aa634e19b0968b","unresolved":false,"context_lines":[{"line_number":358,"context_line":"  Added \u0027force\u0027 field to extend share api, which can extend share directly"},{"line_number":359,"context_line":"  without go through share scheduler."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"2.65"},{"line_number":362,"context_line":"----"},{"line_number":363,"context_line":"  Added ability to specify \"scheduler_hints\" in the request body of the POST"},{"line_number":364,"context_line":"  /shares request. These hints will invoke Affinity/Anti-Affinity scheduler"}],"source_content_type":"text/x-rst","patch_set":27,"id":"e1f0fdb5_a5d0b9c4","line":361,"in_reply_to":"959a3afb_6b8bc8ce","updated":"2021-12-17 07:27:44.000000000","message":"Done","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"afa395599ae1b0ec35c69825fdb7866a299112c0","unresolved":false,"context_lines":[{"line_number":358,"context_line":"  Added \u0027force\u0027 field to extend share api, which can extend share directly"},{"line_number":359,"context_line":"  without go through share scheduler."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"2.65"},{"line_number":362,"context_line":"----"},{"line_number":363,"context_line":"  Added ability to specify \"scheduler_hints\" in the request body of the POST"},{"line_number":364,"context_line":"  /shares request. These hints will invoke Affinity/Anti-Affinity scheduler"}],"source_content_type":"text/x-rst","patch_set":27,"id":"8ef35a75_8607a7db","line":361,"in_reply_to":"e1f0fdb5_a5d0b9c4","updated":"2021-12-20 01:20:17.000000000","message":"after rebase, the Maximum in Xena is 2.65. i will restore this.","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"}],"manila/api/openstack/wsgi.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bf2b823ef7cffb318baa35685f9399aa2f9e16de","unresolved":true,"context_lines":[{"line_number":1250,"context_line":"        LOG.debug(msg, {\u0027resource\u0027: self.resource_name, \u0027id\u0027: id,"},{"line_number":1251,"context_line":"                        \u0027update\u0027: update})"},{"line_number":1252,"context_line":"        try:"},{"line_number":1253,"context_line":"            if self.resource_name \u003d\u003d \u0027share\u0027:"},{"line_number":1254,"context_line":"                resource \u003d self._get(context, id)"},{"line_number":1255,"context_line":"                if resource.get(\u0027is_soft_deleted\u0027):"},{"line_number":1256,"context_line":"                    msg \u003d _(\"status cannot be reset for share \u0027%s\u0027 \""},{"line_number":1257,"context_line":"                            \"since it has been soft deleted.\") % id"},{"line_number":1258,"context_line":"                    raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":1259,"context_line":"            self._update(context, id, update)"},{"line_number":1260,"context_line":"        except exception.NotFound as e:"},{"line_number":1261,"context_line":"            raise webob.exc.HTTPNotFound(six.text_type(e))"}],"source_content_type":"text/x-python","patch_set":23,"id":"76a6d808_c8525297","line":1258,"range":{"start_line":1253,"start_character":12,"end_line":1258,"end_character":60},"updated":"2021-09-03 07:35:50.000000000","message":"You should add this within the _update method inside shares - you can avoid checking for the resource name, and its more readable/maintainable to contain the logic within the shares API, rather than here..","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c02f17e4371992d25bcdbbfcf735ea06d3e16050","unresolved":false,"context_lines":[{"line_number":1250,"context_line":"        LOG.debug(msg, {\u0027resource\u0027: self.resource_name, \u0027id\u0027: id,"},{"line_number":1251,"context_line":"                        \u0027update\u0027: update})"},{"line_number":1252,"context_line":"        try:"},{"line_number":1253,"context_line":"            if self.resource_name \u003d\u003d \u0027share\u0027:"},{"line_number":1254,"context_line":"                resource \u003d self._get(context, id)"},{"line_number":1255,"context_line":"                if resource.get(\u0027is_soft_deleted\u0027):"},{"line_number":1256,"context_line":"                    msg \u003d _(\"status cannot be reset for share \u0027%s\u0027 \""},{"line_number":1257,"context_line":"                            \"since it has been soft deleted.\") % id"},{"line_number":1258,"context_line":"                    raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":1259,"context_line":"            self._update(context, id, update)"},{"line_number":1260,"context_line":"        except exception.NotFound as e:"},{"line_number":1261,"context_line":"            raise webob.exc.HTTPNotFound(six.text_type(e))"}],"source_content_type":"text/x-python","patch_set":23,"id":"be03d67e_57038105","line":1258,"range":{"start_line":1253,"start_character":12,"end_line":1258,"end_character":60},"in_reply_to":"76a6d808_c8525297","updated":"2021-09-03 09:12:34.000000000","message":"ok, i move it.","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"}],"manila/api/v1/share_snapshots.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":193,"context_line":"            msg \u003d _(\"Snapshots cannot be created for share \u0027%s\u0027 \""},{"line_number":194,"context_line":"                    \"since it has been soft deleted.\") % share_id"},{"line_number":195,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        LOG.info(\"Create snapshot from share %s\","},{"line_number":198,"context_line":"                 share_id, context\u003dcontext)"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"d23a393e_fe1b3126","line":196,"updated":"2021-08-31 01:25:07.000000000","message":"we should do the same when creating share replicas, shouldn\u0027t we?","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"087e20317b24e7ee06ee61e6ebe55a5f43005aee","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            msg \u003d _(\"Snapshots cannot be created for share \u0027%s\u0027 \""},{"line_number":194,"context_line":"                    \"since it has been soft deleted.\") % share_id"},{"line_number":195,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        LOG.info(\"Create snapshot from share %s\","},{"line_number":198,"context_line":"                 share_id, context\u003dcontext)"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"8179411f_ef3efcc7","line":196,"in_reply_to":"2ca13ada_d99642bd","updated":"2021-08-31 10:11:07.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":true,"context_lines":[{"line_number":193,"context_line":"            msg \u003d _(\"Snapshots cannot be created for share \u0027%s\u0027 \""},{"line_number":194,"context_line":"                    \"since it has been soft deleted.\") % share_id"},{"line_number":195,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        LOG.info(\"Create snapshot from share %s\","},{"line_number":198,"context_line":"                 share_id, context\u003dcontext)"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"2ca13ada_d99642bd","line":196,"in_reply_to":"d23a393e_fe1b3126","updated":"2021-08-31 07:24:19.000000000","message":"yes, should check that.","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"342455b2a78619d6c8a5504a254657d080680840","unresolved":true,"context_lines":[{"line_number":195,"context_line":"        if share[\u0027is_soft_deleted\u0027]:"},{"line_number":196,"context_line":"            msg \u003d _(\"Snapshots cannot be created for share \u0027%s\u0027 \""},{"line_number":197,"context_line":"                    \"since it has been soft deleted.\") % share_id"},{"line_number":198,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        LOG.info(\"Create snapshot from share %s\","},{"line_number":201,"context_line":"                 share_id, context\u003dcontext)"}],"source_content_type":"text/x-python","patch_set":27,"id":"37482909_f9ae8654","line":198,"range":{"start_line":198,"start_character":18,"end_line":198,"end_character":52},"updated":"2021-12-16 11:56:57.000000000","message":"Shouldn\u0027t this raise an HTTP exception?\nPerhaps HTTPConflict or BadRequest","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6769d17b1fc8b7415ae188b2e7aa634e19b0968b","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        if share[\u0027is_soft_deleted\u0027]:"},{"line_number":196,"context_line":"            msg \u003d _(\"Snapshots cannot be created for share \u0027%s\u0027 \""},{"line_number":197,"context_line":"                    \"since it has been soft deleted.\") % share_id"},{"line_number":198,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        LOG.info(\"Create snapshot from share %s\","},{"line_number":201,"context_line":"                 share_id, context\u003dcontext)"}],"source_content_type":"text/x-python","patch_set":27,"id":"841f6408_943c9315","line":198,"range":{"start_line":198,"start_character":18,"end_line":198,"end_character":52},"in_reply_to":"37482909_f9ae8654","updated":"2021-12-17 07:27:44.000000000","message":"yes, i will fix it.","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"}],"manila/api/v1/share_unmanage.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"342455b2a78619d6c8a5504a254657d080680840","unresolved":true,"context_lines":[{"line_number":40,"context_line":"            if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":41,"context_line":"                msg \u003d _(\"Share \u0027%s cannot be unmanaged, \""},{"line_number":42,"context_line":"                        \"since it has been soft deleted.\") % share[\u0027id\u0027]"},{"line_number":43,"context_line":"                raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":44,"context_line":"            if share.get(\u0027has_replicas\u0027):"},{"line_number":45,"context_line":"                msg \u003d _(\"Share %s has replicas. It cannot be unmanaged \""},{"line_number":46,"context_line":"                        \"until all replicas are removed.\") % share[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":27,"id":"169a044e_083ec612","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":56},"updated":"2021-12-16 11:56:57.000000000","message":"Same about raising an HTTP like exception","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6769d17b1fc8b7415ae188b2e7aa634e19b0968b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":41,"context_line":"                msg \u003d _(\"Share \u0027%s cannot be unmanaged, \""},{"line_number":42,"context_line":"                        \"since it has been soft deleted.\") % share[\u0027id\u0027]"},{"line_number":43,"context_line":"                raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":44,"context_line":"            if share.get(\u0027has_replicas\u0027):"},{"line_number":45,"context_line":"                msg \u003d _(\"Share %s has replicas. It cannot be unmanaged \""},{"line_number":46,"context_line":"                        \"until all replicas are removed.\") % share[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":27,"id":"228f2dd2_c763cce8","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":56},"in_reply_to":"169a044e_083ec612","updated":"2021-12-17 07:27:44.000000000","message":"has change to HTTPForbidden.","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"41bb19be9362dd6a4b8485a608a380749f35d0b7","unresolved":true,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        try:"},{"line_number":40,"context_line":"            share \u003d self.share_api.get(context, id)"},{"line_number":41,"context_line":"            if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":42,"context_line":"                msg \u003d _(\"Share \u0027%s cannot be unmanaged, \""},{"line_number":43,"context_line":"                        \"since it has been soft deleted.\") % share[\u0027id\u0027]"},{"line_number":44,"context_line":"                raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":45,"context_line":"            if share.get(\u0027has_replicas\u0027):"},{"line_number":46,"context_line":"                msg \u003d _(\"Share %s has replicas. It cannot be unmanaged \""},{"line_number":47,"context_line":"                        \"until all replicas are removed.\") % share[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":40,"id":"6d6d34ab_d40a8489","line":44,"range":{"start_line":41,"start_character":12,"end_line":44,"end_character":56},"updated":"2022-02-16 21:17:19.000000000","message":"not being covered by unit tests","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        try:"},{"line_number":40,"context_line":"            share \u003d self.share_api.get(context, id)"},{"line_number":41,"context_line":"            if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":42,"context_line":"                msg \u003d _(\"Share \u0027%s cannot be unmanaged, \""},{"line_number":43,"context_line":"                        \"since it has been soft deleted.\") % share[\u0027id\u0027]"},{"line_number":44,"context_line":"                raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":45,"context_line":"            if share.get(\u0027has_replicas\u0027):"},{"line_number":46,"context_line":"                msg \u003d _(\"Share %s has replicas. It cannot be unmanaged \""},{"line_number":47,"context_line":"                        \"until all replicas are removed.\") % share[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":40,"id":"7deaf22a_dc758a42","line":44,"range":{"start_line":41,"start_character":12,"end_line":44,"end_character":56},"in_reply_to":"6d6d34ab_d40a8489","updated":"2022-02-18 08:25:48.000000000","message":"have added in manila/tests/api/v1/test_share_unmanage.py#124","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"}],"manila/api/v1/shares.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"796fa697ff8c1fd4854e1b5187d5135ff4ed4fda","unresolved":true,"context_lines":[{"line_number":534,"context_line":"            context, id, body, \u0027os-extend\u0027)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":537,"context_line":"            msg \u003d _(\"Cannot extend for share \u0027%s\u0027 \""},{"line_number":538,"context_line":"                    \"since it has been soft deleted.\") % id"},{"line_number":539,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":540,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"f5157935_24284220","line":537,"range":{"start_line":537,"start_character":35,"end_line":537,"end_character":38},"updated":"2021-09-01 18:42:02.000000000","message":"remove","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":false,"context_lines":[{"line_number":534,"context_line":"            context, id, body, \u0027os-extend\u0027)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":537,"context_line":"            msg \u003d _(\"Cannot extend for share \u0027%s\u0027 \""},{"line_number":538,"context_line":"                    \"since it has been soft deleted.\") % id"},{"line_number":539,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":540,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"d4d28027_fe83e9cf","line":537,"range":{"start_line":537,"start_character":35,"end_line":537,"end_character":38},"in_reply_to":"f5157935_24284220","updated":"2021-09-02 10:18:39.000000000","message":"Done","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"796fa697ff8c1fd4854e1b5187d5135ff4ed4fda","unresolved":true,"context_lines":[{"line_number":554,"context_line":"            context, id, body, \u0027os-shrink\u0027)"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":557,"context_line":"            msg \u003d _(\"Cannot shrink for share \u0027%s\u0027 \""},{"line_number":558,"context_line":"                    \"since it has been soft deleted.\") % id"},{"line_number":559,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"05dfae1f_6f967722","line":557,"range":{"start_line":557,"start_character":35,"end_line":557,"end_character":38},"updated":"2021-09-01 18:42:02.000000000","message":"remove","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":false,"context_lines":[{"line_number":554,"context_line":"            context, id, body, \u0027os-shrink\u0027)"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":557,"context_line":"            msg \u003d _(\"Cannot shrink for share \u0027%s\u0027 \""},{"line_number":558,"context_line":"                    \"since it has been soft deleted.\") % id"},{"line_number":559,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"4832067c_643e693a","line":557,"range":{"start_line":557,"start_character":35,"end_line":557,"end_character":38},"in_reply_to":"05dfae1f_6f967722","updated":"2021-09-02 10:18:39.000000000","message":"Done","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"342455b2a78619d6c8a5504a254657d080680840","unresolved":true,"context_lines":[{"line_number":201,"context_line":"            \u0027display_description\u0027, \u0027limit\u0027, \u0027offset\u0027, \u0027is_soft_deleted\u0027)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    @wsgi.Controller.authorize"},{"line_number":204,"context_line":"    def update(self, req, id, body):"},{"line_number":205,"context_line":"        \"\"\"Update a share.\"\"\""},{"line_number":206,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":207,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"e37ecb1c_bf742864","line":204,"updated":"2021-12-16 11:56:57.000000000","message":"will we allow shares in the recycle bin to be updated?","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6769d17b1fc8b7415ae188b2e7aa634e19b0968b","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            \u0027display_description\u0027, \u0027limit\u0027, \u0027offset\u0027, \u0027is_soft_deleted\u0027)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    @wsgi.Controller.authorize"},{"line_number":204,"context_line":"    def update(self, req, id, body):"},{"line_number":205,"context_line":"        \"\"\"Update a share.\"\"\""},{"line_number":206,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":207,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"69481c50_00bdd7c7","line":204,"in_reply_to":"e37ecb1c_bf742864","updated":"2021-12-17 07:27:44.000000000","message":"no, we don\u0027t allow,,just like we can not rename a file in window recyle bin.\nI\u0027m going to add restrictions","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"342455b2a78619d6c8a5504a254657d080680840","unresolved":true,"context_lines":[{"line_number":452,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":453,"context_line":"            msg \u003d _(\"Cannot allow access for share \u0027%s\u0027 \""},{"line_number":454,"context_line":"                    \"since it has been soft deleted.\") % id"},{"line_number":455,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":456,"context_line":"        share_network_id \u003d share.get(\u0027share_network_id\u0027)"},{"line_number":457,"context_line":"        if share_network_id:"},{"line_number":458,"context_line":"            share_network \u003d db.share_network_get(context, share_network_id)"}],"source_content_type":"text/x-python","patch_set":27,"id":"0babf73d_4b115460","line":455,"range":{"start_line":455,"start_character":12,"end_line":455,"end_character":52},"updated":"2021-12-16 11:56:57.000000000","message":"Maybe raise something HTTP-like?","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6769d17b1fc8b7415ae188b2e7aa634e19b0968b","unresolved":false,"context_lines":[{"line_number":452,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":453,"context_line":"            msg \u003d _(\"Cannot allow access for share \u0027%s\u0027 \""},{"line_number":454,"context_line":"                    \"since it has been soft deleted.\") % id"},{"line_number":455,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":456,"context_line":"        share_network_id \u003d share.get(\u0027share_network_id\u0027)"},{"line_number":457,"context_line":"        if share_network_id:"},{"line_number":458,"context_line":"            share_network \u003d db.share_network_get(context, share_network_id)"}],"source_content_type":"text/x-python","patch_set":27,"id":"176faa66_7b57176e","line":455,"range":{"start_line":455,"start_character":12,"end_line":455,"end_character":52},"in_reply_to":"0babf73d_4b115460","updated":"2021-12-17 07:27:44.000000000","message":"Done","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"342455b2a78619d6c8a5504a254657d080680840","unresolved":true,"context_lines":[{"line_number":504,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":505,"context_line":"            msg \u003d _(\"Cannot deny access for share \u0027%s\u0027 \""},{"line_number":506,"context_line":"                    \"since it has been soft deleted.\") % id"},{"line_number":507,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"        share_network_id \u003d share.get(\u0027share_network_id\u0027, None)"},{"line_number":510,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"7de128f4_5c735d39","line":507,"range":{"start_line":507,"start_character":12,"end_line":507,"end_character":52},"updated":"2021-12-16 11:56:57.000000000","message":"same as above, and the same question for the below additions too :)","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6769d17b1fc8b7415ae188b2e7aa634e19b0968b","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":505,"context_line":"            msg \u003d _(\"Cannot deny access for share \u0027%s\u0027 \""},{"line_number":506,"context_line":"                    \"since it has been soft deleted.\") % id"},{"line_number":507,"context_line":"            raise exception.InvalidShare(reason\u003dmsg)"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"        share_network_id \u003d share.get(\u0027share_network_id\u0027, None)"},{"line_number":510,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5de7447e_339d1241","line":507,"range":{"start_line":507,"start_character":12,"end_line":507,"end_character":52},"in_reply_to":"7de128f4_5c735d39","updated":"2021-12-17 07:27:44.000000000","message":"Done","commit_id":"86bc3dee190fc163f738b54a24458cf20008ed22"}],"manila/api/v2/share_instances.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":94,"context_line":"            parent_share \u003d db.share_get(context, instance[\u0027share_id\u0027])"},{"line_number":95,"context_line":"            # cat not show the share instance that parent share has been"},{"line_number":96,"context_line":"            # soft deleted."},{"line_number":97,"context_line":"            if parent_share[\u0027is_soft_deleted\u0027]:"},{"line_number":98,"context_line":"                raise exception.NotFound"},{"line_number":99,"context_line":"        except exception.NotFound:"},{"line_number":100,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"8ef0e2a7_b51fc113","line":98,"range":{"start_line":97,"start_character":12,"end_line":98,"end_character":40},"updated":"2021-08-31 01:25:07.000000000","message":"We are able to see the share, right?\nIf so, shouldn\u0027t we allow people to see share instances as well?","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"087e20317b24e7ee06ee61e6ebe55a5f43005aee","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            parent_share \u003d db.share_get(context, instance[\u0027share_id\u0027])"},{"line_number":95,"context_line":"            # cat not show the share instance that parent share has been"},{"line_number":96,"context_line":"            # soft deleted."},{"line_number":97,"context_line":"            if parent_share[\u0027is_soft_deleted\u0027]:"},{"line_number":98,"context_line":"                raise exception.NotFound"},{"line_number":99,"context_line":"        except exception.NotFound:"},{"line_number":100,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"33b6974e_f40a99be","line":98,"range":{"start_line":97,"start_character":12,"end_line":98,"end_character":40},"in_reply_to":"1489320b_6bd14b6b","updated":"2021-08-31 10:11:07.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":true,"context_lines":[{"line_number":94,"context_line":"            parent_share \u003d db.share_get(context, instance[\u0027share_id\u0027])"},{"line_number":95,"context_line":"            # cat not show the share instance that parent share has been"},{"line_number":96,"context_line":"            # soft deleted."},{"line_number":97,"context_line":"            if parent_share[\u0027is_soft_deleted\u0027]:"},{"line_number":98,"context_line":"                raise exception.NotFound"},{"line_number":99,"context_line":"        except exception.NotFound:"},{"line_number":100,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1489320b_6bd14b6b","line":98,"range":{"start_line":97,"start_character":12,"end_line":98,"end_character":40},"in_reply_to":"8ef0e2a7_b51fc113","updated":"2021-08-31 07:24:19.000000000","message":"And as I thought about it, There is no need to restrict viewing operations. i will remove this.\nFor a share in the recycle bin, There is no need to restrict any viewing operations.","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":73,"context_line":"        instances \u003d db.share_instances_get_all(context)"},{"line_number":74,"context_line":"        return self._view_builder.detail_list(req, instances)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @wsgi.Controller.api_version(\"2.35\", \"2.65\")  # noqa"},{"line_number":77,"context_line":"    @wsgi.Controller.authorize"},{"line_number":78,"context_line":"    def index(self, req):  # pylint: disable\u003dfunction-redefined  # noqa F811"},{"line_number":79,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":40,"id":"39f5f81b_dd66e1e3","line":76,"range":{"start_line":76,"start_character":40,"end_line":76,"end_character":47},"updated":"2022-02-17 01:58:10.000000000","message":"this has to be \"2.68\"","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        instances \u003d db.share_instances_get_all(context)"},{"line_number":74,"context_line":"        return self._view_builder.detail_list(req, instances)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @wsgi.Controller.api_version(\"2.35\", \"2.65\")  # noqa"},{"line_number":77,"context_line":"    @wsgi.Controller.authorize"},{"line_number":78,"context_line":"    def index(self, req):  # pylint: disable\u003dfunction-redefined  # noqa F811"},{"line_number":79,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":40,"id":"277389d2_9db72a3a","line":76,"range":{"start_line":76,"start_character":40,"end_line":76,"end_character":47},"in_reply_to":"39f5f81b_dd66e1e3","updated":"2022-02-18 08:25:48.000000000","message":"Done","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"41bb19be9362dd6a4b8485a608a380749f35d0b7","unresolved":true,"context_lines":[{"line_number":85,"context_line":"        instances \u003d db.share_instances_get_all(context, filters)"},{"line_number":86,"context_line":"        return self._view_builder.detail_list(req, instances)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @wsgi.Controller.api_version(\"2.69\")  # noqa"},{"line_number":89,"context_line":"    @wsgi.Controller.authorize"},{"line_number":90,"context_line":"    def index(self, req):  # pylint: disable\u003dfunction-redefined  # noqa F811"},{"line_number":91,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":92,"context_line":"        filters \u003d {}"},{"line_number":93,"context_line":"        filters.update(req.GET)"},{"line_number":94,"context_line":"        common.remove_invalid_options("},{"line_number":95,"context_line":"            context, filters, (\u0027export_location_id\u0027, \u0027export_location_path\u0027,"},{"line_number":96,"context_line":"                               \u0027is_soft_deleted\u0027))"},{"line_number":97,"context_line":"        if \u0027is_soft_deleted\u0027 in filters:"},{"line_number":98,"context_line":"            is_soft_deleted \u003d utils.get_bool_from_api_params("},{"line_number":99,"context_line":"                \u0027is_soft_deleted\u0027, filters)"},{"line_number":100,"context_line":"            filters[\u0027is_soft_deleted\u0027] \u003d is_soft_deleted"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        instances \u003d db.share_instances_get_all(context, filters)"},{"line_number":103,"context_line":"        return self._view_builder.detail_list(req, instances)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @wsgi.Controller.api_version(\"2.3\")"},{"line_number":106,"context_line":"    @wsgi.Controller.authorize"}],"source_content_type":"text/x-python","patch_set":40,"id":"09d38f1a_eb08e9ad","line":103,"range":{"start_line":88,"start_character":4,"end_line":103,"end_character":61},"updated":"2022-02-16 21:17:19.000000000","message":"not being covered by unit tests","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        instances \u003d db.share_instances_get_all(context, filters)"},{"line_number":86,"context_line":"        return self._view_builder.detail_list(req, instances)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @wsgi.Controller.api_version(\"2.69\")  # noqa"},{"line_number":89,"context_line":"    @wsgi.Controller.authorize"},{"line_number":90,"context_line":"    def index(self, req):  # pylint: disable\u003dfunction-redefined  # noqa F811"},{"line_number":91,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":92,"context_line":"        filters \u003d {}"},{"line_number":93,"context_line":"        filters.update(req.GET)"},{"line_number":94,"context_line":"        common.remove_invalid_options("},{"line_number":95,"context_line":"            context, filters, (\u0027export_location_id\u0027, \u0027export_location_path\u0027,"},{"line_number":96,"context_line":"                               \u0027is_soft_deleted\u0027))"},{"line_number":97,"context_line":"        if \u0027is_soft_deleted\u0027 in filters:"},{"line_number":98,"context_line":"            is_soft_deleted \u003d utils.get_bool_from_api_params("},{"line_number":99,"context_line":"                \u0027is_soft_deleted\u0027, filters)"},{"line_number":100,"context_line":"            filters[\u0027is_soft_deleted\u0027] \u003d is_soft_deleted"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        instances \u003d db.share_instances_get_all(context, filters)"},{"line_number":103,"context_line":"        return self._view_builder.detail_list(req, instances)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @wsgi.Controller.api_version(\"2.3\")"},{"line_number":106,"context_line":"    @wsgi.Controller.authorize"}],"source_content_type":"text/x-python","patch_set":40,"id":"4511c654_58ff1ca8","line":103,"range":{"start_line":88,"start_character":4,"end_line":103,"end_character":61},"in_reply_to":"09d38f1a_eb08e9ad","updated":"2022-02-18 08:25:48.000000000","message":"has added test for it in manila/test/api/v2/test_share_instances.py#71","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"}],"manila/api/v2/share_replicas.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"41bb19be9362dd6a4b8485a608a380749f35d0b7","unresolved":true,"context_lines":[{"line_number":160,"context_line":"            msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":161,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_id)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        if share_ref.get(\u0027is_soft_deleted\u0027):"},{"line_number":164,"context_line":"            msg \u003d _(\"Replica cannot be created for share \u0027%s\u0027 \""},{"line_number":165,"context_line":"                    \"since it has been soft deleted.\") % share_id"},{"line_number":166,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        share_network_id \u003d share_ref.get(\u0027share_network_id\u0027, None)"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7757b2cb_9136b7d1","line":166,"range":{"start_line":163,"start_character":8,"end_line":166,"end_character":52},"updated":"2022-02-16 21:17:19.000000000","message":"not being covered by unit tests","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            msg \u003d _(\"No share exists with ID %s.\")"},{"line_number":161,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg % share_id)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        if share_ref.get(\u0027is_soft_deleted\u0027):"},{"line_number":164,"context_line":"            msg \u003d _(\"Replica cannot be created for share \u0027%s\u0027 \""},{"line_number":165,"context_line":"                    \"since it has been soft deleted.\") % share_id"},{"line_number":166,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        share_network_id \u003d share_ref.get(\u0027share_network_id\u0027, None)"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"a0d24ae8_28a7ef40","line":166,"range":{"start_line":163,"start_character":8,"end_line":166,"end_character":52},"in_reply_to":"7757b2cb_9136b7d1","updated":"2022-02-18 08:25:48.000000000","message":"test has added. manila/test/api/v2/test_share_replicas.py#378","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"}],"manila/api/v2/share_snapshots.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":127,"context_line":"        try:"},{"line_number":128,"context_line":"            share_ref \u003d self.share_api.get(context, share_id)"},{"line_number":129,"context_line":"        except exception.NotFound:"},{"line_number":130,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":131,"context_line":"        if share_ref.get(\u0027is_soft_deleted\u0027):"},{"line_number":132,"context_line":"            msg \u003d _(\"Can not manage snapshot for share \u0027%s\u0027 \""},{"line_number":133,"context_line":"                    \"since it has been soft deleted.\") % share_id"}],"source_content_type":"text/x-python","patch_set":40,"id":"71319c60_dedb51fc","line":130,"range":{"start_line":130,"start_character":0,"end_line":130,"end_character":36},"updated":"2022-02-17 01:58:10.000000000","message":"This exception can provide a better message, see current exception from the snippet linked below..","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        try:"},{"line_number":128,"context_line":"            share_ref \u003d self.share_api.get(context, share_id)"},{"line_number":129,"context_line":"        except exception.NotFound:"},{"line_number":130,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":131,"context_line":"        if share_ref.get(\u0027is_soft_deleted\u0027):"},{"line_number":132,"context_line":"            msg \u003d _(\"Can not manage snapshot for share \u0027%s\u0027 \""},{"line_number":133,"context_line":"                    \"since it has been soft deleted.\") % share_id"}],"source_content_type":"text/x-python","patch_set":40,"id":"75457ad1_434066bb","line":130,"range":{"start_line":130,"start_character":0,"end_line":130,"end_character":36},"in_reply_to":"71319c60_dedb51fc","updated":"2022-02-18 08:25:48.000000000","message":"Done","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"41bb19be9362dd6a4b8485a608a380749f35d0b7","unresolved":true,"context_lines":[{"line_number":124,"context_line":"            \u0027display_description\u0027: description,"},{"line_number":125,"context_line":"        }"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        try:"},{"line_number":128,"context_line":"            share_ref \u003d self.share_api.get(context, share_id)"},{"line_number":129,"context_line":"        except exception.NotFound:"},{"line_number":130,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":131,"context_line":"        if share_ref.get(\u0027is_soft_deleted\u0027):"},{"line_number":132,"context_line":"            msg \u003d _(\"Can not manage snapshot for share \u0027%s\u0027 \""},{"line_number":133,"context_line":"                    \"since it has been soft deleted.\") % share_id"},{"line_number":134,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        driver_options \u003d snapshot_data.get(\u0027driver_options\u0027, {})"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"4d09fcf7_98819b3f","line":134,"range":{"start_line":127,"start_character":8,"end_line":134,"end_character":52},"updated":"2022-02-16 21:17:19.000000000","message":"not being covered by unit tests","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":124,"context_line":"            \u0027display_description\u0027: description,"},{"line_number":125,"context_line":"        }"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        try:"},{"line_number":128,"context_line":"            share_ref \u003d self.share_api.get(context, share_id)"},{"line_number":129,"context_line":"        except exception.NotFound:"},{"line_number":130,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":131,"context_line":"        if share_ref.get(\u0027is_soft_deleted\u0027):"},{"line_number":132,"context_line":"            msg \u003d _(\"Can not manage snapshot for share \u0027%s\u0027 \""},{"line_number":133,"context_line":"                    \"since it has been soft deleted.\") % share_id"},{"line_number":134,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        driver_options \u003d snapshot_data.get(\u0027driver_options\u0027, {})"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"befdad20_eb73f40d","line":134,"range":{"start_line":127,"start_character":8,"end_line":134,"end_character":52},"in_reply_to":"4d09fcf7_98819b3f","updated":"2022-02-17 01:58:10.000000000","message":"Also, with this, you now perform share lookup twice. \n\nhttps://github.com/openstack/manila/blob/b7f417afdfe4c4a1d18d533e00d1d5b6a18bb33c/manila/share/api.py#L985-L988\n\nCan you avoid doing it within the share_api?","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            \u0027display_description\u0027: description,"},{"line_number":125,"context_line":"        }"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        try:"},{"line_number":128,"context_line":"            share_ref \u003d self.share_api.get(context, share_id)"},{"line_number":129,"context_line":"        except exception.NotFound:"},{"line_number":130,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":131,"context_line":"        if share_ref.get(\u0027is_soft_deleted\u0027):"},{"line_number":132,"context_line":"            msg \u003d _(\"Can not manage snapshot for share \u0027%s\u0027 \""},{"line_number":133,"context_line":"                    \"since it has been soft deleted.\") % share_id"},{"line_number":134,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        driver_options \u003d snapshot_data.get(\u0027driver_options\u0027, {})"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"320ce24b_eeaf0073","line":134,"range":{"start_line":127,"start_character":8,"end_line":134,"end_character":52},"in_reply_to":"befdad20_eb73f40d","updated":"2022-02-18 08:25:48.000000000","message":"yes, it is no necessary to check again in share_api, i will avoid doing it within the share_api.\nand unit test has added. manila/tests/api/v2/test_share_snapshots.py#811","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"}],"manila/api/v2/shares.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":221,"context_line":"        return self._force_delete(req, id, body)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    @wsgi.Controller.api_version(\u00272.64\u0027)"},{"line_number":224,"context_line":"    @wsgi.action(\u0027soft_delete\u0027)"},{"line_number":225,"context_line":"    def share_soft_delete(self, req, id, body):"},{"line_number":226,"context_line":"        \"\"\"Soft delete a share.\"\"\""},{"line_number":227,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"6aa8c439_8441492c","line":224,"updated":"2021-08-31 01:25:07.000000000","message":"perhaps we need @wsgi.controller.authorize here...","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        return self._force_delete(req, id, body)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    @wsgi.Controller.api_version(\u00272.64\u0027)"},{"line_number":224,"context_line":"    @wsgi.action(\u0027soft_delete\u0027)"},{"line_number":225,"context_line":"    def share_soft_delete(self, req, id, body):"},{"line_number":226,"context_line":"        \"\"\"Soft delete a share.\"\"\""},{"line_number":227,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"c405a27a_c4143007","line":224,"in_reply_to":"6aa8c439_8441492c","updated":"2021-08-31 07:24:19.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"cbcd2ec5c8afc0fb2adf5b0dcde0788df4d2d13c","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        return self._force_delete(req, id, body)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    @wsgi.Controller.api_version(\u00272.64\u0027)"},{"line_number":224,"context_line":"    @wsgi.action(\u0027soft_delete\u0027)"},{"line_number":225,"context_line":"    def share_soft_delete(self, req, id, body):"},{"line_number":226,"context_line":"        \"\"\"Soft delete a share.\"\"\""},{"line_number":227,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"2fd0b61c_f5323350","line":224,"in_reply_to":"c405a27a_c4143007","updated":"2021-09-01 06:25:12.000000000","message":"in manila/share/api.py has use @policy.wrap_check_policy(\u0027share\u0027) to check policy.\nso here is not necessary to add again. just like extend share.","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":243,"context_line":"        return webob.Response(status_int\u003dhttp_client.ACCEPTED)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    @wsgi.Controller.api_version(\u00272.64\u0027)"},{"line_number":246,"context_line":"    @wsgi.action(\u0027restore\u0027)"},{"line_number":247,"context_line":"    def share_restore(self, req, id, body):"},{"line_number":248,"context_line":"        \"\"\"Restore a share from recycle bin.\"\"\""},{"line_number":249,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"48b7d651_8d62e5c0","line":246,"updated":"2021-08-31 01:25:07.000000000","message":"same","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        return webob.Response(status_int\u003dhttp_client.ACCEPTED)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    @wsgi.Controller.api_version(\u00272.64\u0027)"},{"line_number":246,"context_line":"    @wsgi.action(\u0027restore\u0027)"},{"line_number":247,"context_line":"    def share_restore(self, req, id, body):"},{"line_number":248,"context_line":"        \"\"\"Restore a share from recycle bin.\"\"\""},{"line_number":249,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"c06de5f8_e7accfa0","line":246,"in_reply_to":"48b7d651_8d62e5c0","updated":"2021-08-31 07:24:19.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        # If the share not exist in Recycle Bin, the API will return"},{"line_number":260,"context_line":"        # success directly."},{"line_number":261,"context_line":"        is_soft_deleted \u003d share.get(\u0027is_soft_deleted\u0027)"},{"line_number":262,"context_line":"        if not is_soft_deleted:"},{"line_number":263,"context_line":"            return webob.Response(status_int\u003dhttp_client.OK)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        # If the share has reached the expired time, and is been deleting,"},{"line_number":266,"context_line":"        # it too late to restore the share."}],"source_content_type":"text/x-python","patch_set":17,"id":"64f1ea0d_62653eda","line":263,"range":{"start_line":261,"start_character":8,"end_line":263,"end_character":60},"updated":"2021-08-31 01:25:07.000000000","message":"So if I understand correctly, this would allow people to try to restore a share that isn\u0027 t soft deleted, and we\u0027d say the request went okay, right?","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":true,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        # If the share not exist in Recycle Bin, the API will return"},{"line_number":260,"context_line":"        # success directly."},{"line_number":261,"context_line":"        is_soft_deleted \u003d share.get(\u0027is_soft_deleted\u0027)"},{"line_number":262,"context_line":"        if not is_soft_deleted:"},{"line_number":263,"context_line":"            return webob.Response(status_int\u003dhttp_client.OK)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        # If the share has reached the expired time, and is been deleting,"},{"line_number":266,"context_line":"        # it too late to restore the share."}],"source_content_type":"text/x-python","patch_set":17,"id":"c332dd61_11623b1e","line":263,"range":{"start_line":261,"start_character":8,"end_line":263,"end_character":60},"in_reply_to":"64f1ea0d_62653eda","updated":"2021-08-31 07:24:19.000000000","message":"yes,\nhttps://review.opendev.org/c/openstack/manila-specs/+/790320/9/specs/xena/share-support-recycle-bin.rst#146\nI remember Gouthamr told me to do it this way","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"087e20317b24e7ee06ee61e6ebe55a5f43005aee","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        # If the share not exist in Recycle Bin, the API will return"},{"line_number":260,"context_line":"        # success directly."},{"line_number":261,"context_line":"        is_soft_deleted \u003d share.get(\u0027is_soft_deleted\u0027)"},{"line_number":262,"context_line":"        if not is_soft_deleted:"},{"line_number":263,"context_line":"            return webob.Response(status_int\u003dhttp_client.OK)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        # If the share has reached the expired time, and is been deleting,"},{"line_number":266,"context_line":"        # it too late to restore the share."}],"source_content_type":"text/x-python","patch_set":17,"id":"618d3cc4_43f2c779","line":263,"range":{"start_line":261,"start_character":8,"end_line":263,"end_character":60},"in_reply_to":"c332dd61_11623b1e","updated":"2021-08-31 10:11:07.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":285,"context_line":"            msg \u003d _(\"Share %s not found.\") % id"},{"line_number":286,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":287,"context_line":"        params \u003d body.get(\u0027migration_start\u0027)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        if not params:"},{"line_number":290,"context_line":"            raise exc.HTTPBadRequest(explanation\u003d_(\"Request is missing body.\"))"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"14f0b51b_50aedf46","line":288,"updated":"2021-08-31 01:25:07.000000000","message":"should we be blocking migrations to start when a share is soft deleted?","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":true,"context_lines":[{"line_number":285,"context_line":"            msg \u003d _(\"Share %s not found.\") % id"},{"line_number":286,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":287,"context_line":"        params \u003d body.get(\u0027migration_start\u0027)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        if not params:"},{"line_number":290,"context_line":"            raise exc.HTTPBadRequest(explanation\u003d_(\"Request is missing body.\"))"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"c49fb2ad_9d4cff3b","line":288,"in_reply_to":"14f0b51b_50aedf46","updated":"2021-08-31 07:24:19.000000000","message":"maybe we should block here,\nin summary, The share in the recycle bin allows the following operations:\n1: Various Viewing operations\n2: restore share.\n3: delete share.\n\nNothing else is allowed. I\u0027ll put restrictions on everything","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"087e20317b24e7ee06ee61e6ebe55a5f43005aee","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            msg \u003d _(\"Share %s not found.\") % id"},{"line_number":286,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":287,"context_line":"        params \u003d body.get(\u0027migration_start\u0027)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        if not params:"},{"line_number":290,"context_line":"            raise exc.HTTPBadRequest(explanation\u003d_(\"Request is missing body.\"))"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"6e9eefe1_dd358ca4","line":288,"in_reply_to":"c49fb2ad_9d4cff3b","updated":"2021-08-31 10:11:07.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bf2b823ef7cffb318baa35685f9399aa2f9e16de","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":23,"id":"d23fd733_a9be8a6a","updated":"2021-09-03 07:35:50.000000000","message":"Another place we need to prevent operations on soft deleted shares is when managing a snapshot: https://github.com/openstack/manila/blob/2bc27c5678945d92ffd6b885eeaf6f86c9f16f8c/manila/api/v2/share_snapshots.py#L84","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c02f17e4371992d25bcdbbfcf735ea06d3e16050","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"e2fb728a_e01d09c1","in_reply_to":"d23fd733_a9be8a6a","updated":"2021-09-03 09:12:34.000000000","message":"i will add check.","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bf2b823ef7cffb318baa35685f9399aa2f9e16de","unresolved":true,"context_lines":[{"line_number":231,"context_line":"        \"\"\"Soft delete a share.\"\"\""},{"line_number":232,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        LOG.info(\"Soft delete share with id: %s\", id, context\u003dcontext)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        try:"},{"line_number":237,"context_line":"            share \u003d self.share_api.get(context, id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"2b057d6b_d3ad919e","line":234,"range":{"start_line":234,"start_character":8,"end_line":234,"end_character":70},"updated":"2021-09-03 07:35:50.000000000","message":"Log info is appropriate for a unit of work, after the work has been completed. This can be a debug log..","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c02f17e4371992d25bcdbbfcf735ea06d3e16050","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        \"\"\"Soft delete a share.\"\"\""},{"line_number":232,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        LOG.info(\"Soft delete share with id: %s\", id, context\u003dcontext)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        try:"},{"line_number":237,"context_line":"            share \u003d self.share_api.get(context, id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"d9d5bb4f_c00ce90a","line":234,"range":{"start_line":234,"start_character":8,"end_line":234,"end_character":70},"in_reply_to":"2b057d6b_d3ad919e","updated":"2021-09-03 09:12:34.000000000","message":"Done","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bf2b823ef7cffb318baa35685f9399aa2f9e16de","unresolved":true,"context_lines":[{"line_number":239,"context_line":"        except exception.NotFound:"},{"line_number":240,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":241,"context_line":"        except exception.InvalidShare as e:"},{"line_number":242,"context_line":"            raise exc.HTTPForbidden(explanation\u003dstr(e))"},{"line_number":243,"context_line":"        except exception.ShareBusyException as e:"},{"line_number":244,"context_line":"            raise exc.HTTPForbidden(explanation\u003dstr(e))"},{"line_number":245,"context_line":"        except exception.Conflict as e:"}],"source_content_type":"text/x-python","patch_set":23,"id":"b5b08ff1_7e77f78d","line":242,"range":{"start_line":242,"start_character":48,"end_line":242,"end_character":54},"updated":"2021-09-03 07:35:50.000000000","message":"e.msg","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c02f17e4371992d25bcdbbfcf735ea06d3e16050","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        except exception.NotFound:"},{"line_number":240,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":241,"context_line":"        except exception.InvalidShare as e:"},{"line_number":242,"context_line":"            raise exc.HTTPForbidden(explanation\u003dstr(e))"},{"line_number":243,"context_line":"        except exception.ShareBusyException as e:"},{"line_number":244,"context_line":"            raise exc.HTTPForbidden(explanation\u003dstr(e))"},{"line_number":245,"context_line":"        except exception.Conflict as e:"}],"source_content_type":"text/x-python","patch_set":23,"id":"f1659afe_05717b6b","line":242,"range":{"start_line":242,"start_character":48,"end_line":242,"end_character":54},"in_reply_to":"b5b08ff1_7e77f78d","updated":"2021-09-03 09:12:34.000000000","message":"Done","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bf2b823ef7cffb318baa35685f9399aa2f9e16de","unresolved":true,"context_lines":[{"line_number":241,"context_line":"        except exception.InvalidShare as e:"},{"line_number":242,"context_line":"            raise exc.HTTPForbidden(explanation\u003dstr(e))"},{"line_number":243,"context_line":"        except exception.ShareBusyException as e:"},{"line_number":244,"context_line":"            raise exc.HTTPForbidden(explanation\u003dstr(e))"},{"line_number":245,"context_line":"        except exception.Conflict as e:"},{"line_number":246,"context_line":"            raise exc.HTTPConflict(explanation\u003dstr(e))"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"0ba1bb4a_b9093061","line":244,"range":{"start_line":244,"start_character":48,"end_line":244,"end_character":54},"updated":"2021-09-03 07:35:50.000000000","message":"e.msg","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c02f17e4371992d25bcdbbfcf735ea06d3e16050","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        except exception.InvalidShare as e:"},{"line_number":242,"context_line":"            raise exc.HTTPForbidden(explanation\u003dstr(e))"},{"line_number":243,"context_line":"        except exception.ShareBusyException as e:"},{"line_number":244,"context_line":"            raise exc.HTTPForbidden(explanation\u003dstr(e))"},{"line_number":245,"context_line":"        except exception.Conflict as e:"},{"line_number":246,"context_line":"            raise exc.HTTPConflict(explanation\u003dstr(e))"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"5d66e046_c5c86f8f","line":244,"range":{"start_line":244,"start_character":48,"end_line":244,"end_character":54},"in_reply_to":"0ba1bb4a_b9093061","updated":"2021-09-03 09:12:34.000000000","message":"Done","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bf2b823ef7cffb318baa35685f9399aa2f9e16de","unresolved":true,"context_lines":[{"line_number":243,"context_line":"        except exception.ShareBusyException as e:"},{"line_number":244,"context_line":"            raise exc.HTTPForbidden(explanation\u003dstr(e))"},{"line_number":245,"context_line":"        except exception.Conflict as e:"},{"line_number":246,"context_line":"            raise exc.HTTPConflict(explanation\u003dstr(e))"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        return webob.Response(status_int\u003dhttp_client.ACCEPTED)"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"38aa10b1_c82f5574","line":246,"range":{"start_line":246,"start_character":47,"end_line":246,"end_character":53},"updated":"2021-09-03 07:35:50.000000000","message":"e.msg","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c02f17e4371992d25bcdbbfcf735ea06d3e16050","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        except exception.ShareBusyException as e:"},{"line_number":244,"context_line":"            raise exc.HTTPForbidden(explanation\u003dstr(e))"},{"line_number":245,"context_line":"        except exception.Conflict as e:"},{"line_number":246,"context_line":"            raise exc.HTTPConflict(explanation\u003dstr(e))"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        return webob.Response(status_int\u003dhttp_client.ACCEPTED)"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"f4bf58b5_afffe2a9","line":246,"range":{"start_line":246,"start_character":47,"end_line":246,"end_character":53},"in_reply_to":"38aa10b1_c82f5574","updated":"2021-09-03 09:12:34.000000000","message":"Done","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"61370d71eda08922d5dce90b62811ccf2b87c7a5","unresolved":true,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        # If the share has reached the expired time, and is been deleting,"},{"line_number":305,"context_line":"        # it too late to restore the share."},{"line_number":306,"context_line":"        if share[\u0027status\u0027] in [constants.STATUS_DELETING,"},{"line_number":307,"context_line":"                               constants.STATUS_ERROR_DELETING]:"},{"line_number":308,"context_line":"            msg \u003d _(\"Share %s has expired, can not restore.\")"},{"line_number":309,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg % id)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"        self.share_api.restore(context, share)"},{"line_number":312,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"6b9cf033_0e2f1d18","line":309,"range":{"start_line":306,"start_character":8,"end_line":309,"end_character":57},"updated":"2022-02-04 15:54:30.000000000","message":"Deleting and error deleting are not states that are only tied to the recycle bin... The deletion may be triggered by a user as well, so I think we should not mention that the share has expired... Instead, we could only mention that the share is already being deleted...","commit_id":"03fa54edb099342ee51aeb20867b95328901de97"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6eeb724e0fd9ce3688f23510edc3b0e5bb4860ce","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        # If the share has reached the expired time, and is been deleting,"},{"line_number":305,"context_line":"        # it too late to restore the share."},{"line_number":306,"context_line":"        if share[\u0027status\u0027] in [constants.STATUS_DELETING,"},{"line_number":307,"context_line":"                               constants.STATUS_ERROR_DELETING]:"},{"line_number":308,"context_line":"            msg \u003d _(\"Share %s has expired, can not restore.\")"},{"line_number":309,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg % id)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"        self.share_api.restore(context, share)"},{"line_number":312,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"779e29b6_35c54936","line":309,"range":{"start_line":306,"start_character":8,"end_line":309,"end_character":57},"in_reply_to":"6b9cf033_0e2f1d18","updated":"2022-02-07 06:46:04.000000000","message":"yes, i will update the error msg.","commit_id":"03fa54edb099342ee51aeb20867b95328901de97"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"41bb19be9362dd6a4b8485a608a380749f35d0b7","unresolved":true,"context_lines":[{"line_number":66,"context_line":"            share \u003d self.share_api.get(context, share_id)"},{"line_number":67,"context_line":"            snapshot \u003d self.share_api.get_snapshot(context, snapshot_id)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"            if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":70,"context_line":"                msg \u003d _(\"Share \u0027%s cannot revert to snapshot, \""},{"line_number":71,"context_line":"                        \"since it has been soft deleted.\") % share_id"},{"line_number":72,"context_line":"                raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"            # Ensure share supports reverting to a snapshot"},{"line_number":75,"context_line":"            if not share[\u0027revert_to_snapshot_support\u0027]:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7fb0e336_7b5d84b6","line":72,"range":{"start_line":69,"start_character":12,"end_line":72,"end_character":56},"updated":"2022-02-16 21:17:19.000000000","message":"missing coverage for this block","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            share \u003d self.share_api.get(context, share_id)"},{"line_number":67,"context_line":"            snapshot \u003d self.share_api.get_snapshot(context, snapshot_id)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"            if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":70,"context_line":"                msg \u003d _(\"Share \u0027%s cannot revert to snapshot, \""},{"line_number":71,"context_line":"                        \"since it has been soft deleted.\") % share_id"},{"line_number":72,"context_line":"                raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"            # Ensure share supports reverting to a snapshot"},{"line_number":75,"context_line":"            if not share[\u0027revert_to_snapshot_support\u0027]:"}],"source_content_type":"text/x-python","patch_set":40,"id":"50fa657e_ec8ed2c4","line":72,"range":{"start_line":69,"start_character":12,"end_line":72,"end_character":56},"in_reply_to":"7fb0e336_7b5d84b6","updated":"2022-02-18 08:25:48.000000000","message":"has add unit test. manila/tests/api/v2/test_shares.py#264","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":228,"context_line":"        try:"},{"line_number":229,"context_line":"            share \u003d self.share_api.get(context, id)"},{"line_number":230,"context_line":"        except exception.NotFound:"},{"line_number":231,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":232,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":233,"context_line":"            msg \u003d _(\"status cannot be reset for share \u0027%s\u0027 \""},{"line_number":234,"context_line":"                    \"since it has been soft deleted.\") % id"}],"source_content_type":"text/x-python","patch_set":40,"id":"b9dbba0d_ba8363b3","line":231,"range":{"start_line":231,"start_character":18,"end_line":231,"end_character":36},"updated":"2022-02-17 01:58:10.000000000","message":"could use a better message","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        try:"},{"line_number":229,"context_line":"            share \u003d self.share_api.get(context, id)"},{"line_number":230,"context_line":"        except exception.NotFound:"},{"line_number":231,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":232,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":233,"context_line":"            msg \u003d _(\"status cannot be reset for share \u0027%s\u0027 \""},{"line_number":234,"context_line":"                    \"since it has been soft deleted.\") % id"}],"source_content_type":"text/x-python","patch_set":40,"id":"188fbe74_2a3932d5","line":231,"range":{"start_line":231,"start_character":18,"end_line":231,"end_character":36},"in_reply_to":"b9dbba0d_ba8363b3","updated":"2022-02-18 08:25:48.000000000","message":"Done","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":242,"context_line":"        try:"},{"line_number":243,"context_line":"            share \u003d self.share_api.get(context, id)"},{"line_number":244,"context_line":"        except exception.NotFound:"},{"line_number":245,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":246,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":247,"context_line":"            msg \u003d _(\"status cannot be reset for share \u0027%s\u0027 \""},{"line_number":248,"context_line":"                    \"since it has been soft deleted.\") % id"}],"source_content_type":"text/x-python","patch_set":40,"id":"14dd8e86_8a097f14","line":245,"range":{"start_line":245,"start_character":18,"end_line":245,"end_character":36},"updated":"2022-02-17 01:58:10.000000000","message":"same","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        try:"},{"line_number":243,"context_line":"            share \u003d self.share_api.get(context, id)"},{"line_number":244,"context_line":"        except exception.NotFound:"},{"line_number":245,"context_line":"            raise exc.HTTPNotFound()"},{"line_number":246,"context_line":"        if share.get(\u0027is_soft_deleted\u0027):"},{"line_number":247,"context_line":"            msg \u003d _(\"status cannot be reset for share \u0027%s\u0027 \""},{"line_number":248,"context_line":"                    \"since it has been soft deleted.\") % id"}],"source_content_type":"text/x-python","patch_set":40,"id":"9bab1921_1167096f","line":245,"range":{"start_line":245,"start_character":18,"end_line":245,"end_character":36},"in_reply_to":"14dd8e86_8a097f14","updated":"2022-02-18 08:25:48.000000000","message":"Done","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":287,"context_line":"        \"\"\"Restore a share from recycle bin.\"\"\""},{"line_number":288,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        LOG.info(\"Restore share with id: %s\", id, context\u003dcontext)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        try:"},{"line_number":293,"context_line":"            share \u003d self.share_api.get(context, id)"}],"source_content_type":"text/x-python","patch_set":40,"id":"5ad1cb14_e75ea181","line":290,"range":{"start_line":290,"start_character":12,"end_line":290,"end_character":16},"updated":"2022-02-17 01:58:10.000000000","message":"did you want this to be \"debug\" as well - like on line 268\n\nNo need to \"info\" log prior to performing an action...","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        \"\"\"Restore a share from recycle bin.\"\"\""},{"line_number":288,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        LOG.info(\"Restore share with id: %s\", id, context\u003dcontext)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        try:"},{"line_number":293,"context_line":"            share \u003d self.share_api.get(context, id)"}],"source_content_type":"text/x-python","patch_set":40,"id":"aa005219_845cd68b","line":290,"range":{"start_line":290,"start_character":12,"end_line":290,"end_character":16},"in_reply_to":"5ad1cb14_e75ea181","updated":"2022-02-18 08:25:48.000000000","message":"Done","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":306,"context_line":"        if share[\u0027status\u0027] in [constants.STATUS_DELETING,"},{"line_number":307,"context_line":"                               constants.STATUS_ERROR_DELETING]:"},{"line_number":308,"context_line":"            msg \u003d _(\"Share %s is being deleted or error deleted, \""},{"line_number":309,"context_line":"                    \"can not restore.\")"},{"line_number":310,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg % id)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        self.share_api.restore(context, share)"}],"source_content_type":"text/x-python","patch_set":40,"id":"44a5a0d3_a9c81d40","line":309,"range":{"start_line":309,"start_character":22,"end_line":309,"end_character":29},"updated":"2022-02-17 01:58:10.000000000","message":"nit: cannot be","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":306,"context_line":"        if share[\u0027status\u0027] in [constants.STATUS_DELETING,"},{"line_number":307,"context_line":"                               constants.STATUS_ERROR_DELETING]:"},{"line_number":308,"context_line":"            msg \u003d _(\"Share %s is being deleted or error deleted, \""},{"line_number":309,"context_line":"                    \"can not restore.\")"},{"line_number":310,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg % id)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        self.share_api.restore(context, share)"}],"source_content_type":"text/x-python","patch_set":40,"id":"1076f0ab_f1c8235d","line":309,"range":{"start_line":309,"start_character":22,"end_line":309,"end_character":29},"in_reply_to":"44a5a0d3_a9c81d40","updated":"2022-02-18 08:25:48.000000000","message":"Done","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":438,"context_line":"    @wsgi.action(\"reset_task_state\")"},{"line_number":439,"context_line":"    @wsgi.Controller.authorize"},{"line_number":440,"context_line":"    def reset_task_state(self, req, id, body):"},{"line_number":441,"context_line":"        return self._reset_status(req, id, body, status_attr\u003d\u0027task_state\u0027)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"    @wsgi.Controller.api_version(\u00272.0\u0027, \u00272.6\u0027)"},{"line_number":444,"context_line":"    @wsgi.action(\u0027os-allow_access\u0027)"}],"source_content_type":"text/x-python","patch_set":40,"id":"c40fb26f_5b7f5036","line":441,"range":{"start_line":441,"start_character":0,"end_line":441,"end_character":74},"updated":"2022-02-17 01:58:10.000000000","message":"shouldn\u0027t we check for soft deleted share here too?","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":438,"context_line":"    @wsgi.action(\"reset_task_state\")"},{"line_number":439,"context_line":"    @wsgi.Controller.authorize"},{"line_number":440,"context_line":"    def reset_task_state(self, req, id, body):"},{"line_number":441,"context_line":"        return self._reset_status(req, id, body, status_attr\u003d\u0027task_state\u0027)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"    @wsgi.Controller.api_version(\u00272.0\u0027, \u00272.6\u0027)"},{"line_number":444,"context_line":"    @wsgi.action(\u0027os-allow_access\u0027)"}],"source_content_type":"text/x-python","patch_set":40,"id":"6e9bcdaa_36170cdf","line":441,"range":{"start_line":441,"start_character":0,"end_line":441,"end_character":74},"in_reply_to":"c40fb26f_5b7f5036","updated":"2022-02-18 08:25:48.000000000","message":"yes, need add check here. will add check.\nand add corresponding unit tests","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a68b950cc190357516a9a4cf0ff7a445382ce9f5","unresolved":true,"context_lines":[{"line_number":305,"context_line":"        # it too late to restore the share."},{"line_number":306,"context_line":"        if share[\u0027status\u0027] in [constants.STATUS_DELETING,"},{"line_number":307,"context_line":"                               constants.STATUS_ERROR_DELETING]:"},{"line_number":308,"context_line":"            msg \u003d _(\"Share %s is being deleted or error deleted, \""},{"line_number":309,"context_line":"                    \"cannot be restore.\")"},{"line_number":310,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg % id)"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-python","patch_set":46,"id":"d8b1770b_0ef01813","line":308,"range":{"start_line":308,"start_character":50,"end_line":308,"end_character":63},"updated":"2022-02-21 23:54:17.000000000","message":"has suffered an error during deletion","commit_id":"d51eb05c055e1dbb71bb5475917a5bf161f98b41"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a68b950cc190357516a9a4cf0ff7a445382ce9f5","unresolved":true,"context_lines":[{"line_number":306,"context_line":"        if share[\u0027status\u0027] in [constants.STATUS_DELETING,"},{"line_number":307,"context_line":"                               constants.STATUS_ERROR_DELETING]:"},{"line_number":308,"context_line":"            msg \u003d _(\"Share %s is being deleted or error deleted, \""},{"line_number":309,"context_line":"                    \"cannot be restore.\")"},{"line_number":310,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg % id)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        self.share_api.restore(context, share)"}],"source_content_type":"text/x-python","patch_set":46,"id":"8789e676_6e867a2d","line":309,"range":{"start_line":309,"start_character":31,"end_line":309,"end_character":38},"updated":"2022-02-21 23:54:17.000000000","message":"restored","commit_id":"d51eb05c055e1dbb71bb5475917a5bf161f98b41"}],"manila/common/config.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"796fa697ff8c1fd4854e1b5187d5135ff4ed4fda","unresolved":true,"context_lines":[{"line_number":127,"context_line":"                help\u003d\"Specify list of protocols to be allowed for share \""},{"line_number":128,"context_line":"                     \"creation. Available values are \u0027%s\u0027\" %"},{"line_number":129,"context_line":"                     list(constants.SUPPORTED_SHARE_PROTOCOLS)),"},{"line_number":130,"context_line":"    cfg.IntOpt(\u0027soft_deleted_share_hold_time\u0027,"},{"line_number":131,"context_line":"               default\u003d604800,"},{"line_number":132,"context_line":"               help\u003d\u0027Maximum time to keep a share in the recycle bin, it \u0027"},{"line_number":133,"context_line":"                    \u0027will be deleted automatically after keep time exceeded\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"26c92c3d_124ee84b","line":130,"range":{"start_line":130,"start_character":16,"end_line":130,"end_character":44},"updated":"2021-09-01 18:42:02.000000000","message":"can we call this option: \"soft_deleted_share_retention_time\"?","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"f63a54e658921f8f2223cdd7347b7248224bf539","unresolved":true,"context_lines":[{"line_number":127,"context_line":"                help\u003d\"Specify list of protocols to be allowed for share \""},{"line_number":128,"context_line":"                     \"creation. Available values are \u0027%s\u0027\" %"},{"line_number":129,"context_line":"                     list(constants.SUPPORTED_SHARE_PROTOCOLS)),"},{"line_number":130,"context_line":"    cfg.IntOpt(\u0027soft_deleted_share_hold_time\u0027,"},{"line_number":131,"context_line":"               default\u003d604800,"},{"line_number":132,"context_line":"               help\u003d\u0027Maximum time to keep a share in the recycle bin, it \u0027"},{"line_number":133,"context_line":"                    \u0027will be deleted automatically after keep time exceeded\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"835cb0d2_ee59890e","line":130,"range":{"start_line":130,"start_character":16,"end_line":130,"end_character":44},"in_reply_to":"26c92c3d_124ee84b","updated":"2021-09-02 00:06:02.000000000","message":"+1","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                help\u003d\"Specify list of protocols to be allowed for share \""},{"line_number":128,"context_line":"                     \"creation. Available values are \u0027%s\u0027\" %"},{"line_number":129,"context_line":"                     list(constants.SUPPORTED_SHARE_PROTOCOLS)),"},{"line_number":130,"context_line":"    cfg.IntOpt(\u0027soft_deleted_share_hold_time\u0027,"},{"line_number":131,"context_line":"               default\u003d604800,"},{"line_number":132,"context_line":"               help\u003d\u0027Maximum time to keep a share in the recycle bin, it \u0027"},{"line_number":133,"context_line":"                    \u0027will be deleted automatically after keep time exceeded\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"566204c5_ed474de8","line":130,"range":{"start_line":130,"start_character":16,"end_line":130,"end_character":44},"in_reply_to":"835cb0d2_ee59890e","updated":"2021-09-02 10:18:39.000000000","message":"Done","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"796fa697ff8c1fd4854e1b5187d5135ff4ed4fda","unresolved":true,"context_lines":[{"line_number":129,"context_line":"                     list(constants.SUPPORTED_SHARE_PROTOCOLS)),"},{"line_number":130,"context_line":"    cfg.IntOpt(\u0027soft_deleted_share_hold_time\u0027,"},{"line_number":131,"context_line":"               default\u003d604800,"},{"line_number":132,"context_line":"               help\u003d\u0027Maximum time to keep a share in the recycle bin, it \u0027"},{"line_number":133,"context_line":"                    \u0027will be deleted automatically after keep time exceeded\u0027),"},{"line_number":134,"context_line":"]"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"f221977c_5d6d066e","line":132,"range":{"start_line":132,"start_character":29,"end_line":132,"end_character":34},"updated":"2021-09-01 18:42:02.000000000","message":"time (in seconds)","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                     list(constants.SUPPORTED_SHARE_PROTOCOLS)),"},{"line_number":130,"context_line":"    cfg.IntOpt(\u0027soft_deleted_share_hold_time\u0027,"},{"line_number":131,"context_line":"               default\u003d604800,"},{"line_number":132,"context_line":"               help\u003d\u0027Maximum time to keep a share in the recycle bin, it \u0027"},{"line_number":133,"context_line":"                    \u0027will be deleted automatically after keep time exceeded\u0027),"},{"line_number":134,"context_line":"]"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"a88b667e_805d0ea5","line":132,"range":{"start_line":132,"start_character":29,"end_line":132,"end_character":34},"in_reply_to":"f221977c_5d6d066e","updated":"2021-09-02 10:18:39.000000000","message":"Done","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"796fa697ff8c1fd4854e1b5187d5135ff4ed4fda","unresolved":true,"context_lines":[{"line_number":130,"context_line":"    cfg.IntOpt(\u0027soft_deleted_share_hold_time\u0027,"},{"line_number":131,"context_line":"               default\u003d604800,"},{"line_number":132,"context_line":"               help\u003d\u0027Maximum time to keep a share in the recycle bin, it \u0027"},{"line_number":133,"context_line":"                    \u0027will be deleted automatically after keep time exceeded\u0027),"},{"line_number":134,"context_line":"]"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"CONF.register_opts(global_opts)"}],"source_content_type":"text/x-python","patch_set":20,"id":"b248a42f_1d6c2e4a","line":133,"range":{"start_line":133,"start_character":57,"end_line":133,"end_character":75},"updated":"2021-09-01 18:42:02.000000000","message":"this amount of time has elapsed.","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    cfg.IntOpt(\u0027soft_deleted_share_hold_time\u0027,"},{"line_number":131,"context_line":"               default\u003d604800,"},{"line_number":132,"context_line":"               help\u003d\u0027Maximum time to keep a share in the recycle bin, it \u0027"},{"line_number":133,"context_line":"                    \u0027will be deleted automatically after keep time exceeded\u0027),"},{"line_number":134,"context_line":"]"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"CONF.register_opts(global_opts)"}],"source_content_type":"text/x-python","patch_set":20,"id":"fe13b1bd_55a08ab2","line":133,"range":{"start_line":133,"start_character":57,"end_line":133,"end_character":75},"in_reply_to":"b248a42f_1d6c2e4a","updated":"2021-09-02 10:18:39.000000000","message":"Done","commit_id":"734584e06bb6d26209af331eda826f5b66278928"}],"manila/db/migrations/alembic/versions/1946cb97bb8d_add_is_soft_deleted_and_scheduled_to_be_deleted_at_to_shares_table.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":17,"id":"b5d3b9a7_b89d0abe","line":1,"updated":"2021-08-31 01:25:07.000000000","message":"Please add unit tests for this database migration","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"087e20317b24e7ee06ee61e6ebe55a5f43005aee","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":17,"id":"b7290658_981e9005","line":1,"in_reply_to":"562ae025_60805d19","updated":"2021-08-31 10:11:07.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":17,"id":"562ae025_60805d19","line":1,"in_reply_to":"b5d3b9a7_b89d0abe","updated":"2021-08-31 07:24:19.000000000","message":"ok, have added.","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ea93640f4cbc83e2600c98d46853cdc3c7a3db4b","unresolved":true,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade():"},{"line_number":34,"context_line":"    try:"},{"line_number":35,"context_line":"        op.add_column(\u0027shares\u0027, sa.Column("},{"line_number":36,"context_line":"            \u0027is_soft_deleted\u0027, sa.Boolean, default\u003dFalse))"},{"line_number":37,"context_line":"        op.add_column(\u0027shares\u0027, sa.Column("},{"line_number":38,"context_line":"            \u0027scheduled_to_be_deleted_at\u0027, sa.DateTime))"},{"line_number":39,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":25,"id":"6a46a818_789c9840","line":36,"range":{"start_line":35,"start_character":8,"end_line":36,"end_character":58},"updated":"2021-09-03 17:37:32.000000000","message":"this thing fails to do the right thing here, and i missed it during earlier reviews. I was testing this change, and was worried why all my existing shares were deleted :D\n\n\n\"default\" is practically useless here, does nothing - what you need here is \"server_default\": https://alembic.sqlalchemy.org/en/latest/ops.html\n\n\nserver_default\u003dsql.false()\n\n\nSee grenade job failure here: https://zuul.opendev.org/t/openstack/build/9cec2a6947104997bb29a777076c1abd/log/controller/logs/grenade.sh_log.txt","commit_id":"521def1e20c7bf716b7b3051a927d580229145c7"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"bd7d87b7d6d509b9cc48a487739e5c2db8777540","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def upgrade():"},{"line_number":34,"context_line":"    try:"},{"line_number":35,"context_line":"        op.add_column(\u0027shares\u0027, sa.Column("},{"line_number":36,"context_line":"            \u0027is_soft_deleted\u0027, sa.Boolean, default\u003dFalse))"},{"line_number":37,"context_line":"        op.add_column(\u0027shares\u0027, sa.Column("},{"line_number":38,"context_line":"            \u0027scheduled_to_be_deleted_at\u0027, sa.DateTime))"},{"line_number":39,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":25,"id":"42f6ee2d_e4ea53d7","line":36,"range":{"start_line":35,"start_character":8,"end_line":36,"end_character":58},"in_reply_to":"6a46a818_789c9840","updated":"2021-09-03 23:21:20.000000000","message":"thanks, i have fixed.","commit_id":"521def1e20c7bf716b7b3051a927d580229145c7"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"61370d71eda08922d5dce90b62811ccf2b87c7a5","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def downgrade():"},{"line_number":47,"context_line":"    try:"},{"line_number":48,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027is_soft_deleted\u0027)"},{"line_number":49,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027scheduled_to_be_deleted_at\u0027)"},{"line_number":50,"context_line":"    except Exception:"},{"line_number":51,"context_line":"        LOG.error(\"Column shares.is_soft_deleted and/or \""},{"line_number":52,"context_line":"                  \"shares.scheduled_to_be_deleted_at not dropped!\")"},{"line_number":53,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":34,"id":"fc897ec6_46345829","line":53,"range":{"start_line":47,"start_character":4,"end_line":53,"end_character":13},"updated":"2022-02-04 15:54:30.000000000","message":"what would happen in the downgrade if a share is already in the recycle bin \"waiting until it gets deleted\" and the downgrade occurs? Should we have any special treatment for that?","commit_id":"03fa54edb099342ee51aeb20867b95328901de97"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"be556997cc94ed95e69aad5e11fb5f759bf5c2be","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def downgrade():"},{"line_number":47,"context_line":"    try:"},{"line_number":48,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027is_soft_deleted\u0027)"},{"line_number":49,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027scheduled_to_be_deleted_at\u0027)"},{"line_number":50,"context_line":"    except Exception:"},{"line_number":51,"context_line":"        LOG.error(\"Column shares.is_soft_deleted and/or \""},{"line_number":52,"context_line":"                  \"shares.scheduled_to_be_deleted_at not dropped!\")"},{"line_number":53,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":34,"id":"06fb877f_b55be892","line":53,"range":{"start_line":47,"start_character":4,"end_line":53,"end_character":13},"in_reply_to":"6522c5b0_ecb1056a","updated":"2022-02-08 01:39:04.000000000","message":"yeah, i got what you mean. i will add an warning log here to tell user if downgrade database will lead to shares in recycle bin \"back to life\".","commit_id":"03fa54edb099342ee51aeb20867b95328901de97"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"fee0d700aaf83ce79be0d19f44eae19a5a1df445","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def downgrade():"},{"line_number":47,"context_line":"    try:"},{"line_number":48,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027is_soft_deleted\u0027)"},{"line_number":49,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027scheduled_to_be_deleted_at\u0027)"},{"line_number":50,"context_line":"    except Exception:"},{"line_number":51,"context_line":"        LOG.error(\"Column shares.is_soft_deleted and/or \""},{"line_number":52,"context_line":"                  \"shares.scheduled_to_be_deleted_at not dropped!\")"},{"line_number":53,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":34,"id":"6522c5b0_ecb1056a","line":53,"range":{"start_line":47,"start_character":4,"end_line":53,"end_character":13},"in_reply_to":"ad6d2152_ff97aab9","updated":"2022-02-07 18:52:45.000000000","message":"Yeah, I understand the is_soft_deleted and scheduled_to_be_deleted_at fields are being dropped.\nSorry, let me express a scenario I thought about: what if someone asked the share to be soft deleted and is expecting that it would be and then for some reason the downgrade happens?\nIn that way, we\u0027d loose track of what was done, and the shares that were supposed to be deleted soon will be \"brought back to life\" without any notice to users.\nShouldn\u0027t we have at least a warning for that? In that way we\u0027d at least log somewhere that there were some shares that were supposed to be deleted at some point.","commit_id":"03fa54edb099342ee51aeb20867b95328901de97"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6eeb724e0fd9ce3688f23510edc3b0e5bb4860ce","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def downgrade():"},{"line_number":47,"context_line":"    try:"},{"line_number":48,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027is_soft_deleted\u0027)"},{"line_number":49,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027scheduled_to_be_deleted_at\u0027)"},{"line_number":50,"context_line":"    except Exception:"},{"line_number":51,"context_line":"        LOG.error(\"Column shares.is_soft_deleted and/or \""},{"line_number":52,"context_line":"                  \"shares.scheduled_to_be_deleted_at not dropped!\")"},{"line_number":53,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":34,"id":"ad6d2152_ff97aab9","line":53,"range":{"start_line":47,"start_character":4,"end_line":53,"end_character":13},"in_reply_to":"fc897ec6_46345829","updated":"2022-02-07 06:46:04.000000000","message":"After the downgrade, the SHARE does not have the IS_SOFt_DELETED field, which is simply ignored by the database[1]. so that means shares in recycle bin will all restore. no need special treament.\n\n\n[1] manila/db/sqlalchemy/api.py line: 2014---2020","commit_id":"03fa54edb099342ee51aeb20867b95328901de97"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":47,"context_line":"    try:"},{"line_number":48,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027is_soft_deleted\u0027)"},{"line_number":49,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027scheduled_to_be_deleted_at\u0027)"},{"line_number":50,"context_line":"        LOG.warning(\"All shares in recycle bin will automatically restore,\""},{"line_number":51,"context_line":"                    \"need to be manually identified and deleted again.\")"},{"line_number":52,"context_line":"    except Exception:"},{"line_number":53,"context_line":"        LOG.error(\"Column shares.is_soft_deleted and/or \""}],"source_content_type":"text/x-python","patch_set":40,"id":"11e7dcea_810251dd","line":50,"range":{"start_line":50,"start_character":66,"end_line":50,"end_character":73},"updated":"2022-02-17 01:58:10.000000000","message":"be restored","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":47,"context_line":"    try:"},{"line_number":48,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027is_soft_deleted\u0027)"},{"line_number":49,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027scheduled_to_be_deleted_at\u0027)"},{"line_number":50,"context_line":"        LOG.warning(\"All shares in recycle bin will automatically restore,\""},{"line_number":51,"context_line":"                    \"need to be manually identified and deleted again.\")"},{"line_number":52,"context_line":"    except Exception:"},{"line_number":53,"context_line":"        LOG.error(\"Column shares.is_soft_deleted and/or \""}],"source_content_type":"text/x-python","patch_set":40,"id":"7945a04f_a19e48c2","line":50,"range":{"start_line":50,"start_character":74,"end_line":50,"end_character":75},"updated":"2022-02-17 01:58:10.000000000","message":"space","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    try:"},{"line_number":48,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027is_soft_deleted\u0027)"},{"line_number":49,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027scheduled_to_be_deleted_at\u0027)"},{"line_number":50,"context_line":"        LOG.warning(\"All shares in recycle bin will automatically restore,\""},{"line_number":51,"context_line":"                    \"need to be manually identified and deleted again.\")"},{"line_number":52,"context_line":"    except Exception:"},{"line_number":53,"context_line":"        LOG.error(\"Column shares.is_soft_deleted and/or \""}],"source_content_type":"text/x-python","patch_set":40,"id":"52a18f69_3a9f5632","line":50,"range":{"start_line":50,"start_character":66,"end_line":50,"end_character":73},"in_reply_to":"11e7dcea_810251dd","updated":"2022-02-18 08:25:48.000000000","message":"Done","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    try:"},{"line_number":48,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027is_soft_deleted\u0027)"},{"line_number":49,"context_line":"        op.drop_column(\u0027shares\u0027, \u0027scheduled_to_be_deleted_at\u0027)"},{"line_number":50,"context_line":"        LOG.warning(\"All shares in recycle bin will automatically restore,\""},{"line_number":51,"context_line":"                    \"need to be manually identified and deleted again.\")"},{"line_number":52,"context_line":"    except Exception:"},{"line_number":53,"context_line":"        LOG.error(\"Column shares.is_soft_deleted and/or \""}],"source_content_type":"text/x-python","patch_set":40,"id":"b0459437_78071789","line":50,"range":{"start_line":50,"start_character":74,"end_line":50,"end_character":75},"in_reply_to":"7945a04f_a19e48c2","updated":"2022-02-18 08:25:48.000000000","message":"Done","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"796fa697ff8c1fd4854e1b5187d5135ff4ed4fda","unresolved":true,"context_lines":[{"line_number":1652,"context_line":"                models.ShareInstanceExportLocations.uuid \u003d\u003d"},{"line_number":1653,"context_line":"                export_location_id)"},{"line_number":1654,"context_line":""},{"line_number":1655,"context_line":"    # if share instance\u0027s parent share has been soft deleted, we"},{"line_number":1656,"context_line":"    # should filter out it."},{"line_number":1657,"context_line":"    query \u003d query.join("},{"line_number":1658,"context_line":"        models.Share,"},{"line_number":1659,"context_line":"        models.Share.id \u003d\u003d"},{"line_number":1660,"context_line":"        models.ShareInstance.share_id)"},{"line_number":1661,"context_line":"    query \u003d query.filter("},{"line_number":1662,"context_line":"        models.Share.is_soft_deleted \u003d\u003d 0)"},{"line_number":1663,"context_line":""},{"line_number":1664,"context_line":"    instance_ids \u003d filters.get(\u0027instance_ids\u0027)"},{"line_number":1665,"context_line":"    if instance_ids:"}],"source_content_type":"text/x-python","patch_set":20,"id":"16ba3b7f_faf5f4f5","line":1662,"range":{"start_line":1655,"start_character":4,"end_line":1662,"end_character":42},"updated":"2021-09-01 18:42:02.000000000","message":"suggestion for future proofing: \n\ndo this only if \"is_soft_deleted\" isn\u0027t in the filters, else, filter by is_soft_deleted","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":false,"context_lines":[{"line_number":1652,"context_line":"                models.ShareInstanceExportLocations.uuid \u003d\u003d"},{"line_number":1653,"context_line":"                export_location_id)"},{"line_number":1654,"context_line":""},{"line_number":1655,"context_line":"    # if share instance\u0027s parent share has been soft deleted, we"},{"line_number":1656,"context_line":"    # should filter out it."},{"line_number":1657,"context_line":"    query \u003d query.join("},{"line_number":1658,"context_line":"        models.Share,"},{"line_number":1659,"context_line":"        models.Share.id \u003d\u003d"},{"line_number":1660,"context_line":"        models.ShareInstance.share_id)"},{"line_number":1661,"context_line":"    query \u003d query.filter("},{"line_number":1662,"context_line":"        models.Share.is_soft_deleted \u003d\u003d 0)"},{"line_number":1663,"context_line":""},{"line_number":1664,"context_line":"    instance_ids \u003d filters.get(\u0027instance_ids\u0027)"},{"line_number":1665,"context_line":"    if instance_ids:"}],"source_content_type":"text/x-python","patch_set":20,"id":"39be3d83_53f1403c","line":1662,"range":{"start_line":1655,"start_character":4,"end_line":1662,"end_character":42},"in_reply_to":"16ba3b7f_faf5f4f5","updated":"2021-09-02 10:18:39.000000000","message":"ok, i will fix manila/api/v2/share_instance.py#90 to make share isntance index support query instance with parent share is is_soft_deleted or not is_soft_deleted.","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"f63a54e658921f8f2223cdd7347b7248224bf539","unresolved":true,"context_lines":[{"line_number":2251,"context_line":"        )"},{"line_number":2252,"context_line":"    )"},{"line_number":2253,"context_line":"    filters \u003d {\"is_soft_deleted\": True,"},{"line_number":2254,"context_line":"               \"status\": constants.STATUS_AVAILABLE}"},{"line_number":2255,"context_line":"    query \u003d _process_share_filters(query, filters\u003dfilters)"},{"line_number":2256,"context_line":"    scheduled_deleted_attr \u003d getattr(models.Share,"},{"line_number":2257,"context_line":"                                     \u0027scheduled_to_be_deleted_at\u0027, None)"}],"source_content_type":"text/x-python","patch_set":20,"id":"52836d47_4595bf4b","line":2254,"range":{"start_line":2254,"start_character":16,"end_line":2254,"end_character":52},"updated":"2021-09-02 00:06:02.000000000","message":"In the api, i see that you allow soft_delete shares that are in ACTIVE, INACTIVE and ERROR states. Shouldn\u0027t you get these other states and return as expired too?","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":false,"context_lines":[{"line_number":2251,"context_line":"        )"},{"line_number":2252,"context_line":"    )"},{"line_number":2253,"context_line":"    filters \u003d {\"is_soft_deleted\": True,"},{"line_number":2254,"context_line":"               \"status\": constants.STATUS_AVAILABLE}"},{"line_number":2255,"context_line":"    query \u003d _process_share_filters(query, filters\u003dfilters)"},{"line_number":2256,"context_line":"    scheduled_deleted_attr \u003d getattr(models.Share,"},{"line_number":2257,"context_line":"                                     \u0027scheduled_to_be_deleted_at\u0027, None)"}],"source_content_type":"text/x-python","patch_set":20,"id":"9111f838_a9257cad","line":2254,"range":{"start_line":2254,"start_character":16,"end_line":2254,"end_character":52},"in_reply_to":"52836d47_4595bf4b","updated":"2021-09-02 10:18:39.000000000","message":"i will remove this line. \nAt first, I was worried that the share in the recycle bin could change its status.\nnow in api/openstack/wsgi.py have restricted the share in the recycle bin from changing its status. so this not necessary now.","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bf2b823ef7cffb318baa35685f9399aa2f9e16de","unresolved":true,"context_lines":[{"line_number":2246,"context_line":""},{"line_number":2247,"context_line":""},{"line_number":2248,"context_line":"@require_admin_context"},{"line_number":2249,"context_line":"def get_all_expired_share(context):"},{"line_number":2250,"context_line":"    query \u003d ("},{"line_number":2251,"context_line":"        _share_get_query(context).join("},{"line_number":2252,"context_line":"            models.ShareInstance,"}],"source_content_type":"text/x-python","patch_set":23,"id":"eee7c42c_ea42fab0","line":2249,"range":{"start_line":2249,"start_character":20,"end_line":2249,"end_character":25},"updated":"2021-09-03 07:35:50.000000000","message":"nit: shares","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c02f17e4371992d25bcdbbfcf735ea06d3e16050","unresolved":false,"context_lines":[{"line_number":2246,"context_line":""},{"line_number":2247,"context_line":""},{"line_number":2248,"context_line":"@require_admin_context"},{"line_number":2249,"context_line":"def get_all_expired_share(context):"},{"line_number":2250,"context_line":"    query \u003d ("},{"line_number":2251,"context_line":"        _share_get_query(context).join("},{"line_number":2252,"context_line":"            models.ShareInstance,"}],"source_content_type":"text/x-python","patch_set":23,"id":"cd291677_4e4fcfe7","line":2249,"range":{"start_line":2249,"start_character":20,"end_line":2249,"end_character":25},"in_reply_to":"eee7c42c_ea42fab0","updated":"2021-09-03 09:12:34.000000000","message":"Done","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"41bb19be9362dd6a4b8485a608a380749f35d0b7","unresolved":true,"context_lines":[{"line_number":1657,"context_line":"        models.Share.id \u003d\u003d"},{"line_number":1658,"context_line":"        models.ShareInstance.share_id)"},{"line_number":1659,"context_line":"    is_soft_deleted \u003d filters.get(\u0027is_soft_deleted\u0027)"},{"line_number":1660,"context_line":"    if is_soft_deleted:"},{"line_number":1661,"context_line":"        query \u003d query.filter("},{"line_number":1662,"context_line":"            models.Share.is_soft_deleted \u003d\u003d 1)"},{"line_number":1663,"context_line":"    else:"},{"line_number":1664,"context_line":"        query \u003d query.filter("},{"line_number":1665,"context_line":"            models.Share.is_soft_deleted \u003d\u003d 0)"}],"source_content_type":"text/x-python","patch_set":40,"id":"69d8c658_2f498085","line":1662,"range":{"start_line":1660,"start_character":4,"end_line":1662,"end_character":46},"updated":"2022-02-16 21:17:19.000000000","message":"not being covered by unit tests","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":1657,"context_line":"        models.Share.id \u003d\u003d"},{"line_number":1658,"context_line":"        models.ShareInstance.share_id)"},{"line_number":1659,"context_line":"    is_soft_deleted \u003d filters.get(\u0027is_soft_deleted\u0027)"},{"line_number":1660,"context_line":"    if is_soft_deleted:"},{"line_number":1661,"context_line":"        query \u003d query.filter("},{"line_number":1662,"context_line":"            models.Share.is_soft_deleted \u003d\u003d 1)"},{"line_number":1663,"context_line":"    else:"},{"line_number":1664,"context_line":"        query \u003d query.filter("},{"line_number":1665,"context_line":"            models.Share.is_soft_deleted \u003d\u003d 0)"}],"source_content_type":"text/x-python","patch_set":40,"id":"c2f4b8eb_de7f3da2","line":1662,"range":{"start_line":1660,"start_character":4,"end_line":1662,"end_character":46},"in_reply_to":"3a9b9e0d_e0b296f9","updated":"2022-02-18 08:25:48.000000000","message":"Done, and unit test has added. manila/tests/db/sqlalchemy/test_api.py#537","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":1657,"context_line":"        models.Share.id \u003d\u003d"},{"line_number":1658,"context_line":"        models.ShareInstance.share_id)"},{"line_number":1659,"context_line":"    is_soft_deleted \u003d filters.get(\u0027is_soft_deleted\u0027)"},{"line_number":1660,"context_line":"    if is_soft_deleted:"},{"line_number":1661,"context_line":"        query \u003d query.filter("},{"line_number":1662,"context_line":"            models.Share.is_soft_deleted \u003d\u003d 1)"},{"line_number":1663,"context_line":"    else:"},{"line_number":1664,"context_line":"        query \u003d query.filter("},{"line_number":1665,"context_line":"            models.Share.is_soft_deleted \u003d\u003d 0)"}],"source_content_type":"text/x-python","patch_set":40,"id":"3a9b9e0d_e0b296f9","line":1662,"range":{"start_line":1660,"start_character":4,"end_line":1662,"end_character":46},"in_reply_to":"69d8c658_2f498085","updated":"2022-02-17 01:58:10.000000000","message":"and is failing in our postgres test jobs, for example: https://zuul.opendev.org/t/openstack/build/abd0e35f416041b4a53ce023275dfa2b/log/controller/logs/screen-m-api.txt#638-787\n\nwe need this to be \n\nquery \u003d query.filter_by(models.Share.is_soft_deleted\u003dTrue)\n\nor \n\nquery \u003d query.filter(models.Share.is_soft_deleted \u003d\u003d true())","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":1661,"context_line":"        query \u003d query.filter("},{"line_number":1662,"context_line":"            models.Share.is_soft_deleted \u003d\u003d 1)"},{"line_number":1663,"context_line":"    else:"},{"line_number":1664,"context_line":"        query \u003d query.filter("},{"line_number":1665,"context_line":"            models.Share.is_soft_deleted \u003d\u003d 0)"},{"line_number":1666,"context_line":""},{"line_number":1667,"context_line":"    instance_ids \u003d filters.get(\u0027instance_ids\u0027)"},{"line_number":1668,"context_line":"    if instance_ids:"}],"source_content_type":"text/x-python","patch_set":40,"id":"84c438c2_0f93f388","line":1665,"range":{"start_line":1664,"start_character":8,"end_line":1665,"end_character":46},"updated":"2022-02-17 01:58:10.000000000","message":"same as above -- no implicit type casting should be assumed here..","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":1661,"context_line":"        query \u003d query.filter("},{"line_number":1662,"context_line":"            models.Share.is_soft_deleted \u003d\u003d 1)"},{"line_number":1663,"context_line":"    else:"},{"line_number":1664,"context_line":"        query \u003d query.filter("},{"line_number":1665,"context_line":"            models.Share.is_soft_deleted \u003d\u003d 0)"},{"line_number":1666,"context_line":""},{"line_number":1667,"context_line":"    instance_ids \u003d filters.get(\u0027instance_ids\u0027)"},{"line_number":1668,"context_line":"    if instance_ids:"}],"source_content_type":"text/x-python","patch_set":40,"id":"72140c20_b1880087","line":1665,"range":{"start_line":1664,"start_character":8,"end_line":1665,"end_character":46},"in_reply_to":"84c438c2_0f93f388","updated":"2022-02-18 08:25:48.000000000","message":"Done","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"41bb19be9362dd6a4b8485a608a380749f35d0b7","unresolved":true,"context_lines":[{"line_number":2394,"context_line":""},{"line_number":2395,"context_line":"@require_context"},{"line_number":2396,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":2397,"context_line":"def share_soft_delete(context, share_id):"},{"line_number":2398,"context_line":"    session \u003d get_session()"},{"line_number":2399,"context_line":"    now_time \u003d timeutils.utcnow()"},{"line_number":2400,"context_line":"    time_delta \u003d datetime.timedelta("}],"source_content_type":"text/x-python","patch_set":40,"id":"92b60d78_5fde312b","line":2397,"range":{"start_line":2397,"start_character":0,"end_line":2397,"end_character":41},"updated":"2022-02-16 21:17:19.000000000","message":"this and the method below aren\u0027t being covered by unit tests","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":2394,"context_line":""},{"line_number":2395,"context_line":"@require_context"},{"line_number":2396,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":2397,"context_line":"def share_soft_delete(context, share_id):"},{"line_number":2398,"context_line":"    session \u003d get_session()"},{"line_number":2399,"context_line":"    now_time \u003d timeutils.utcnow()"},{"line_number":2400,"context_line":"    time_delta \u003d datetime.timedelta("}],"source_content_type":"text/x-python","patch_set":40,"id":"9fc0db44_247b9d04","line":2397,"range":{"start_line":2397,"start_character":0,"end_line":2397,"end_character":41},"in_reply_to":"92b60d78_5fde312b","updated":"2022-02-17 01:58:10.000000000","message":"+1 need these to be unit tested please","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":2394,"context_line":""},{"line_number":2395,"context_line":"@require_context"},{"line_number":2396,"context_line":"@oslo_db_api.wrap_db_retry(max_retries\u003d5, retry_on_deadlock\u003dTrue)"},{"line_number":2397,"context_line":"def share_soft_delete(context, share_id):"},{"line_number":2398,"context_line":"    session \u003d get_session()"},{"line_number":2399,"context_line":"    now_time \u003d timeutils.utcnow()"},{"line_number":2400,"context_line":"    time_delta \u003d datetime.timedelta("}],"source_content_type":"text/x-python","patch_set":40,"id":"dd97a303_f2987646","line":2397,"range":{"start_line":2397,"start_character":0,"end_line":2397,"end_character":41},"in_reply_to":"9fc0db44_247b9d04","updated":"2022-02-18 08:25:48.000000000","message":"unit test has added. manila/tests/db/sqlalchemy/test_api.py#1111","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"}],"manila/policies/shares.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"796fa697ff8c1fd4854e1b5187d5135ff4ed4fda","unresolved":true,"context_lines":[{"line_number":326,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027restore\u0027,"},{"line_number":327,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN_OR_PROJECT_MEMBER,"},{"line_number":328,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":329,"context_line":"        description\u003d\"Soft Delete a share.\","},{"line_number":330,"context_line":"        operations\u003d["},{"line_number":331,"context_line":"            {"},{"line_number":332,"context_line":"                \u0027method\u0027: \u0027POST\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"28577ed5_07e179d3","line":329,"range":{"start_line":329,"start_character":21,"end_line":329,"end_character":32},"updated":"2021-09-01 18:42:02.000000000","message":"Restore","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027restore\u0027,"},{"line_number":327,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN_OR_PROJECT_MEMBER,"},{"line_number":328,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":329,"context_line":"        description\u003d\"Soft Delete a share.\","},{"line_number":330,"context_line":"        operations\u003d["},{"line_number":331,"context_line":"            {"},{"line_number":332,"context_line":"                \u0027method\u0027: \u0027POST\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"349ab8c1_0d659279","line":329,"range":{"start_line":329,"start_character":21,"end_line":329,"end_character":32},"in_reply_to":"28577ed5_07e179d3","updated":"2021-09-02 10:18:39.000000000","message":"Done","commit_id":"734584e06bb6d26209af331eda826f5b66278928"}],"manila/share/api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"bf2b823ef7cffb318baa35685f9399aa2f9e16de","unresolved":true,"context_lines":[{"line_number":2883,"context_line":"                self.db.get_shares_in_recycle_bin_by_network("},{"line_number":2884,"context_line":"                    context, share_network[\u0027id\u0027]))"},{"line_number":2885,"context_line":"            if shares_in_recycle_bin:"},{"line_number":2886,"context_line":"                msg \u003d _(\"Some shares with share network %(sn_id)s has \""},{"line_number":2887,"context_line":"                        \"been soft deleted.\") % {\u0027sn_id\u0027: share_network[\u0027id\u0027]}"},{"line_number":2888,"context_line":"                raise exception.InvalidShareNetwork(reason\u003dmsg)"},{"line_number":2889,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"5be16017_01dbc2be","line":2886,"range":{"start_line":2886,"start_character":66,"end_line":2886,"end_character":69},"updated":"2021-09-03 07:35:50.000000000","message":"have","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c02f17e4371992d25bcdbbfcf735ea06d3e16050","unresolved":false,"context_lines":[{"line_number":2883,"context_line":"                self.db.get_shares_in_recycle_bin_by_network("},{"line_number":2884,"context_line":"                    context, share_network[\u0027id\u0027]))"},{"line_number":2885,"context_line":"            if shares_in_recycle_bin:"},{"line_number":2886,"context_line":"                msg \u003d _(\"Some shares with share network %(sn_id)s has \""},{"line_number":2887,"context_line":"                        \"been soft deleted.\") % {\u0027sn_id\u0027: share_network[\u0027id\u0027]}"},{"line_number":2888,"context_line":"                raise exception.InvalidShareNetwork(reason\u003dmsg)"},{"line_number":2889,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"91c99671_2a13737d","line":2886,"range":{"start_line":2886,"start_character":66,"end_line":2886,"end_character":69},"in_reply_to":"5be16017_01dbc2be","updated":"2021-09-03 09:12:34.000000000","message":"Done","commit_id":"bc0ed91413b4b12b5251da18a7cdff9272933e49"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"61370d71eda08922d5dce90b62811ccf2b87c7a5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":34,"id":"ecb18a77_e2450868","updated":"2022-02-04 15:54:30.000000000","message":"I was checking the coverage report and realized this file could use some more unit tests... Could you please add some? :)\nThe coverage output is available here: https://zuul.opendev.org/t/openstack/build/fd50be5dc1614cd1b3af741f294fc27c","commit_id":"03fa54edb099342ee51aeb20867b95328901de97"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6eeb724e0fd9ce3688f23510edc3b0e5bb4860ce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"b637606b_a3dbf1e6","in_reply_to":"ecb18a77_e2450868","updated":"2022-02-07 06:46:04.000000000","message":"ok, i will add more unit test about this file.","commit_id":"03fa54edb099342ee51aeb20867b95328901de97"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"41bb19be9362dd6a4b8485a608a380749f35d0b7","unresolved":true,"context_lines":[{"line_number":1153,"context_line":"            context, share, snapshot, active_replica[\u0027host\u0027], reservations)"},{"line_number":1154,"context_line":""},{"line_number":1155,"context_line":"    @policy.wrap_check_policy(\u0027share\u0027)"},{"line_number":1156,"context_line":"    def soft_delete(self, context, share):"},{"line_number":1157,"context_line":"        \"\"\"Soft delete share.\"\"\""},{"line_number":1158,"context_line":"        share_id \u003d share[\u0027id\u0027]"},{"line_number":1159,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"b3419698_b16ebef0","line":1156,"range":{"start_line":1156,"start_character":4,"end_line":1156,"end_character":42},"updated":"2022-02-16 21:17:19.000000000","message":"great coverage! thanks!","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":1153,"context_line":"            context, share, snapshot, active_replica[\u0027host\u0027], reservations)"},{"line_number":1154,"context_line":""},{"line_number":1155,"context_line":"    @policy.wrap_check_policy(\u0027share\u0027)"},{"line_number":1156,"context_line":"    def soft_delete(self, context, share):"},{"line_number":1157,"context_line":"        \"\"\"Soft delete share.\"\"\""},{"line_number":1158,"context_line":"        share_id \u003d share[\u0027id\u0027]"},{"line_number":1159,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"bd2a94bd_60b95861","line":1156,"range":{"start_line":1156,"start_character":4,"end_line":1156,"end_character":42},"in_reply_to":"b3419698_b16ebef0","updated":"2022-02-18 08:25:48.000000000","message":"Done","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":2566,"context_line":"            raise exception.InvalidShareServer(reason\u003dmsg)"},{"line_number":2567,"context_line":""},{"line_number":2568,"context_line":"        if shares_in_recycle_bin:"},{"line_number":2569,"context_line":"            msg \u003d _(\"Share server %s has at least one share has \""},{"line_number":2570,"context_line":"                    \"been soft deleted.\" % share_server[\u0027id\u0027])"},{"line_number":2571,"context_line":"            raise exception.InvalidShareServer(reason\u003dmsg)"},{"line_number":2572,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"73159fb1_94b1c2aa","line":2569,"range":{"start_line":2569,"start_character":60,"end_line":2569,"end_character":63},"updated":"2022-02-17 01:58:10.000000000","message":"that has","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":2566,"context_line":"            raise exception.InvalidShareServer(reason\u003dmsg)"},{"line_number":2567,"context_line":""},{"line_number":2568,"context_line":"        if shares_in_recycle_bin:"},{"line_number":2569,"context_line":"            msg \u003d _(\"Share server %s has at least one share has \""},{"line_number":2570,"context_line":"                    \"been soft deleted.\" % share_server[\u0027id\u0027])"},{"line_number":2571,"context_line":"            raise exception.InvalidShareServer(reason\u003dmsg)"},{"line_number":2572,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"425a9b4b_334692bb","line":2569,"range":{"start_line":2569,"start_character":60,"end_line":2569,"end_character":63},"in_reply_to":"73159fb1_94b1c2aa","updated":"2022-02-18 08:25:48.000000000","message":"Done","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"}],"manila/share/manager.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":132,"context_line":"                default\u003dFalse,"},{"line_number":133,"context_line":"                help\u003d\u0027Offload pending share ensure during \u0027"},{"line_number":134,"context_line":"                     \u0027share service startup\u0027),"},{"line_number":135,"context_line":"    cfg.IntOpt(\u0027clean_recycle_bin_interval\u0027,"},{"line_number":136,"context_line":"               default\u003d300,"},{"line_number":137,"context_line":"               help\u003d\u0027This value, specified in seconds, determines how often \u0027"},{"line_number":138,"context_line":"                    \u0027the share manager will delete shares in the Recycle Bin \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"1dabf340_dcc841eb","line":135,"range":{"start_line":135,"start_character":16,"end_line":135,"end_character":42},"updated":"2021-08-31 01:25:07.000000000","message":"what about `check_for_expired_resources_in_recycle_bin_interval`?","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":true,"context_lines":[{"line_number":132,"context_line":"                default\u003dFalse,"},{"line_number":133,"context_line":"                help\u003d\u0027Offload pending share ensure during \u0027"},{"line_number":134,"context_line":"                     \u0027share service startup\u0027),"},{"line_number":135,"context_line":"    cfg.IntOpt(\u0027clean_recycle_bin_interval\u0027,"},{"line_number":136,"context_line":"               default\u003d300,"},{"line_number":137,"context_line":"               help\u003d\u0027This value, specified in seconds, determines how often \u0027"},{"line_number":138,"context_line":"                    \u0027the share manager will delete shares in the Recycle Bin \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"be873843_2f52425e","line":135,"range":{"start_line":135,"start_character":16,"end_line":135,"end_character":42},"in_reply_to":"1dabf340_dcc841eb","updated":"2021-08-31 07:24:19.000000000","message":"i change it to `check_for_expired_shares_in_recycle_bin_interval`","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"087e20317b24e7ee06ee61e6ebe55a5f43005aee","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                default\u003dFalse,"},{"line_number":133,"context_line":"                help\u003d\u0027Offload pending share ensure during \u0027"},{"line_number":134,"context_line":"                     \u0027share service startup\u0027),"},{"line_number":135,"context_line":"    cfg.IntOpt(\u0027clean_recycle_bin_interval\u0027,"},{"line_number":136,"context_line":"               default\u003d300,"},{"line_number":137,"context_line":"               help\u003d\u0027This value, specified in seconds, determines how often \u0027"},{"line_number":138,"context_line":"                    \u0027the share manager will delete shares in the Recycle Bin \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"7aaecdd3_45da0302","line":135,"range":{"start_line":135,"start_character":16,"end_line":135,"end_character":42},"in_reply_to":"be873843_2f52425e","updated":"2021-08-31 10:11:07.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":135,"context_line":"    cfg.IntOpt(\u0027clean_recycle_bin_interval\u0027,"},{"line_number":136,"context_line":"               default\u003d300,"},{"line_number":137,"context_line":"               help\u003d\u0027This value, specified in seconds, determines how often \u0027"},{"line_number":138,"context_line":"                    \u0027the share manager will delete shares in the Recycle Bin \u0027"},{"line_number":139,"context_line":"                    \u0027which have reached their scheduled_to_be_deleted_at.\u0027),"},{"line_number":140,"context_line":"]"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1efd84c1_699b9f0f","line":138,"range":{"start_line":138,"start_character":44,"end_line":138,"end_character":57},"updated":"2021-08-31 01:25:07.000000000","message":"check for expired shares and delete them from the Recycle bin...","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    cfg.IntOpt(\u0027clean_recycle_bin_interval\u0027,"},{"line_number":136,"context_line":"               default\u003d300,"},{"line_number":137,"context_line":"               help\u003d\u0027This value, specified in seconds, determines how often \u0027"},{"line_number":138,"context_line":"                    \u0027the share manager will delete shares in the Recycle Bin \u0027"},{"line_number":139,"context_line":"                    \u0027which have reached their scheduled_to_be_deleted_at.\u0027),"},{"line_number":140,"context_line":"]"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"037c3b89_3b367119","line":138,"range":{"start_line":138,"start_character":44,"end_line":138,"end_character":57},"in_reply_to":"1efd84c1_699b9f0f","updated":"2021-08-31 07:24:19.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"796fa697ff8c1fd4854e1b5187d5135ff4ed4fda","unresolved":true,"context_lines":[{"line_number":133,"context_line":"                help\u003d\u0027Offload pending share ensure during \u0027"},{"line_number":134,"context_line":"                     \u0027share service startup\u0027),"},{"line_number":135,"context_line":"    cfg.IntOpt(\u0027check_for_expired_shares_in_recycle_bin_interval\u0027,"},{"line_number":136,"context_line":"               default\u003d300,"},{"line_number":137,"context_line":"               help\u003d\u0027This value, specified in seconds, determines how often \u0027"},{"line_number":138,"context_line":"                    \u0027the share manager will check for expired shares and\u0027"},{"line_number":139,"context_line":"                    \u0027delete them from the Recycle bin.\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"f8ed03d8_9e1b2892","line":136,"range":{"start_line":136,"start_character":23,"end_line":136,"end_character":26},"updated":"2021-09-01 18:42:02.000000000","message":"We can do this hourly, instead of every five minutes?","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                help\u003d\u0027Offload pending share ensure during \u0027"},{"line_number":134,"context_line":"                     \u0027share service startup\u0027),"},{"line_number":135,"context_line":"    cfg.IntOpt(\u0027check_for_expired_shares_in_recycle_bin_interval\u0027,"},{"line_number":136,"context_line":"               default\u003d300,"},{"line_number":137,"context_line":"               help\u003d\u0027This value, specified in seconds, determines how often \u0027"},{"line_number":138,"context_line":"                    \u0027the share manager will check for expired shares and\u0027"},{"line_number":139,"context_line":"                    \u0027delete them from the Recycle bin.\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"0e876195_332f6cd9","line":136,"range":{"start_line":136,"start_character":23,"end_line":136,"end_character":26},"in_reply_to":"f8ed03d8_9e1b2892","updated":"2021-09-02 10:18:39.000000000","message":"i am ok to change it, this is just an default valume, admin can change it any time.","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"796fa697ff8c1fd4854e1b5187d5135ff4ed4fda","unresolved":true,"context_lines":[{"line_number":135,"context_line":"    cfg.IntOpt(\u0027check_for_expired_shares_in_recycle_bin_interval\u0027,"},{"line_number":136,"context_line":"               default\u003d300,"},{"line_number":137,"context_line":"               help\u003d\u0027This value, specified in seconds, determines how often \u0027"},{"line_number":138,"context_line":"                    \u0027the share manager will check for expired shares and\u0027"},{"line_number":139,"context_line":"                    \u0027delete them from the Recycle bin.\u0027),"},{"line_number":140,"context_line":"]"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"0eb90caa_51a66a0c","line":138,"range":{"start_line":138,"start_character":72,"end_line":138,"end_character":73},"updated":"2021-09-01 18:42:02.000000000","message":"missing space","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":false,"context_lines":[{"line_number":135,"context_line":"    cfg.IntOpt(\u0027check_for_expired_shares_in_recycle_bin_interval\u0027,"},{"line_number":136,"context_line":"               default\u003d300,"},{"line_number":137,"context_line":"               help\u003d\u0027This value, specified in seconds, determines how often \u0027"},{"line_number":138,"context_line":"                    \u0027the share manager will check for expired shares and\u0027"},{"line_number":139,"context_line":"                    \u0027delete them from the Recycle bin.\u0027),"},{"line_number":140,"context_line":"]"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"f3b00f9e_e7c21b37","line":138,"range":{"start_line":138,"start_character":72,"end_line":138,"end_character":73},"in_reply_to":"0eb90caa_51a66a0c","updated":"2021-09-02 10:18:39.000000000","message":"Done","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"796fa697ff8c1fd4854e1b5187d5135ff4ed4fda","unresolved":true,"context_lines":[{"line_number":3463,"context_line":"        spacing\u003dCONF.check_for_expired_shares_in_recycle_bin_interval)"},{"line_number":3464,"context_line":"    @utils.require_driver_initialized"},{"line_number":3465,"context_line":"    def delete_expired_share(self, ctxt):"},{"line_number":3466,"context_line":"        LOG.info(\"Check for expired share in recycle bin to delete.\")"},{"line_number":3467,"context_line":"        expired_shares \u003d self.db.get_all_expired_share(ctxt)"},{"line_number":3468,"context_line":""},{"line_number":3469,"context_line":"        for share in expired_shares:"}],"source_content_type":"text/x-python","patch_set":20,"id":"236a3330_10c8d7cf","line":3466,"range":{"start_line":3466,"start_character":0,"end_line":3466,"end_character":69},"updated":"2021-09-01 18:42:02.000000000","message":"LOG.info should only be used to record some work having been completed: https://docs.openstack.org/oslo.log/latest/user/guidelines.html#log-messages-at-info-and-above-should-represent-a-unit-of-work\n\nLOG.debug is a better choice here.\n\n LOG.debug(\"Looking for expired shares in the recycle bin\")","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":false,"context_lines":[{"line_number":3463,"context_line":"        spacing\u003dCONF.check_for_expired_shares_in_recycle_bin_interval)"},{"line_number":3464,"context_line":"    @utils.require_driver_initialized"},{"line_number":3465,"context_line":"    def delete_expired_share(self, ctxt):"},{"line_number":3466,"context_line":"        LOG.info(\"Check for expired share in recycle bin to delete.\")"},{"line_number":3467,"context_line":"        expired_shares \u003d self.db.get_all_expired_share(ctxt)"},{"line_number":3468,"context_line":""},{"line_number":3469,"context_line":"        for share in expired_shares:"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f77f78e_75d13539","line":3466,"range":{"start_line":3466,"start_character":0,"end_line":3466,"end_character":69},"in_reply_to":"236a3330_10c8d7cf","updated":"2021-09-02 10:18:39.000000000","message":"Done","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"796fa697ff8c1fd4854e1b5187d5135ff4ed4fda","unresolved":true,"context_lines":[{"line_number":3467,"context_line":"        expired_shares \u003d self.db.get_all_expired_share(ctxt)"},{"line_number":3468,"context_line":""},{"line_number":3469,"context_line":"        for share in expired_shares:"},{"line_number":3470,"context_line":"            LOG.info(\"share %s has expired, will be deleted\", share[\u0027id\u0027])"},{"line_number":3471,"context_line":"            self.share_api.delete(ctxt, share, force\u003dTrue)"},{"line_number":3472,"context_line":""},{"line_number":3473,"context_line":"    @add_hooks"}],"source_content_type":"text/x-python","patch_set":20,"id":"ee89ee09_dd21dc46","line":3470,"range":{"start_line":3470,"start_character":12,"end_line":3470,"end_character":74},"updated":"2021-09-01 18:42:02.000000000","message":"same as above","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":false,"context_lines":[{"line_number":3467,"context_line":"        expired_shares \u003d self.db.get_all_expired_share(ctxt)"},{"line_number":3468,"context_line":""},{"line_number":3469,"context_line":"        for share in expired_shares:"},{"line_number":3470,"context_line":"            LOG.info(\"share %s has expired, will be deleted\", share[\u0027id\u0027])"},{"line_number":3471,"context_line":"            self.share_api.delete(ctxt, share, force\u003dTrue)"},{"line_number":3472,"context_line":""},{"line_number":3473,"context_line":"    @add_hooks"}],"source_content_type":"text/x-python","patch_set":20,"id":"e561947e_c8e54679","line":3470,"range":{"start_line":3470,"start_character":12,"end_line":3470,"end_character":74},"in_reply_to":"ee89ee09_dd21dc46","updated":"2021-09-02 10:18:39.000000000","message":"Done","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"90817fc6190685c6e96d05216ed90935fcc68e90","unresolved":true,"context_lines":[{"line_number":3499,"context_line":""},{"line_number":3500,"context_line":"        for share in expired_shares:"},{"line_number":3501,"context_line":"            LOG.debug(\"share %s has expired, will be deleted\", share[\u0027id\u0027])"},{"line_number":3502,"context_line":"            self.share_api.delete(ctxt, share, force\u003dTrue)"},{"line_number":3503,"context_line":""},{"line_number":3504,"context_line":"    @add_hooks"},{"line_number":3505,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":40,"id":"1ffd7768_75a72d6a","line":3502,"range":{"start_line":3502,"start_character":45,"end_line":3502,"end_character":57},"updated":"2022-02-17 01:58:10.000000000","message":"why is this necessary?\nThis will ensure that the share will be deleted from manila *even* if the share backend fails.. is it possible to just allow the soft deleted share to go to \"error_deleting\" and be re-attempted when possible?","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f94030aeae0c05852f259760557ab471a00bc927","unresolved":false,"context_lines":[{"line_number":3499,"context_line":""},{"line_number":3500,"context_line":"        for share in expired_shares:"},{"line_number":3501,"context_line":"            LOG.debug(\"share %s has expired, will be deleted\", share[\u0027id\u0027])"},{"line_number":3502,"context_line":"            self.share_api.delete(ctxt, share, force\u003dTrue)"},{"line_number":3503,"context_line":""},{"line_number":3504,"context_line":"    @add_hooks"},{"line_number":3505,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":40,"id":"50109813_021786c0","line":3502,"range":{"start_line":3502,"start_character":45,"end_line":3502,"end_character":57},"in_reply_to":"1ffd7768_75a72d6a","updated":"2022-02-18 08:25:48.000000000","message":"if force set false. only share status in available, error or inactive can be delete.\nif force set true, will ignore share status.\n\nif share backend failed to delete share. no matter force is true or false, share status will change to error_deleting.\n\nso we need set force is true here, if delete share failed in the first time, then share status will be error_deleting. then manila can try to delete it again(igonre status) in next clean out the recycle bin.","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"239dc1249f8df7d596ab01449f273bee03140a74","unresolved":false,"context_lines":[{"line_number":3499,"context_line":""},{"line_number":3500,"context_line":"        for share in expired_shares:"},{"line_number":3501,"context_line":"            LOG.debug(\"share %s has expired, will be deleted\", share[\u0027id\u0027])"},{"line_number":3502,"context_line":"            self.share_api.delete(ctxt, share, force\u003dTrue)"},{"line_number":3503,"context_line":""},{"line_number":3504,"context_line":"    @add_hooks"},{"line_number":3505,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":40,"id":"8d5cfc11_ce49f4ce","line":3502,"range":{"start_line":3502,"start_character":45,"end_line":3502,"end_character":57},"in_reply_to":"3e76e2e5_70c8c488","updated":"2022-02-22 01:15:44.000000000","message":"i see the code again, it is true that  if forced, we ignore the share backend driver failures,  the share will be deleted.\nbut if we do not set force will take another problem, if failed delete share on backend in the first time, share status will be error_deleting, A second delete will not be allowed because an unforced delete only allows the following three states available, error, inactive.(manila/share/api.py#1215)\nmaybe can we release the restriction on error_deleting state?","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a68b950cc190357516a9a4cf0ff7a445382ce9f5","unresolved":false,"context_lines":[{"line_number":3499,"context_line":""},{"line_number":3500,"context_line":"        for share in expired_shares:"},{"line_number":3501,"context_line":"            LOG.debug(\"share %s has expired, will be deleted\", share[\u0027id\u0027])"},{"line_number":3502,"context_line":"            self.share_api.delete(ctxt, share, force\u003dTrue)"},{"line_number":3503,"context_line":""},{"line_number":3504,"context_line":"    @add_hooks"},{"line_number":3505,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":40,"id":"a097b15e_294ee40d","line":3502,"range":{"start_line":3502,"start_character":45,"end_line":3502,"end_character":57},"in_reply_to":"50109813_021786c0","updated":"2022-02-21 23:54:17.000000000","message":"\u003e if force set false. only share status in available, error or inactive can be delete.\n\u003e if force set true, will ignore share status.\n\u003e \n\u003e if share backend failed to delete share. no matter force is true or false, share status will change to error_deleting.\n\nNope, if forced, we ignore the share backend driver failures: https://github.com/openstack/manila/blob/7c04fcb9047ab9ec854d8b8be69573ad2b55db75/manila/share/manager.py#L3422-L3429 \n\n\n\n\u003e \n\u003e so we need set force is true here, if delete share failed in the first time, then share status will be error_deleting. then manila can try to delete it again(igonre status) in next clean out the recycle bin.\n\n\nI would strongly suggest we set force\u003dFalse and allow the share to transition to \"error_deleting\" state, and retry every time the periodic cleanup interval runs..","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7e6a4e78b167709496d6cf70f13329f4b015faba","unresolved":false,"context_lines":[{"line_number":3499,"context_line":""},{"line_number":3500,"context_line":"        for share in expired_shares:"},{"line_number":3501,"context_line":"            LOG.debug(\"share %s has expired, will be deleted\", share[\u0027id\u0027])"},{"line_number":3502,"context_line":"            self.share_api.delete(ctxt, share, force\u003dTrue)"},{"line_number":3503,"context_line":""},{"line_number":3504,"context_line":"    @add_hooks"},{"line_number":3505,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":40,"id":"f99f9078_a707dd75","line":3502,"range":{"start_line":3502,"start_character":45,"end_line":3502,"end_character":57},"in_reply_to":"8d5cfc11_ce49f4ce","updated":"2022-02-22 19:24:14.000000000","message":"Maybe reset state to \"error\" here before you send the api request?\n\n\n for share in expired_shares:\n    if share[\u0027status\u0027] \u003d\u003d constants.STATUS_ERROR_DELETING:\n        msg \u003d \n        LOG.info(\"Share %s was soft-deleted but a prior deletion attempt failed. Resetting status and re-attempting deletion\", share[\u0027id\u0027])\n        # reset status here \n    else:\n        LOG.info(\"share %s has expired, will be deleted\", share[\u0027id\u0027])\n    self.share_api.delete(ctxt, share, force\u003dTrue)","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"374fec7f43d6d3303feba60fbe9357eef5da38d8","unresolved":false,"context_lines":[{"line_number":3499,"context_line":""},{"line_number":3500,"context_line":"        for share in expired_shares:"},{"line_number":3501,"context_line":"            LOG.debug(\"share %s has expired, will be deleted\", share[\u0027id\u0027])"},{"line_number":3502,"context_line":"            self.share_api.delete(ctxt, share, force\u003dTrue)"},{"line_number":3503,"context_line":""},{"line_number":3504,"context_line":"    @add_hooks"},{"line_number":3505,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":40,"id":"3e76e2e5_70c8c488","line":3502,"range":{"start_line":3502,"start_character":45,"end_line":3502,"end_character":57},"in_reply_to":"a097b15e_294ee40d","updated":"2022-02-22 00:13:07.000000000","message":"++","commit_id":"7ba429fdccb700c9479c4fa6193ebcc48b41c350"}],"manila/tests/db/migrations/alembic/migrations_data_checks.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2e54f723cad952b1422dc1543484f0f83e39972f","unresolved":true,"context_lines":[{"line_number":3059,"context_line":"            \u0027user_id\u0027: user_id,"},{"line_number":3060,"context_line":"            \u0027project_id\u0027: project_id,"},{"line_number":3061,"context_line":"        }"},{"line_number":3062,"context_line":"        s_table \u003d utils.load_table(\u0027shares\u0027, engine)"},{"line_number":3063,"context_line":"        engine.execute(s_table.insert(share_data))"},{"line_number":3064,"context_line":""},{"line_number":3065,"context_line":"    def check_upgrade(self, engine, data):"},{"line_number":3066,"context_line":"        s_table \u003d utils.load_table(\u0027shares\u0027, engine)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f436dd8_e60e0d05","line":3063,"range":{"start_line":3062,"start_character":8,"end_line":3063,"end_character":50},"updated":"2021-09-01 20:49:10.000000000","message":"A share here needs an instance as well - missing that\u0027s what\u0027s causing the migration failure - here\u0027s an example of setting up a share with instance/s:\n\nhttps://github.com/openstack/manila/blob/2bc27c5678945d92ffd6b885eeaf6f86c9f16f8c/manila/tests/db/migrations/alembic/migrations_data_checks.py#L427-L442","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":true,"context_lines":[{"line_number":3059,"context_line":"            \u0027user_id\u0027: user_id,"},{"line_number":3060,"context_line":"            \u0027project_id\u0027: project_id,"},{"line_number":3061,"context_line":"        }"},{"line_number":3062,"context_line":"        s_table \u003d utils.load_table(\u0027shares\u0027, engine)"},{"line_number":3063,"context_line":"        engine.execute(s_table.insert(share_data))"},{"line_number":3064,"context_line":""},{"line_number":3065,"context_line":"    def check_upgrade(self, engine, data):"},{"line_number":3066,"context_line":"        s_table \u003d utils.load_table(\u0027shares\u0027, engine)"}],"source_content_type":"text/x-python","patch_set":20,"id":"b36ac46e_e836cad8","line":3063,"range":{"start_line":3062,"start_character":8,"end_line":3063,"end_character":50},"in_reply_to":"3f436dd8_e60e0d05","updated":"2021-09-02 10:18:39.000000000","message":"thanks, let me try","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"61370d71eda08922d5dce90b62811ccf2b87c7a5","unresolved":true,"context_lines":[{"line_number":3075,"context_line":"            self.test_case.assertTrue(hasattr(s, \u0027is_soft_deleted\u0027))"},{"line_number":3076,"context_line":"            self.test_case.assertTrue(hasattr(s,"},{"line_number":3077,"context_line":"                                              \u0027scheduled_to_be_deleted_at\u0027))"},{"line_number":3078,"context_line":"            self.test_case.assertFalse(s[\u0027is_soft_deleted\u0027])"},{"line_number":3079,"context_line":"            self.test_case.assertIsNone(s[\u0027scheduled_to_be_deleted_at\u0027])"},{"line_number":3080,"context_line":""},{"line_number":3081,"context_line":"    def check_downgrade(self, engine):"}],"source_content_type":"text/x-python","patch_set":34,"id":"48958648_eb0a88c9","line":3078,"range":{"start_line":3078,"start_character":27,"end_line":3078,"end_character":38},"updated":"2022-02-04 15:54:30.000000000","message":"assertIs(False, s[\u0027is_soft_deleted\u0027])\n\nassertFalse could me misleading sometimes according to this:\nhttps://jamescooke.info/python-unittest-asserttrue-is-truthy-assertfalse-is-falsy.html :)","commit_id":"03fa54edb099342ee51aeb20867b95328901de97"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6eeb724e0fd9ce3688f23510edc3b0e5bb4860ce","unresolved":false,"context_lines":[{"line_number":3075,"context_line":"            self.test_case.assertTrue(hasattr(s, \u0027is_soft_deleted\u0027))"},{"line_number":3076,"context_line":"            self.test_case.assertTrue(hasattr(s,"},{"line_number":3077,"context_line":"                                              \u0027scheduled_to_be_deleted_at\u0027))"},{"line_number":3078,"context_line":"            self.test_case.assertFalse(s[\u0027is_soft_deleted\u0027])"},{"line_number":3079,"context_line":"            self.test_case.assertIsNone(s[\u0027scheduled_to_be_deleted_at\u0027])"},{"line_number":3080,"context_line":""},{"line_number":3081,"context_line":"    def check_downgrade(self, engine):"}],"source_content_type":"text/x-python","patch_set":34,"id":"b17e9ec2_51458783","line":3078,"range":{"start_line":3078,"start_character":27,"end_line":3078,"end_character":38},"in_reply_to":"48958648_eb0a88c9","updated":"2022-02-07 06:46:04.000000000","message":"Done","commit_id":"03fa54edb099342ee51aeb20867b95328901de97"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"0f6203d0321e17fc81e8db9576e199e8dc0a710a","unresolved":false,"context_lines":[{"line_number":3075,"context_line":"            self.test_case.assertTrue(hasattr(s, \u0027is_soft_deleted\u0027))"},{"line_number":3076,"context_line":"            self.test_case.assertTrue(hasattr(s,"},{"line_number":3077,"context_line":"                                              \u0027scheduled_to_be_deleted_at\u0027))"},{"line_number":3078,"context_line":"            self.test_case.assertFalse(s[\u0027is_soft_deleted\u0027])"},{"line_number":3079,"context_line":"            self.test_case.assertIsNone(s[\u0027scheduled_to_be_deleted_at\u0027])"},{"line_number":3080,"context_line":""},{"line_number":3081,"context_line":"    def check_downgrade(self, engine):"}],"source_content_type":"text/x-python","patch_set":34,"id":"773d6b53_f14d4662","line":3078,"range":{"start_line":3078,"start_character":27,"end_line":3078,"end_character":38},"in_reply_to":"b17e9ec2_51458783","updated":"2022-02-07 09:25:23.000000000","message":"after change  i got 0 miss equal False,\nassertIs(0, s[\u0027is_soft_deleted\u0027]) will got False miss euqal 0.\nso i change to self.test_case.assertIn(s[\u0027is_soft_deleted\u0027], (0, False))","commit_id":"03fa54edb099342ee51aeb20867b95328901de97"}],"releasenotes/notes/manila-share-support-recycle-bin-1cc7859affaf8887.yaml":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Manila share support Recycle Bin. the end user can soft delete share to"},{"line_number":5,"context_line":"    Recycle Bin, and can restore the share within 7 dyas, otherwise the share"},{"line_number":6,"context_line":"    will be deleted automatically."},{"line_number":7,"context_line":"upgrade:"},{"line_number":8,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"699d9c4b_3b380ab6","line":5,"range":{"start_line":5,"start_character":52,"end_line":5,"end_character":56},"updated":"2021-08-31 01:25:07.000000000","message":"days","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Manila share support Recycle Bin. the end user can soft delete share to"},{"line_number":5,"context_line":"    Recycle Bin, and can restore the share within 7 dyas, otherwise the share"},{"line_number":6,"context_line":"    will be deleted automatically."},{"line_number":7,"context_line":"upgrade:"},{"line_number":8,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"c7a755d6_7e4f6bf3","line":5,"range":{"start_line":5,"start_character":52,"end_line":5,"end_character":56},"in_reply_to":"699d9c4b_3b380ab6","updated":"2021-08-31 07:24:19.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":7,"context_line":"upgrade:"},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    The share entity now contains two new fields: ``is_soft_deleted`` and"},{"line_number":10,"context_line":"    ``scheduled_to_be_deleted_at``. the ``is_soft_deleted`` field mark the"},{"line_number":11,"context_line":"    share whether in recycle bin. the ``scheduled_to_be_deleted_at`` field"},{"line_number":12,"context_line":"    to show when the share will be deleted automatically. add a new parameter"},{"line_number":13,"context_line":"    ``is_soft_deleted`` to share list api, let end user can query shares in"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"3b06a3c3_cc503301","line":10,"range":{"start_line":10,"start_character":36,"end_line":10,"end_character":37},"updated":"2021-08-31 01:25:07.000000000","message":"T","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":false,"context_lines":[{"line_number":7,"context_line":"upgrade:"},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    The share entity now contains two new fields: ``is_soft_deleted`` and"},{"line_number":10,"context_line":"    ``scheduled_to_be_deleted_at``. the ``is_soft_deleted`` field mark the"},{"line_number":11,"context_line":"    share whether in recycle bin. the ``scheduled_to_be_deleted_at`` field"},{"line_number":12,"context_line":"    to show when the share will be deleted automatically. add a new parameter"},{"line_number":13,"context_line":"    ``is_soft_deleted`` to share list api, let end user can query shares in"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"79341362_c1958ea8","line":10,"range":{"start_line":10,"start_character":36,"end_line":10,"end_character":37},"in_reply_to":"3b06a3c3_cc503301","updated":"2021-08-31 07:24:19.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    The share entity now contains two new fields: ``is_soft_deleted`` and"},{"line_number":10,"context_line":"    ``scheduled_to_be_deleted_at``. the ``is_soft_deleted`` field mark the"},{"line_number":11,"context_line":"    share whether in recycle bin. the ``scheduled_to_be_deleted_at`` field"},{"line_number":12,"context_line":"    to show when the share will be deleted automatically. add a new parameter"},{"line_number":13,"context_line":"    ``is_soft_deleted`` to share list api, let end user can query shares in"},{"line_number":14,"context_line":"    recycle bin."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"e7f3df16_67d5ca6a","line":11,"range":{"start_line":11,"start_character":34,"end_line":11,"end_character":35},"updated":"2021-08-31 01:25:07.000000000","message":"T","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":7,"context_line":"upgrade:"},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    The share entity now contains two new fields: ``is_soft_deleted`` and"},{"line_number":10,"context_line":"    ``scheduled_to_be_deleted_at``. the ``is_soft_deleted`` field mark the"},{"line_number":11,"context_line":"    share whether in recycle bin. the ``scheduled_to_be_deleted_at`` field"},{"line_number":12,"context_line":"    to show when the share will be deleted automatically. add a new parameter"},{"line_number":13,"context_line":"    ``is_soft_deleted`` to share list api, let end user can query shares in"},{"line_number":14,"context_line":"    recycle bin."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"190e0567_fef2284b","line":11,"range":{"start_line":10,"start_character":60,"end_line":11,"end_character":32},"updated":"2021-08-31 01:25:07.000000000","message":"will be used to identify shares in the recycle bin.","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":false,"context_lines":[{"line_number":7,"context_line":"upgrade:"},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    The share entity now contains two new fields: ``is_soft_deleted`` and"},{"line_number":10,"context_line":"    ``scheduled_to_be_deleted_at``. the ``is_soft_deleted`` field mark the"},{"line_number":11,"context_line":"    share whether in recycle bin. the ``scheduled_to_be_deleted_at`` field"},{"line_number":12,"context_line":"    to show when the share will be deleted automatically. add a new parameter"},{"line_number":13,"context_line":"    ``is_soft_deleted`` to share list api, let end user can query shares in"},{"line_number":14,"context_line":"    recycle bin."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"6f91af9c_5ee1c9bf","line":11,"range":{"start_line":10,"start_character":60,"end_line":11,"end_character":32},"in_reply_to":"190e0567_fef2284b","updated":"2021-08-31 07:24:19.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":false,"context_lines":[{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    The share entity now contains two new fields: ``is_soft_deleted`` and"},{"line_number":10,"context_line":"    ``scheduled_to_be_deleted_at``. the ``is_soft_deleted`` field mark the"},{"line_number":11,"context_line":"    share whether in recycle bin. the ``scheduled_to_be_deleted_at`` field"},{"line_number":12,"context_line":"    to show when the share will be deleted automatically. add a new parameter"},{"line_number":13,"context_line":"    ``is_soft_deleted`` to share list api, let end user can query shares in"},{"line_number":14,"context_line":"    recycle bin."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"99b3a140_9c034726","line":11,"range":{"start_line":11,"start_character":34,"end_line":11,"end_character":35},"in_reply_to":"e7f3df16_67d5ca6a","updated":"2021-08-31 07:24:19.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3cf49b8e12661afbf4322009a2849d1f2d6eac86","unresolved":true,"context_lines":[{"line_number":9,"context_line":"    The share entity now contains two new fields: ``is_soft_deleted`` and"},{"line_number":10,"context_line":"    ``scheduled_to_be_deleted_at``. the ``is_soft_deleted`` field mark the"},{"line_number":11,"context_line":"    share whether in recycle bin. the ``scheduled_to_be_deleted_at`` field"},{"line_number":12,"context_line":"    to show when the share will be deleted automatically. add a new parameter"},{"line_number":13,"context_line":"    ``is_soft_deleted`` to share list api, let end user can query shares in"},{"line_number":14,"context_line":"    recycle bin."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"eb151c45_0ceb20d1","line":14,"range":{"start_line":12,"start_character":58,"end_line":14,"end_character":16},"updated":"2021-08-31 01:25:07.000000000","message":"A new parameter called ``is_soft_deleted`` was added to the share list API, and users will be able to query shares \nand filter out the ones that are currently in the recycle bin.","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"9a4da1d8442a0117ea341f0c86d1d06cceb5f337","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    The share entity now contains two new fields: ``is_soft_deleted`` and"},{"line_number":10,"context_line":"    ``scheduled_to_be_deleted_at``. the ``is_soft_deleted`` field mark the"},{"line_number":11,"context_line":"    share whether in recycle bin. the ``scheduled_to_be_deleted_at`` field"},{"line_number":12,"context_line":"    to show when the share will be deleted automatically. add a new parameter"},{"line_number":13,"context_line":"    ``is_soft_deleted`` to share list api, let end user can query shares in"},{"line_number":14,"context_line":"    recycle bin."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"a016bc9f_274f5c5e","line":14,"range":{"start_line":12,"start_character":58,"end_line":14,"end_character":16},"in_reply_to":"eb151c45_0ceb20d1","updated":"2021-08-31 07:24:19.000000000","message":"Done","commit_id":"9cc9128ebb8dd1fed09d3a0b2e1cc0841aa71e92"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"796fa697ff8c1fd4854e1b5187d5135ff4ed4fda","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Manila share support Recycle Bin. the end user can soft delete share to"},{"line_number":5,"context_line":"    Recycle Bin, and can restore the share within 7 days, otherwise the share"},{"line_number":6,"context_line":"    will be deleted automatically."},{"line_number":7,"context_line":"upgrade:"},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    The share entity now contains two new fields: ``is_soft_deleted`` and"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"258da6ec_ef194530","line":6,"range":{"start_line":4,"start_character":4,"end_line":6,"end_character":34},"updated":"2021-09-01 18:42:02.000000000","message":"suggested rewrite:\n\nManila now supports a \"recycle bin\" for shares. End users can soft-delete\ntheir shares and have the ability to restore them for a specified interval.\nThis interval defaults to 7 days and is configurable via \n\"soft_deleted_share_retention_time\". After this time has elapsed, soft-deleted\nshares are automatically cleaned up.","commit_id":"734584e06bb6d26209af331eda826f5b66278928"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"d705bc7fd43631277c2372e6625137a871d8634b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Manila share support Recycle Bin. the end user can soft delete share to"},{"line_number":5,"context_line":"    Recycle Bin, and can restore the share within 7 days, otherwise the share"},{"line_number":6,"context_line":"    will be deleted automatically."},{"line_number":7,"context_line":"upgrade:"},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    The share entity now contains two new fields: ``is_soft_deleted`` and"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"ca9b6040_2c2c45b6","line":6,"range":{"start_line":4,"start_character":4,"end_line":6,"end_character":34},"in_reply_to":"258da6ec_ef194530","updated":"2021-09-02 10:18:39.000000000","message":"Done","commit_id":"734584e06bb6d26209af331eda826f5b66278928"}]}
