)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"30eb48854240430efc72299252c18a3ab62926bd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b1943ba2_013db441","updated":"2024-01-29 16:29:38.000000000","message":"recheck","commit_id":"eb97c25d384cef5fe47f08125efc2ecb01bcd878"},{"author":{"_account_id":36178,"name":"Saravanan Manickam","display_name":"msaravan","email":"manicsaran@gmail.com","username":"msaravan"},"change_message_id":"c764ac0d5195026947f4e9340c8ab15a14d00fc0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c26938c6_adf4ef31","updated":"2024-02-09 02:32:43.000000000","message":"Code looks good, but would like to understand the right workflow in ONTAP so that, we can correct this in next release and avoid shares/snapshots getting into deferred_delete code.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"336939cfad76501f2895abd8f6ac9ce217b10414","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cfe8728c_2b7a1dcb","updated":"2024-02-22 15:02:03.000000000","message":"Thank you for working on this change, please take a look at the comments inline","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c0bcd8d457020dfc60b29024c5b4884576d2bec5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7bf07a05_a93b9123","updated":"2024-02-23 10:23:38.000000000","message":"hi, thanks for your change.\nhere are some comments.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"06b9985c_38ceead8","updated":"2024-02-23 10:19:32.000000000","message":"i\u0027m still going through the code here; thanks for making changes suggested in the specification.. i\u0027ve added some comments inline.. will contnue to add new comments as i advance my review","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"61365c35a882791bd4648ca3a92847b073807696","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"211bf3fd_64759afe","in_reply_to":"c26938c6_adf4ef31","updated":"2024-02-09 10:29:19.000000000","message":"There is no change from ONTAP perspective with current implementation. \n1. admin prefer to delete share in deferred manner if they sure that deletion on storage backend will take time e.g. stop clone split operation.\n2. If ONTAP will able to delete volume and snapshot instantly without any failure, we can avoid deferred delete. But that is not the case with current driver and hence deferred delete where deletion is retried until successful and quota is freed beforehand.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1028190861aa9e222ad7291aeb76f4d2aa310c7c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ce3da497_dd375d1f","updated":"2024-02-26 03:38:06.000000000","message":"Kiran Pawar, i added some comments. 😊","commit_id":"f33609b6219c93ce46b5aa41f70ef4bd957f468f"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"0de2322327be4ef2fc64fb6034f9c30ebac7e1ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e6a29ea4_041b2275","updated":"2024-03-05 22:43:05.000000000","message":"Code looking good, thanks Kiran...\nI am willing to do some testing though, so holding my +2 for a bit","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"6d8d700f13f13bce17229dd616bcac887b748a3e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"eed110f0_a62d40cc","updated":"2024-03-04 09:02:04.000000000","message":"thanks for your change, it LGTM now.","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b0aa781ff8d82423edf0d21afe71775fa8365244","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"4f21d357_897fce51","updated":"2024-03-12 20:23:46.000000000","message":"Kiran: I\u0027ve reported a documentation bug here to seek some docs on this feature: https://bugs.launchpad.net/manila/+bug/2057701","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"ecf3038a07e33f550780d37e570b1d6592643b7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"0496fdc6_8c7db58b","updated":"2024-03-12 20:47:40.000000000","message":"LGTM, thank you for your hard work on this change, Kiran!\nPlease work on Goutham\u0027s comments and propose a follow-up change addressing the issues he pointed out.","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8a8a610fa0ca6313a9e1e251a671fae1fbfcfd09","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"c244c8a6_0cec23bb","updated":"2024-03-12 17:53:18.000000000","message":"Thanks for the changes; there are some doc issues and several test coverage concerns.. please address these in a follow up change. it\u0027s essential that we maintain a good amount of unit test coverage for this feature since testing it functionally in the CI is challenging.","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"187ff8fa29093077dea532e67e352ff273af4802","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"b2257f62_37d0bcb4","updated":"2024-03-13 12:49:20.000000000","message":"https://review.opendev.org/c/openstack/manila/+/912765 added to fix leftover changes","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"}],"contrib/ci/pre_test_hook.sh":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":true,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"# Share and snapshot deferred deletion task interval"},{"line_number":77,"context_line":"echo \"MANILA_DEFERRED_DELETE_TASK_INTERVALL\u003d${MANILA_DEFERRED_DELETE_TASK_INTERVAL:\u003d10}\" \u003e\u003e $localconf"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"MANILA_SERVICE_IMAGE_ENABLED\u003d${MANILA_SERVICE_IMAGE_ENABLED:-False}"},{"line_number":80,"context_line":"DEFAULT_EXTRA_SPECS\u003d${DEFAULT_EXTRA_SPECS:-\"\u0027snapshot_support\u003dTrue create_share_from_snapshot_support\u003dTrue\u0027\"}"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-sh","patch_set":2,"id":"035eec0c_9028d286","line":78,"updated":"2024-02-23 10:19:32.000000000","message":"These CI hooks are deprecated; please don\u0027t add anything here. Instead, add \"MANILA_DEFERRED_DELETE_TASK_INTERVAL\" to\nmanila/devstack/settings with a default value of 10","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"# Share and snapshot deferred deletion task interval"},{"line_number":77,"context_line":"echo \"MANILA_DEFERRED_DELETE_TASK_INTERVALL\u003d${MANILA_DEFERRED_DELETE_TASK_INTERVAL:\u003d10}\" \u003e\u003e $localconf"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"MANILA_SERVICE_IMAGE_ENABLED\u003d${MANILA_SERVICE_IMAGE_ENABLED:-False}"},{"line_number":80,"context_line":"DEFAULT_EXTRA_SPECS\u003d${DEFAULT_EXTRA_SPECS:-\"\u0027snapshot_support\u003dTrue create_share_from_snapshot_support\u003dTrue\u0027\"}"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-sh","patch_set":2,"id":"6508c7c3_5c23ccbc","line":78,"in_reply_to":"035eec0c_9028d286","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"}],"manila/db/api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":true,"context_lines":[{"line_number":381,"context_line":"        context, share_group_id)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"def share_instance_get_all_by_status(context, status, with_share_data\u003dFalse):"},{"line_number":385,"context_line":"    \"\"\"Returns list of share instances that match given status.\"\"\""},{"line_number":386,"context_line":"    return IMPL.share_instance_get_all_by_status("},{"line_number":387,"context_line":"        context, status, with_share_data\u003dwith_share_data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"8a28888a_37982ff2","line":384,"updated":"2024-02-23 10:19:32.000000000","message":"please use \"share_instance_get_all\" with an appropriate filter instead of adding a new method","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        context, share_group_id)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"def share_instance_get_all_by_status(context, status, with_share_data\u003dFalse):"},{"line_number":385,"context_line":"    \"\"\"Returns list of share instances that match given status.\"\"\""},{"line_number":386,"context_line":"    return IMPL.share_instance_get_all_by_status("},{"line_number":387,"context_line":"        context, status, with_share_data\u003dwith_share_data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"0c761fa1_1ab5ceb2","line":384,"in_reply_to":"8a28888a_37982ff2","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2639c69f8fc4f683e8e9b98850bda486d2ea73f5","unresolved":true,"context_lines":[{"line_number":322,"context_line":"        need_to_update_usages\u003dneed_to_update_usages)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"def update_share_instance_usages(context, instance_id, session\u003dNone):"},{"line_number":326,"context_line":"    \"\"\"Update share instance usage\"\"\""},{"line_number":327,"context_line":"    return IMPL.update_share_instance_usages(context, instance_id)"},{"line_number":328,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fc5b5173_3640c894","line":325,"range":{"start_line":325,"start_character":4,"end_line":325,"end_character":32},"updated":"2024-03-07 15:31:19.000000000","message":"can you please call this:\n\n  update_share_instance_quota_usages\n  \ninstead? provides a bit more context","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6539d42ef1c8f8e178715a95077aadf6c2d56031","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        need_to_update_usages\u003dneed_to_update_usages)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"def update_share_instance_usages(context, instance_id, session\u003dNone):"},{"line_number":326,"context_line":"    \"\"\"Update share instance usage\"\"\""},{"line_number":327,"context_line":"    return IMPL.update_share_instance_usages(context, instance_id)"},{"line_number":328,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5002ab42_6e81d8c8","line":325,"range":{"start_line":325,"start_character":4,"end_line":325,"end_character":32},"in_reply_to":"fc5b5173_3640c894","updated":"2024-03-11 10:55:17.000000000","message":"Done","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"72574b5b0cd90423fe5ac116f08a4ab44eccbf39","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        need_to_update_usages\u003dneed_to_update_usages)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"def update_share_instance_usages(context, instance_id, session\u003dNone):"},{"line_number":326,"context_line":"    \"\"\"Update share instance usage\"\"\""},{"line_number":327,"context_line":"    return IMPL.update_share_instance_usages(context, instance_id)"},{"line_number":328,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"91a006f2_aa8c2e89","line":325,"range":{"start_line":325,"start_character":4,"end_line":325,"end_character":32},"in_reply_to":"fc5b5173_3640c894","updated":"2024-03-09 01:43:54.000000000","message":"Done","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":true,"context_lines":[{"line_number":1840,"context_line":"        query \u003d query.filter("},{"line_number":1841,"context_line":"            models.ShareInstance.share_server_id \u003d\u003d share_server_id)"},{"line_number":1842,"context_line":""},{"line_number":1843,"context_line":"    if not context.is_admin:"},{"line_number":1844,"context_line":"        query \u003d query.filter("},{"line_number":1845,"context_line":"            models.ShareInstance.status !\u003d ("},{"line_number":1846,"context_line":"                constants.STATUS_ERROR_DEFERRED_DELETING))"}],"source_content_type":"text/x-python","patch_set":2,"id":"0cd27b51_bb8ac2a3","line":1843,"range":{"start_line":1843,"start_character":0,"end_line":1843,"end_character":28},"updated":"2024-02-23 10:19:32.000000000","message":"Using context.is_admin is discouraged. It\u0027s tied to a policy that\u0027s too broad! We strive for granular RBAC.. You must introduce a new custom policy that defaults to admin; but doing this allows deployers to unlock this specific capability to non-admin users... a big example is the reader role persona.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":1840,"context_line":"        query \u003d query.filter("},{"line_number":1841,"context_line":"            models.ShareInstance.share_server_id \u003d\u003d share_server_id)"},{"line_number":1842,"context_line":""},{"line_number":1843,"context_line":"    if not context.is_admin:"},{"line_number":1844,"context_line":"        query \u003d query.filter("},{"line_number":1845,"context_line":"            models.ShareInstance.status !\u003d ("},{"line_number":1846,"context_line":"                constants.STATUS_ERROR_DEFERRED_DELETING))"}],"source_content_type":"text/x-python","patch_set":2,"id":"95e067d7_129cb34b","line":1843,"range":{"start_line":1843,"start_character":0,"end_line":1843,"end_character":28},"in_reply_to":"0cd27b51_bb8ac2a3","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":true,"context_lines":[{"line_number":2018,"context_line":"    return instances"},{"line_number":2019,"context_line":""},{"line_number":2020,"context_line":""},{"line_number":2021,"context_line":"@require_context"},{"line_number":2022,"context_line":"def share_instance_get_all_by_status(context, status, with_share_data\u003dFalse):"},{"line_number":2023,"context_line":"    \"\"\"Returns list of share instance with given status.\"\"\""},{"line_number":2024,"context_line":"    session \u003d get_session()"},{"line_number":2025,"context_line":"    if not context.is_admin and status \u003d\u003d ("},{"line_number":2026,"context_line":"            constants.STATUS_ERROR_DEFERRED_DELETING):"},{"line_number":2027,"context_line":"        return None"},{"line_number":2028,"context_line":""},{"line_number":2029,"context_line":"    result \u003d ("},{"line_number":2030,"context_line":"        model_query(context, models.ShareInstance).filter("},{"line_number":2031,"context_line":"            models.ShareInstance.status \u003d\u003d status,"},{"line_number":2032,"context_line":"        ).all()"},{"line_number":2033,"context_line":"    )"},{"line_number":2034,"context_line":""},{"line_number":2035,"context_line":"    if with_share_data:"},{"line_number":2036,"context_line":"        result \u003d _set_instances_share_data(context, result, session)"},{"line_number":2037,"context_line":""},{"line_number":2038,"context_line":"    return result"},{"line_number":2039,"context_line":""},{"line_number":2040,"context_line":""},{"line_number":2041,"context_line":"################"}],"source_content_type":"text/x-python","patch_set":2,"id":"38cb466f_728b2c62","line":2038,"range":{"start_line":2021,"start_character":0,"end_line":2038,"end_character":17},"updated":"2024-02-23 10:19:32.000000000","message":"There\u0027s a generic \"share_instance_get_all\" method (L1790) that you can add status filtering to. Introducing a specific method is unnecessary code duplication","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":2018,"context_line":"    return instances"},{"line_number":2019,"context_line":""},{"line_number":2020,"context_line":""},{"line_number":2021,"context_line":"@require_context"},{"line_number":2022,"context_line":"def share_instance_get_all_by_status(context, status, with_share_data\u003dFalse):"},{"line_number":2023,"context_line":"    \"\"\"Returns list of share instance with given status.\"\"\""},{"line_number":2024,"context_line":"    session \u003d get_session()"},{"line_number":2025,"context_line":"    if not context.is_admin and status \u003d\u003d ("},{"line_number":2026,"context_line":"            constants.STATUS_ERROR_DEFERRED_DELETING):"},{"line_number":2027,"context_line":"        return None"},{"line_number":2028,"context_line":""},{"line_number":2029,"context_line":"    result \u003d ("},{"line_number":2030,"context_line":"        model_query(context, models.ShareInstance).filter("},{"line_number":2031,"context_line":"            models.ShareInstance.status \u003d\u003d status,"},{"line_number":2032,"context_line":"        ).all()"},{"line_number":2033,"context_line":"    )"},{"line_number":2034,"context_line":""},{"line_number":2035,"context_line":"    if with_share_data:"},{"line_number":2036,"context_line":"        result \u003d _set_instances_share_data(context, result, session)"},{"line_number":2037,"context_line":""},{"line_number":2038,"context_line":"    return result"},{"line_number":2039,"context_line":""},{"line_number":2040,"context_line":""},{"line_number":2041,"context_line":"################"}],"source_content_type":"text/x-python","patch_set":2,"id":"6e1f91ca_2660dbb3","line":2038,"range":{"start_line":2021,"start_character":0,"end_line":2038,"end_character":17},"in_reply_to":"38cb466f_728b2c62","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":true,"context_lines":[{"line_number":2176,"context_line":"################"},{"line_number":2177,"context_line":""},{"line_number":2178,"context_line":""},{"line_number":2179,"context_line":"def _process_share_filters(context, query, filters, project_id\u003dNone,"},{"line_number":2180,"context_line":"                           is_public\u003dFalse):"},{"line_number":2181,"context_line":"    if filters is None:"},{"line_number":2182,"context_line":"        filters \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"f22f0287_a42ade24","line":2179,"range":{"start_line":2179,"start_character":27,"end_line":2179,"end_character":34},"updated":"2024-02-23 10:19:32.000000000","message":"This is a further example of using the hardcoded admin check (context.is_admin).. don\u0027t do this please; use a custom policy.. and you can evaluate this custom policy in the API modules, and set the appropriate filter in the respective sqlalchemy API filters\nYou don\u0027t need this change if you do that.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8a8a610fa0ca6313a9e1e251a671fae1fbfcfd09","unresolved":false,"context_lines":[{"line_number":2176,"context_line":"################"},{"line_number":2177,"context_line":""},{"line_number":2178,"context_line":""},{"line_number":2179,"context_line":"def _process_share_filters(context, query, filters, project_id\u003dNone,"},{"line_number":2180,"context_line":"                           is_public\u003dFalse):"},{"line_number":2181,"context_line":"    if filters is None:"},{"line_number":2182,"context_line":"        filters \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"203e2ff4_38a1a007","line":2179,"range":{"start_line":2179,"start_character":27,"end_line":2179,"end_character":34},"in_reply_to":"191f8203_748aa78e","updated":"2024-03-12 17:53:18.000000000","message":"this is resolved","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":true,"context_lines":[{"line_number":2176,"context_line":"################"},{"line_number":2177,"context_line":""},{"line_number":2178,"context_line":""},{"line_number":2179,"context_line":"def _process_share_filters(context, query, filters, project_id\u003dNone,"},{"line_number":2180,"context_line":"                           is_public\u003dFalse):"},{"line_number":2181,"context_line":"    if filters is None:"},{"line_number":2182,"context_line":"        filters \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"191f8203_748aa78e","line":2179,"range":{"start_line":2179,"start_character":27,"end_line":2179,"end_character":34},"in_reply_to":"f22f0287_a42ade24","updated":"2024-02-23 16:32:59.000000000","message":"is it ok to have admin check in api layer like updated patchset ?","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2639c69f8fc4f683e8e9b98850bda486d2ea73f5","unresolved":true,"context_lines":[{"line_number":1843,"context_line":"    status \u003d filters.get(\u0027status\u0027)"},{"line_number":1844,"context_line":"    if status:"},{"line_number":1845,"context_line":"        query \u003d query.filter("},{"line_number":1846,"context_line":"            models.ShareInstance.status \u003d\u003d status)"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    # Returns list of share instances that satisfy filters."},{"line_number":1849,"context_line":"    query \u003d query.all()"}],"source_content_type":"text/x-python","patch_set":7,"id":"b6ddf414_07b6a567","line":1846,"updated":"2024-03-07 15:31:19.000000000","message":"nit: redundant line break","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6539d42ef1c8f8e178715a95077aadf6c2d56031","unresolved":false,"context_lines":[{"line_number":1843,"context_line":"    status \u003d filters.get(\u0027status\u0027)"},{"line_number":1844,"context_line":"    if status:"},{"line_number":1845,"context_line":"        query \u003d query.filter("},{"line_number":1846,"context_line":"            models.ShareInstance.status \u003d\u003d status)"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    # Returns list of share instances that satisfy filters."},{"line_number":1849,"context_line":"    query \u003d query.all()"}],"source_content_type":"text/x-python","patch_set":7,"id":"46ba1bef_4dffe53b","line":1846,"in_reply_to":"b6ddf414_07b6a567","updated":"2024-03-11 10:55:17.000000000","message":"Done","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"72574b5b0cd90423fe5ac116f08a4ab44eccbf39","unresolved":false,"context_lines":[{"line_number":1843,"context_line":"    status \u003d filters.get(\u0027status\u0027)"},{"line_number":1844,"context_line":"    if status:"},{"line_number":1845,"context_line":"        query \u003d query.filter("},{"line_number":1846,"context_line":"            models.ShareInstance.status \u003d\u003d status)"},{"line_number":1847,"context_line":""},{"line_number":1848,"context_line":"    # Returns list of share instances that satisfy filters."},{"line_number":1849,"context_line":"    query \u003d query.all()"}],"source_content_type":"text/x-python","patch_set":7,"id":"85ab706b_b108b8cf","line":1846,"in_reply_to":"b6ddf414_07b6a567","updated":"2024-03-09 01:43:54.000000000","message":"Done","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2639c69f8fc4f683e8e9b98850bda486d2ea73f5","unresolved":true,"context_lines":[{"line_number":1855,"context_line":"                                  is_replica\u003dFalse,"},{"line_number":1856,"context_line":"                                  deferred_delete\u003dFalse):"},{"line_number":1857,"context_line":"    deltas \u003d {}"},{"line_number":1858,"context_line":"    no_instances_remain \u003d len(share.instances) \u003d\u003d 0"},{"line_number":1859,"context_line":"    if deferred_delete:"},{"line_number":1860,"context_line":"        no_instances_remain \u003d True"},{"line_number":1861,"context_line":"    share_usages_to_release \u003d {\"shares\": -1, \"gigabytes\": -share[\u0027size\u0027]}"},{"line_number":1862,"context_line":"    replica_usages_to_release \u003d {\"share_replicas\": -1,"},{"line_number":1863,"context_line":"                                 \"replica_gigabytes\": -share[\u0027size\u0027]}"}],"source_content_type":"text/x-python","patch_set":7,"id":"0f3fda3d_a6fccc3e","line":1860,"range":{"start_line":1858,"start_character":0,"end_line":1860,"end_character":34},"updated":"2024-03-07 15:31:19.000000000","message":"Please add a comment for a future maintainer:\n\n    # if share is expected to be deferred_deleted, we drop its quotas\n    # whether or not it has additional share instances\n    no_instances_remain \u003d deferred_delete or len(share.instances) \u003d\u003d 0","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6539d42ef1c8f8e178715a95077aadf6c2d56031","unresolved":false,"context_lines":[{"line_number":1855,"context_line":"                                  is_replica\u003dFalse,"},{"line_number":1856,"context_line":"                                  deferred_delete\u003dFalse):"},{"line_number":1857,"context_line":"    deltas \u003d {}"},{"line_number":1858,"context_line":"    no_instances_remain \u003d len(share.instances) \u003d\u003d 0"},{"line_number":1859,"context_line":"    if deferred_delete:"},{"line_number":1860,"context_line":"        no_instances_remain \u003d True"},{"line_number":1861,"context_line":"    share_usages_to_release \u003d {\"shares\": -1, \"gigabytes\": -share[\u0027size\u0027]}"},{"line_number":1862,"context_line":"    replica_usages_to_release \u003d {\"share_replicas\": -1,"},{"line_number":1863,"context_line":"                                 \"replica_gigabytes\": -share[\u0027size\u0027]}"}],"source_content_type":"text/x-python","patch_set":7,"id":"2178c0ac_f305df0c","line":1860,"range":{"start_line":1858,"start_character":0,"end_line":1860,"end_character":34},"in_reply_to":"0f3fda3d_a6fccc3e","updated":"2024-03-11 10:55:17.000000000","message":"Done","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"72574b5b0cd90423fe5ac116f08a4ab44eccbf39","unresolved":false,"context_lines":[{"line_number":1855,"context_line":"                                  is_replica\u003dFalse,"},{"line_number":1856,"context_line":"                                  deferred_delete\u003dFalse):"},{"line_number":1857,"context_line":"    deltas \u003d {}"},{"line_number":1858,"context_line":"    no_instances_remain \u003d len(share.instances) \u003d\u003d 0"},{"line_number":1859,"context_line":"    if deferred_delete:"},{"line_number":1860,"context_line":"        no_instances_remain \u003d True"},{"line_number":1861,"context_line":"    share_usages_to_release \u003d {\"shares\": -1, \"gigabytes\": -share[\u0027size\u0027]}"},{"line_number":1862,"context_line":"    replica_usages_to_release \u003d {\"share_replicas\": -1,"},{"line_number":1863,"context_line":"                                 \"replica_gigabytes\": -share[\u0027size\u0027]}"}],"source_content_type":"text/x-python","patch_set":7,"id":"37e47491_20797c42","line":1860,"range":{"start_line":1858,"start_character":0,"end_line":1860,"end_character":34},"in_reply_to":"0f3fda3d_a6fccc3e","updated":"2024-03-09 01:43:54.000000000","message":"Done","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2639c69f8fc4f683e8e9b98850bda486d2ea73f5","unresolved":true,"context_lines":[{"line_number":1900,"context_line":"            QUOTAS.rollback("},{"line_number":1901,"context_line":"                context, reservations,"},{"line_number":1902,"context_line":"                share_type_id\u003dinstance_ref[\u0027share_type_id\u0027])"},{"line_number":1903,"context_line":"        if deferred_delete:"},{"line_number":1904,"context_line":"            raise e"},{"line_number":1905,"context_line":""},{"line_number":1906,"context_line":""},{"line_number":1907,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":7,"id":"44e86346_31c02432","line":1904,"range":{"start_line":1903,"start_character":8,"end_line":1904,"end_character":19},"updated":"2024-03-07 15:31:19.000000000","message":"why? \n\nWhat\u0027s the advantage of bubbling up this error? There\u0027s nothing a user can do if quota cleanups fail.. administrators can look at logs and fix quota errors..","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a5522fe9136522f52d424a9763e9d70119df1a7d","unresolved":true,"context_lines":[{"line_number":1900,"context_line":"            QUOTAS.rollback("},{"line_number":1901,"context_line":"                context, reservations,"},{"line_number":1902,"context_line":"                share_type_id\u003dinstance_ref[\u0027share_type_id\u0027])"},{"line_number":1903,"context_line":"        if deferred_delete:"},{"line_number":1904,"context_line":"            raise e"},{"line_number":1905,"context_line":""},{"line_number":1906,"context_line":""},{"line_number":1907,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":7,"id":"b8f9499f_aee00ef4","line":1904,"range":{"start_line":1903,"start_character":8,"end_line":1904,"end_character":19},"in_reply_to":"44e86346_31c02432","updated":"2024-03-08 01:12:58.000000000","message":"in share manager layer, we call\nself.db.update_share_instance_usages() to handel quota in def delete_share_instance().\nif cleanup quota success, share instance will be set deferred_deleting.\nshare instance in deferred_deleting means quota has been cleanup.\nif we not raise here, The share instance state must be set to deferred_deleting, regardless of whether the quota is deleted.When a periodic task deletes a share instance in the deferred_deleting state, the quota is not processed.","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6539d42ef1c8f8e178715a95077aadf6c2d56031","unresolved":false,"context_lines":[{"line_number":1900,"context_line":"            QUOTAS.rollback("},{"line_number":1901,"context_line":"                context, reservations,"},{"line_number":1902,"context_line":"                share_type_id\u003dinstance_ref[\u0027share_type_id\u0027])"},{"line_number":1903,"context_line":"        if deferred_delete:"},{"line_number":1904,"context_line":"            raise e"},{"line_number":1905,"context_line":""},{"line_number":1906,"context_line":""},{"line_number":1907,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":7,"id":"844bac83_1423c2c4","line":1904,"range":{"start_line":1903,"start_character":8,"end_line":1904,"end_character":19},"in_reply_to":"b8f9499f_aee00ef4","updated":"2024-03-11 10:55:17.000000000","message":"I was under impression that deferred deletion is special case as its use case of deleting quota quickly and performing driver deletion later in background. But if you assume that we need to ignore it and LOG the failure and continue, I am fine by that. Made changes accordingly","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"72574b5b0cd90423fe5ac116f08a4ab44eccbf39","unresolved":true,"context_lines":[{"line_number":1900,"context_line":"            QUOTAS.rollback("},{"line_number":1901,"context_line":"                context, reservations,"},{"line_number":1902,"context_line":"                share_type_id\u003dinstance_ref[\u0027share_type_id\u0027])"},{"line_number":1903,"context_line":"        if deferred_delete:"},{"line_number":1904,"context_line":"            raise e"},{"line_number":1905,"context_line":""},{"line_number":1906,"context_line":""},{"line_number":1907,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":7,"id":"3310bc60_864b3fef","line":1904,"range":{"start_line":1903,"start_character":8,"end_line":1904,"end_character":19},"in_reply_to":"b8f9499f_aee00ef4","updated":"2024-03-09 01:43:54.000000000","message":"True... that\u0027s what i mean.. Quota cleanups were never fatal errors; so, _even_ if we failed to prematurely release quotas, we could LOG the failure like we\u0027re doing and allow the share to go into \"deferred_deleting\"... \n\nThis means that the administrator must rectify quotas like always since _something_ went wrong during quota cleanup that we weren\u0027t able to take care of ourselves. Deferred deletion isn\u0027t a special case.. we always ignore quota cleanup errors.. \n\nDoes this make sense?","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4f9c19d0b2085ae0837a3ef0c0b32b7139d1f1df","unresolved":true,"context_lines":[{"line_number":2267,"context_line":"    if not filters.get(\u0027list_deferred_delete\u0027):"},{"line_number":2268,"context_line":"        query \u003d query.filter("},{"line_number":2269,"context_line":"            models.ShareInstance.status !\u003d ("},{"line_number":2270,"context_line":"                constants.STATUS_ERROR_DEFERRED_DELETING))"},{"line_number":2271,"context_line":""},{"line_number":2272,"context_line":"    return query"},{"line_number":2273,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"a56cf94f_21a742a9","line":2270,"range":{"start_line":2270,"start_character":26,"end_line":2270,"end_character":56},"updated":"2024-03-11 22:39:53.000000000","message":"shouldn\u0027t you also filter out `STATUS_DEFERRED_DELETING`?\n\n\n\nand you\u0027re missing these changes for `_share_snapshot_get_all_with_filters`","commit_id":"5056e3888033e14494d9cd2471bfaccce898ed1a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"187ff8fa29093077dea532e67e352ff273af4802","unresolved":false,"context_lines":[{"line_number":2267,"context_line":"    if not filters.get(\u0027list_deferred_delete\u0027):"},{"line_number":2268,"context_line":"        query \u003d query.filter("},{"line_number":2269,"context_line":"            models.ShareInstance.status !\u003d ("},{"line_number":2270,"context_line":"                constants.STATUS_ERROR_DEFERRED_DELETING))"},{"line_number":2271,"context_line":""},{"line_number":2272,"context_line":"    return query"},{"line_number":2273,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"a52b4019_4e92812c","line":2270,"range":{"start_line":2270,"start_character":26,"end_line":2270,"end_character":56},"in_reply_to":"a56cf94f_21a742a9","updated":"2024-03-13 12:49:20.000000000","message":"Done","commit_id":"5056e3888033e14494d9cd2471bfaccce898ed1a"}],"manila/policies/base.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4f9c19d0b2085ae0837a3ef0c0b32b7139d1f1df","unresolved":true,"context_lines":[{"line_number":123,"context_line":"        description\u003d\u0027Privileged user who can select host during scheduling\u0027,"},{"line_number":124,"context_line":"        scope_types\u003d[\u0027project\u0027]),"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    policy.RuleDefault("},{"line_number":127,"context_line":"        name\u003d\u0027context_is_state_admin\u0027,"},{"line_number":128,"context_line":"        check_str\u003d\u0027role:admin\u0027,"},{"line_number":129,"context_line":"        description\u003d\u0027Privileged user who can see shares in deferred \u0027"},{"line_number":130,"context_line":"                    \u0027deleting states\u0027,"},{"line_number":131,"context_line":"        scope_types\u003d[\u0027project\u0027]),"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    # ***Legacy/deprecated unscoped rules*** #"},{"line_number":134,"context_line":"    # can be removed after \"enforce_scope\" defaults to True in oslo.policy"}],"source_content_type":"text/x-python","patch_set":9,"id":"d9020c75_af04baba","line":131,"range":{"start_line":126,"start_character":2,"end_line":131,"end_character":33},"updated":"2024-03-11 22:39:53.000000000","message":"this seems like overkill.. \n\nI was hoping we can introduce a simple policy for this in policies/shares.py:\n\n\n```\n    policy.DocumentedRuleDefault(\n        name\u003dBASE_POLICY_NAME % \u0027list_resources_in_deferred_deletion_states\u0027,\n        check_str\u003dbase.ADMIN,\n        scope_types\u003d[\u0027project\u0027],\n        description\u003d\"List shares and share snapshots whose deletion has been deferred\",\n        operations\u003d[\n            {\n                \u0027method\u0027: \u0027GET\u0027,\n                \u0027path\u0027: \u0027/v2/shares\u0027,\n            },\n            {\n                \u0027method\u0027: \u0027GET\u0027,\n                \u0027path\u0027: \u0027/v2/snapshots\u0027,\n            }\n        ],\n    ),\n\n```\n\n\n\n\nYou can remove the special code added in https://review.opendev.org/c/openstack/manila/+/907051/9/manila/policy.py","commit_id":"5056e3888033e14494d9cd2471bfaccce898ed1a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"187ff8fa29093077dea532e67e352ff273af4802","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        description\u003d\u0027Privileged user who can select host during scheduling\u0027,"},{"line_number":124,"context_line":"        scope_types\u003d[\u0027project\u0027]),"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    policy.RuleDefault("},{"line_number":127,"context_line":"        name\u003d\u0027context_is_state_admin\u0027,"},{"line_number":128,"context_line":"        check_str\u003d\u0027role:admin\u0027,"},{"line_number":129,"context_line":"        description\u003d\u0027Privileged user who can see shares in deferred \u0027"},{"line_number":130,"context_line":"                    \u0027deleting states\u0027,"},{"line_number":131,"context_line":"        scope_types\u003d[\u0027project\u0027]),"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    # ***Legacy/deprecated unscoped rules*** #"},{"line_number":134,"context_line":"    # can be removed after \"enforce_scope\" defaults to True in oslo.policy"}],"source_content_type":"text/x-python","patch_set":9,"id":"3d9842c9_6af8efa8","line":131,"range":{"start_line":126,"start_character":2,"end_line":131,"end_character":33},"in_reply_to":"d9020c75_af04baba","updated":"2024-03-13 12:49:20.000000000","message":"Done","commit_id":"5056e3888033e14494d9cd2471bfaccce898ed1a"}],"manila/policies/share_snapshot.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8a8a610fa0ca6313a9e1e251a671fae1fbfcfd09","unresolved":true,"context_lines":[{"line_number":98,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027list_snapshots_in_deferred_deletion_states\u0027,"},{"line_number":99,"context_line":"    check_str\u003dbase.RULE_ADMIN_API,"},{"line_number":100,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":101,"context_line":"    deprecated_since\u003d\u00272023.2/Bobcat\u0027"},{"line_number":102,"context_line":")"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"share_snapshot_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":11,"id":"96d8d48a_4dc71c2e","line":101,"range":{"start_line":101,"start_character":22,"end_line":101,"end_character":35},"updated":"2024-03-12 17:53:18.000000000","message":"2024.1/Caracal","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"187ff8fa29093077dea532e67e352ff273af4802","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027list_snapshots_in_deferred_deletion_states\u0027,"},{"line_number":99,"context_line":"    check_str\u003dbase.RULE_ADMIN_API,"},{"line_number":100,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":101,"context_line":"    deprecated_since\u003d\u00272023.2/Bobcat\u0027"},{"line_number":102,"context_line":")"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"share_snapshot_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":11,"id":"2b9a5903_51469010","line":101,"range":{"start_line":101,"start_character":22,"end_line":101,"end_character":35},"in_reply_to":"96d8d48a_4dc71c2e","updated":"2024-03-13 12:49:20.000000000","message":"Done","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"}],"manila/policies/shares.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8a8a610fa0ca6313a9e1e251a671fae1fbfcfd09","unresolved":true,"context_lines":[{"line_number":224,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027list_shares_in_deferred_deletion_states\u0027,"},{"line_number":225,"context_line":"    check_str\u003dbase.RULE_ADMIN_API,"},{"line_number":226,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":227,"context_line":"    deprecated_since\u003d\u00272023.2/Bobcat\u0027"},{"line_number":228,"context_line":")"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"shares_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":11,"id":"7f6d3c17_4487123b","line":227,"range":{"start_line":227,"start_character":22,"end_line":227,"end_character":35},"updated":"2024-03-12 17:53:18.000000000","message":"2024.1/Caracal","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"187ff8fa29093077dea532e67e352ff273af4802","unresolved":false,"context_lines":[{"line_number":224,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027list_shares_in_deferred_deletion_states\u0027,"},{"line_number":225,"context_line":"    check_str\u003dbase.RULE_ADMIN_API,"},{"line_number":226,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":227,"context_line":"    deprecated_since\u003d\u00272023.2/Bobcat\u0027"},{"line_number":228,"context_line":")"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"shares_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":11,"id":"64f2c637_a5b1dffe","line":227,"range":{"start_line":227,"start_character":22,"end_line":227,"end_character":35},"in_reply_to":"7f6d3c17_4487123b","updated":"2024-03-13 12:49:20.000000000","message":"Done","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"}],"manila/share/api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":true,"context_lines":[{"line_number":58,"context_line":"                ),"},{"line_number":59,"context_line":"    cfg.BoolOpt(\u0027is_deferred_deletion_enabled\u0027,"},{"line_number":60,"context_line":"                default\u003dFalse,"},{"line_number":61,"context_line":"                help\u003d\u0027Whether to delete share/share-snapshot immediately \u0027"},{"line_number":62,"context_line":"                     \u0027or in deferred manner.\u0027),"},{"line_number":63,"context_line":"]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6c3609_10844925","line":62,"range":{"start_line":61,"start_character":22,"end_line":62,"end_character":44},"updated":"2024-02-23 10:19:32.000000000","message":"Whether to delete shares and share snapshots in a in deferred manner. Setting this option to True will cause quotas to be released immediately if a deletion request is accepted. Deletions may eventually fail, and rectifying them will require manual intervention.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                ),"},{"line_number":59,"context_line":"    cfg.BoolOpt(\u0027is_deferred_deletion_enabled\u0027,"},{"line_number":60,"context_line":"                default\u003dFalse,"},{"line_number":61,"context_line":"                help\u003d\u0027Whether to delete share/share-snapshot immediately \u0027"},{"line_number":62,"context_line":"                     \u0027or in deferred manner.\u0027),"},{"line_number":63,"context_line":"]"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":2,"id":"356b44ec_eefc1f22","line":62,"range":{"start_line":61,"start_character":22,"end_line":62,"end_character":44},"in_reply_to":"da6c3609_10844925","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c0bcd8d457020dfc60b29024c5b4884576d2bec5","unresolved":true,"context_lines":[{"line_number":1403,"context_line":"                \"statuses\": statuses}"},{"line_number":1404,"context_line":"            raise exception.InvalidShareInstance(reason\u003dmsg)"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"        if share_instance[\u0027status\u0027] \u003d\u003d ("},{"line_number":1407,"context_line":"                constants.STATUS_ERROR_DEFERRED_DELETING):"},{"line_number":1408,"context_line":"            self.db.share_instance_delete(context, share_instance[\u0027id\u0027])"},{"line_number":1409,"context_line":"            return"},{"line_number":1410,"context_line":""},{"line_number":1411,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1412,"context_line":"        if force and deferred_delete:"}],"source_content_type":"text/x-python","patch_set":2,"id":"a9f3c268_04fb78af","line":1409,"range":{"start_line":1406,"start_character":8,"end_line":1409,"end_character":18},"updated":"2024-02-23 10:23:38.000000000","message":"if share_instance[\u0027status\u0027] \u003d\u003d constants.STATUS_ERROR_DEFERRED_DELETING\nthat means force must be true and deferred_deleted must be false,\nIn other words, the ability to execute to line 1408 means that we are following the original logic to force the deletion of the share instance. Therefore, you cannot delete a share instance directly from the database, which may result in the share remaining on the storage backend.\nThe scheduled task at the share manager layer will try again to delete the share in the error_deferred_deleting state. If the administrator manually deletes this share, ask the manager driver to delete it again. If the deletion fails, keep the error_deferred_deleting state. Unless the administrator uses the unmanage api to ignore the underlying storage residual share.\nSo, I think we should delete lines 1406 through 1409.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":true,"context_lines":[{"line_number":1403,"context_line":"                \"statuses\": statuses}"},{"line_number":1404,"context_line":"            raise exception.InvalidShareInstance(reason\u003dmsg)"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"        if share_instance[\u0027status\u0027] \u003d\u003d ("},{"line_number":1407,"context_line":"                constants.STATUS_ERROR_DEFERRED_DELETING):"},{"line_number":1408,"context_line":"            self.db.share_instance_delete(context, share_instance[\u0027id\u0027])"},{"line_number":1409,"context_line":"            return"},{"line_number":1410,"context_line":""},{"line_number":1411,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1412,"context_line":"        if force and deferred_delete:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1938c151_0392e8e5","line":1409,"range":{"start_line":1406,"start_character":8,"end_line":1409,"end_character":18},"updated":"2024-02-23 10:19:32.000000000","message":"iiuc this code is reached only if \"force\" is used to delete a share; and if a share is in this state \"is_deferred_deletion_enabled\" is set to True. Why do we want to prevent \"force\" and deferred deletions being used together?\nIt\u0027s going to become a pain to have to turn off deferred deletion to force some cleanup. Using \"force\" will wipe out the share/snapshot from manila and release the quota anyway; and \"force\" is expected to work whatever state the share is in.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":1403,"context_line":"                \"statuses\": statuses}"},{"line_number":1404,"context_line":"            raise exception.InvalidShareInstance(reason\u003dmsg)"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"        if share_instance[\u0027status\u0027] \u003d\u003d ("},{"line_number":1407,"context_line":"                constants.STATUS_ERROR_DEFERRED_DELETING):"},{"line_number":1408,"context_line":"            self.db.share_instance_delete(context, share_instance[\u0027id\u0027])"},{"line_number":1409,"context_line":"            return"},{"line_number":1410,"context_line":""},{"line_number":1411,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1412,"context_line":"        if force and deferred_delete:"}],"source_content_type":"text/x-python","patch_set":2,"id":"d02cc860_5c6e9ec8","line":1409,"range":{"start_line":1406,"start_character":8,"end_line":1409,"end_character":18},"in_reply_to":"1938c151_0392e8e5","updated":"2024-02-23 16:32:59.000000000","message":"I see, then we should consider only Force if both specified since force will always have priority. And if force is used, we will do regular/immediate deletion instead of deferred_deletion.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1028190861aa9e222ad7291aeb76f4d2aa310c7c","unresolved":true,"context_lines":[{"line_number":1403,"context_line":"                \"statuses\": statuses}"},{"line_number":1404,"context_line":"            raise exception.InvalidShareInstance(reason\u003dmsg)"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"        if share_instance[\u0027status\u0027] \u003d\u003d ("},{"line_number":1407,"context_line":"                constants.STATUS_ERROR_DEFERRED_DELETING):"},{"line_number":1408,"context_line":"            self.db.share_instance_delete(context, share_instance[\u0027id\u0027])"},{"line_number":1409,"context_line":"            return"},{"line_number":1410,"context_line":""},{"line_number":1411,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1412,"context_line":"        if force and deferred_delete:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9dd1d38b_8d8ef4cd","line":1409,"range":{"start_line":1406,"start_character":8,"end_line":1409,"end_character":18},"in_reply_to":"49611b95_8cd717aa","updated":"2024-02-26 03:38:06.000000000","message":"I see your point,we have 2 ways:\n\n1：If we delete only database records in api layer, add at least one alarm log indicating that share will be deleted from the database, make sure that share instance has also been deleted from the storage backend.\n\n2: Let the manager layer try to delete the share instance again with force\u003dTrue(force must be true if share in status error_deferred_deleting).\nWhether the deletion is successful or not, it is also deleted from the database. At least the driver has tried to delete again, and if the deletion from the storage is successful, it saves the administrator the trouble of having to manually delete it.\n\nI prefer the second approach.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"55079272bbdd8154e2df50d05c03d57a07d99dae","unresolved":false,"context_lines":[{"line_number":1403,"context_line":"                \"statuses\": statuses}"},{"line_number":1404,"context_line":"            raise exception.InvalidShareInstance(reason\u003dmsg)"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"        if share_instance[\u0027status\u0027] \u003d\u003d ("},{"line_number":1407,"context_line":"                constants.STATUS_ERROR_DEFERRED_DELETING):"},{"line_number":1408,"context_line":"            self.db.share_instance_delete(context, share_instance[\u0027id\u0027])"},{"line_number":1409,"context_line":"            return"},{"line_number":1410,"context_line":""},{"line_number":1411,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1412,"context_line":"        if force and deferred_delete:"}],"source_content_type":"text/x-python","patch_set":2,"id":"f3332b18_5915af23","line":1409,"range":{"start_line":1406,"start_character":8,"end_line":1409,"end_character":18},"in_reply_to":"9dd1d38b_8d8ef4cd","updated":"2024-02-26 12:40:01.000000000","message":"ok, updated for 2.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":true,"context_lines":[{"line_number":1403,"context_line":"                \"statuses\": statuses}"},{"line_number":1404,"context_line":"            raise exception.InvalidShareInstance(reason\u003dmsg)"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"        if share_instance[\u0027status\u0027] \u003d\u003d ("},{"line_number":1407,"context_line":"                constants.STATUS_ERROR_DEFERRED_DELETING):"},{"line_number":1408,"context_line":"            self.db.share_instance_delete(context, share_instance[\u0027id\u0027])"},{"line_number":1409,"context_line":"            return"},{"line_number":1410,"context_line":""},{"line_number":1411,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1412,"context_line":"        if force and deferred_delete:"}],"source_content_type":"text/x-python","patch_set":2,"id":"49611b95_8cd717aa","line":1409,"range":{"start_line":1406,"start_character":8,"end_line":1409,"end_character":18},"in_reply_to":"a9f3c268_04fb78af","updated":"2024-02-23 16:32:59.000000000","message":"Yes, this is case with Force and status in constants.STATUS_ERROR_DEFERRED_DELETING.\nForce is used only by Admin and Admin knows that shares in constants.STATUS_ERROR_DEFERRED_DELETING state will be retried for deletion by periodic task. But still he want to delete share in constants.STATUS_ERROR_DEFERRED_DELETING means he must have made sure that things are clean on backend and hence we are safe to remove share entries from db.\n\nIdeally shares in deferred_deleting and error_deferred_deleting are gone through stage of quota update, we should not allow them to be handled by command. \nWhat do you think ?","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1028190861aa9e222ad7291aeb76f4d2aa310c7c","unresolved":false,"context_lines":[{"line_number":1403,"context_line":"                \"statuses\": statuses}"},{"line_number":1404,"context_line":"            raise exception.InvalidShareInstance(reason\u003dmsg)"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"        if share_instance[\u0027status\u0027] \u003d\u003d ("},{"line_number":1407,"context_line":"                constants.STATUS_ERROR_DEFERRED_DELETING):"},{"line_number":1408,"context_line":"            self.db.share_instance_delete(context, share_instance[\u0027id\u0027])"},{"line_number":1409,"context_line":"            return"},{"line_number":1410,"context_line":""},{"line_number":1411,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1412,"context_line":"        if force and deferred_delete:"}],"source_content_type":"text/x-python","patch_set":2,"id":"e5fcf785_36dd1546","line":1409,"range":{"start_line":1406,"start_character":8,"end_line":1409,"end_character":18},"in_reply_to":"d02cc860_5c6e9ec8","updated":"2024-02-26 03:38:06.000000000","message":"i agree with if force is used, we will do regular/immediate deletion instead of deferred_deletion.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"336939cfad76501f2895abd8f6ac9ce217b10414","unresolved":true,"context_lines":[{"line_number":1411,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1412,"context_line":"        if force and deferred_delete:"},{"line_number":1413,"context_line":"            msg \u003d _(\"Both force delete and deferred delete are not \""},{"line_number":1414,"context_line":"                    \"supported at a time. Please select either one.\")"},{"line_number":1415,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":1416,"context_line":""},{"line_number":1417,"context_line":"        share_instance \u003d self.db.share_instance_update("}],"source_content_type":"text/x-python","patch_set":2,"id":"2a545ab2_03095c7f","line":1414,"range":{"start_line":1414,"start_character":31,"end_line":1414,"end_character":40},"updated":"2024-02-22 15:02:03.000000000","message":"simultaneously","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":1411,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1412,"context_line":"        if force and deferred_delete:"},{"line_number":1413,"context_line":"            msg \u003d _(\"Both force delete and deferred delete are not \""},{"line_number":1414,"context_line":"                    \"supported at a time. Please select either one.\")"},{"line_number":1415,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":1416,"context_line":""},{"line_number":1417,"context_line":"        share_instance \u003d self.db.share_instance_update("}],"source_content_type":"text/x-python","patch_set":2,"id":"34b5ab30_981fc50e","line":1414,"range":{"start_line":1414,"start_character":31,"end_line":1414,"end_character":40},"in_reply_to":"2a545ab2_03095c7f","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"336939cfad76501f2895abd8f6ac9ce217b10414","unresolved":true,"context_lines":[{"line_number":2125,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":2126,"context_line":"        if force and deferred_delete:"},{"line_number":2127,"context_line":"            msg \u003d _(\"Both force delete and deferred delete are not \""},{"line_number":2128,"context_line":"                    \"supported at a time. Please select either one.\")"},{"line_number":2129,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":2130,"context_line":""},{"line_number":2131,"context_line":"        for snapshot_instance in snapshot_instances:"}],"source_content_type":"text/x-python","patch_set":2,"id":"a1c73b60_3d3624b4","line":2128,"range":{"start_line":2128,"start_character":31,"end_line":2128,"end_character":40},"updated":"2024-02-22 15:02:03.000000000","message":"same","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":2125,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":2126,"context_line":"        if force and deferred_delete:"},{"line_number":2127,"context_line":"            msg \u003d _(\"Both force delete and deferred delete are not \""},{"line_number":2128,"context_line":"                    \"supported at a time. Please select either one.\")"},{"line_number":2129,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":2130,"context_line":""},{"line_number":2131,"context_line":"        for snapshot_instance in snapshot_instances:"}],"source_content_type":"text/x-python","patch_set":2,"id":"56c92c13_96fffd65","line":2128,"range":{"start_line":2128,"start_character":31,"end_line":2128,"end_character":40},"in_reply_to":"a1c73b60_3d3624b4","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c0bcd8d457020dfc60b29024c5b4884576d2bec5","unresolved":true,"context_lines":[{"line_number":2131,"context_line":"        for snapshot_instance in snapshot_instances:"},{"line_number":2132,"context_line":"            self.db.share_snapshot_instance_update("},{"line_number":2133,"context_line":"                context, snapshot_instance[\u0027id\u0027],"},{"line_number":2134,"context_line":"                {\u0027status\u0027: constants.STATUS_DELETING})"},{"line_number":2135,"context_line":""},{"line_number":2136,"context_line":"        if share[\u0027has_replicas\u0027]:"},{"line_number":2137,"context_line":"            self.share_rpcapi.delete_replicated_snapshot("}],"source_content_type":"text/x-python","patch_set":2,"id":"36136a48_0b2b23b7","line":2134,"range":{"start_line":2134,"start_character":27,"end_line":2134,"end_character":52},"updated":"2024-02-23 10:23:38.000000000","message":"if deferred_delete is true, we can set status to deferred_deleting here.\nno need wait manager layer to set.\nThis prevents users from seeing share status change from available to deleting and then deferred_deleting.\nDo the same for the interface def delete_instance() in line 1419.\n\n\n\n    status \u003d constants.STATUS_DEFERRED_DELETING if deferred_delete else constants.STATUS_DELETING\n    for snapshot_instance in snapshot_instances:\n            self.db.share_snapshot_instance_update(\n                context, snapshot_instance[\u0027id\u0027],\n                {\u0027status\u0027: status})","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":2131,"context_line":"        for snapshot_instance in snapshot_instances:"},{"line_number":2132,"context_line":"            self.db.share_snapshot_instance_update("},{"line_number":2133,"context_line":"                context, snapshot_instance[\u0027id\u0027],"},{"line_number":2134,"context_line":"                {\u0027status\u0027: constants.STATUS_DELETING})"},{"line_number":2135,"context_line":""},{"line_number":2136,"context_line":"        if share[\u0027has_replicas\u0027]:"},{"line_number":2137,"context_line":"            self.share_rpcapi.delete_replicated_snapshot("}],"source_content_type":"text/x-python","patch_set":2,"id":"5bd8664a_b8a02972","line":2134,"range":{"start_line":2134,"start_character":27,"end_line":2134,"end_character":52},"in_reply_to":"36136a48_0b2b23b7","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1028190861aa9e222ad7291aeb76f4d2aa310c7c","unresolved":true,"context_lines":[{"line_number":1417,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1418,"context_line":"        if force and deferred_delete:"},{"line_number":1419,"context_line":"            msg \u003d _(\"Both force delete and deferred delete are provided. Only \""},{"line_number":1420,"context_line":"                    \"force delete will be considered.\")"},{"line_number":1421,"context_line":"            deferred_delete \u003d False"},{"line_number":1422,"context_line":""},{"line_number":1423,"context_line":"        status \u003d constants.STATUS_DELETING"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f97e876_a2194e39","line":1420,"updated":"2024-02-26 03:38:06.000000000","message":"Add a log to use msg.\nLOG.warning(msg)","commit_id":"f33609b6219c93ce46b5aa41f70ef4bd957f468f"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"55079272bbdd8154e2df50d05c03d57a07d99dae","unresolved":false,"context_lines":[{"line_number":1417,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1418,"context_line":"        if force and deferred_delete:"},{"line_number":1419,"context_line":"            msg \u003d _(\"Both force delete and deferred delete are provided. Only \""},{"line_number":1420,"context_line":"                    \"force delete will be considered.\")"},{"line_number":1421,"context_line":"            deferred_delete \u003d False"},{"line_number":1422,"context_line":""},{"line_number":1423,"context_line":"        status \u003d constants.STATUS_DELETING"}],"source_content_type":"text/x-python","patch_set":4,"id":"4d634fb1_ed099939","line":1420,"in_reply_to":"3f97e876_a2194e39","updated":"2024-02-26 12:40:01.000000000","message":"Done","commit_id":"f33609b6219c93ce46b5aa41f70ef4bd957f468f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2639c69f8fc4f683e8e9b98850bda486d2ea73f5","unresolved":true,"context_lines":[{"line_number":58,"context_line":"                ),"},{"line_number":59,"context_line":"    cfg.BoolOpt(\u0027is_deferred_deletion_enabled\u0027,"},{"line_number":60,"context_line":"                default\u003dFalse,"},{"line_number":61,"context_line":"                help\u003d\u0027Whether to delete shares and share snapshots in a in \u0027"},{"line_number":62,"context_line":"                     \u0027deferred manner. Setting this option to True will cause \u0027"},{"line_number":63,"context_line":"                     \u0027quotas to be released immediately if a deletion request \u0027"},{"line_number":64,"context_line":"                     \u0027is accepted. Deletions may eventually fail, and \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"0978d4a6_f59bc1f4","line":61,"range":{"start_line":61,"start_character":72,"end_line":61,"end_character":74},"updated":"2024-03-07 15:31:19.000000000","message":"remove duplicated \"in\"","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"72574b5b0cd90423fe5ac116f08a4ab44eccbf39","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                ),"},{"line_number":59,"context_line":"    cfg.BoolOpt(\u0027is_deferred_deletion_enabled\u0027,"},{"line_number":60,"context_line":"                default\u003dFalse,"},{"line_number":61,"context_line":"                help\u003d\u0027Whether to delete shares and share snapshots in a in \u0027"},{"line_number":62,"context_line":"                     \u0027deferred manner. Setting this option to True will cause \u0027"},{"line_number":63,"context_line":"                     \u0027quotas to be released immediately if a deletion request \u0027"},{"line_number":64,"context_line":"                     \u0027is accepted. Deletions may eventually fail, and \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"63284712_7af080a4","line":61,"range":{"start_line":61,"start_character":72,"end_line":61,"end_character":74},"in_reply_to":"0978d4a6_f59bc1f4","updated":"2024-03-09 01:43:54.000000000","message":"Done","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6539d42ef1c8f8e178715a95077aadf6c2d56031","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                ),"},{"line_number":59,"context_line":"    cfg.BoolOpt(\u0027is_deferred_deletion_enabled\u0027,"},{"line_number":60,"context_line":"                default\u003dFalse,"},{"line_number":61,"context_line":"                help\u003d\u0027Whether to delete shares and share snapshots in a in \u0027"},{"line_number":62,"context_line":"                     \u0027deferred manner. Setting this option to True will cause \u0027"},{"line_number":63,"context_line":"                     \u0027quotas to be released immediately if a deletion request \u0027"},{"line_number":64,"context_line":"                     \u0027is accepted. Deletions may eventually fail, and \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"8fd5b87e_de4c6771","line":61,"range":{"start_line":61,"start_character":72,"end_line":61,"end_character":74},"in_reply_to":"0978d4a6_f59bc1f4","updated":"2024-03-11 10:55:17.000000000","message":"Done","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2639c69f8fc4f683e8e9b98850bda486d2ea73f5","unresolved":true,"context_lines":[{"line_number":1407,"context_line":"            raise exception.InvalidShareInstance(reason\u003dmsg)"},{"line_number":1408,"context_line":""},{"line_number":1409,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1410,"context_line":"        if force and deferred_delete:"},{"line_number":1411,"context_line":"            msg \u003d _(\"Both force delete and deferred delete are provided. Only \""},{"line_number":1412,"context_line":"                    \"force delete will be considered.\")"},{"line_number":1413,"context_line":"            LOG.warning(msg)"},{"line_number":1414,"context_line":"            deferred_delete \u003d False"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"        current_status \u003d share_instance[\u0027status\u0027]"},{"line_number":1417,"context_line":"        if current_status not in (constants.STATUS_DEFERRED_DELETING,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ffec36c_4cfd2d97","line":1414,"range":{"start_line":1410,"start_character":8,"end_line":1414,"end_character":35},"updated":"2024-03-07 15:31:19.000000000","message":"really; no need for this warning either.. \n\n\n  if force:\n      # since deletion is forced, we attempt to delete the share right away\n      deferred_delete \u003d False","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6539d42ef1c8f8e178715a95077aadf6c2d56031","unresolved":false,"context_lines":[{"line_number":1407,"context_line":"            raise exception.InvalidShareInstance(reason\u003dmsg)"},{"line_number":1408,"context_line":""},{"line_number":1409,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1410,"context_line":"        if force and deferred_delete:"},{"line_number":1411,"context_line":"            msg \u003d _(\"Both force delete and deferred delete are provided. Only \""},{"line_number":1412,"context_line":"                    \"force delete will be considered.\")"},{"line_number":1413,"context_line":"            LOG.warning(msg)"},{"line_number":1414,"context_line":"            deferred_delete \u003d False"},{"line_number":1415,"context_line":""},{"line_number":1416,"context_line":"        current_status \u003d share_instance[\u0027status\u0027]"},{"line_number":1417,"context_line":"        if current_status not in (constants.STATUS_DEFERRED_DELETING,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ad8b4cd_a2d7b274","line":1414,"range":{"start_line":1410,"start_character":8,"end_line":1414,"end_character":35},"in_reply_to":"3ffec36c_4cfd2d97","updated":"2024-03-11 10:55:17.000000000","message":"Done","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2639c69f8fc4f683e8e9b98850bda486d2ea73f5","unresolved":true,"context_lines":[{"line_number":2119,"context_line":"                \"statuses\": statuses}"},{"line_number":2120,"context_line":"            raise exception.InvalidShareSnapshot(reason\u003dmsg)"},{"line_number":2121,"context_line":""},{"line_number":2122,"context_line":"        statuses \u003d (constants.STATUS_DEFERRED_DELETING,"},{"line_number":2123,"context_line":"                    constants.STATUS_ERROR_DEFERRED_DELETING)"},{"line_number":2124,"context_line":"        if snapshot[\u0027aggregate_status\u0027] in statuses:"},{"line_number":2125,"context_line":"            msg \u003d _(\"Not allowed: Snapshot instance in either of status \""},{"line_number":2126,"context_line":"                    \"%(statuses)s will be handled by periodic deletion \""},{"line_number":2127,"context_line":"                    \"task. \") % {\"statuses\": statuses}"},{"line_number":2128,"context_line":"            raise exception.InvalidShareInstance(reason\u003dmsg)"},{"line_number":2129,"context_line":""},{"line_number":2130,"context_line":"        share \u003d self.db.share_get(context, snapshot[\u0027share_id\u0027])"},{"line_number":2131,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"26b7b72b_4e4e0710","line":2128,"range":{"start_line":2122,"start_character":0,"end_line":2128,"end_character":60},"updated":"2024-03-07 15:31:19.000000000","message":"again, why?","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a5522fe9136522f52d424a9763e9d70119df1a7d","unresolved":true,"context_lines":[{"line_number":2119,"context_line":"                \"statuses\": statuses}"},{"line_number":2120,"context_line":"            raise exception.InvalidShareSnapshot(reason\u003dmsg)"},{"line_number":2121,"context_line":""},{"line_number":2122,"context_line":"        statuses \u003d (constants.STATUS_DEFERRED_DELETING,"},{"line_number":2123,"context_line":"                    constants.STATUS_ERROR_DEFERRED_DELETING)"},{"line_number":2124,"context_line":"        if snapshot[\u0027aggregate_status\u0027] in statuses:"},{"line_number":2125,"context_line":"            msg \u003d _(\"Not allowed: Snapshot instance in either of status \""},{"line_number":2126,"context_line":"                    \"%(statuses)s will be handled by periodic deletion \""},{"line_number":2127,"context_line":"                    \"task. \") % {\"statuses\": statuses}"},{"line_number":2128,"context_line":"            raise exception.InvalidShareInstance(reason\u003dmsg)"},{"line_number":2129,"context_line":""},{"line_number":2130,"context_line":"        share \u003d self.db.share_get(context, snapshot[\u0027share_id\u0027])"},{"line_number":2131,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dada6521_32b969be","line":2128,"range":{"start_line":2122,"start_character":0,"end_line":2128,"end_character":60},"in_reply_to":"26b7b72b_4e4e0710","updated":"2024-03-08 01:12:58.000000000","message":"I think we should support deleting snapshots in both states just as we did for deleting share instance, because at this point\nforce must be true. So these lines can be deleted","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6539d42ef1c8f8e178715a95077aadf6c2d56031","unresolved":false,"context_lines":[{"line_number":2119,"context_line":"                \"statuses\": statuses}"},{"line_number":2120,"context_line":"            raise exception.InvalidShareSnapshot(reason\u003dmsg)"},{"line_number":2121,"context_line":""},{"line_number":2122,"context_line":"        statuses \u003d (constants.STATUS_DEFERRED_DELETING,"},{"line_number":2123,"context_line":"                    constants.STATUS_ERROR_DEFERRED_DELETING)"},{"line_number":2124,"context_line":"        if snapshot[\u0027aggregate_status\u0027] in statuses:"},{"line_number":2125,"context_line":"            msg \u003d _(\"Not allowed: Snapshot instance in either of status \""},{"line_number":2126,"context_line":"                    \"%(statuses)s will be handled by periodic deletion \""},{"line_number":2127,"context_line":"                    \"task. \") % {\"statuses\": statuses}"},{"line_number":2128,"context_line":"            raise exception.InvalidShareInstance(reason\u003dmsg)"},{"line_number":2129,"context_line":""},{"line_number":2130,"context_line":"        share \u003d self.db.share_get(context, snapshot[\u0027share_id\u0027])"},{"line_number":2131,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"6e7afbd5_268a535d","line":2128,"range":{"start_line":2122,"start_character":0,"end_line":2128,"end_character":60},"in_reply_to":"dada6521_32b969be","updated":"2024-03-11 10:55:17.000000000","message":"Done","commit_id":"0f425b63f4cc657e2a8663509cffbcc82e15baca"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"72574b5b0cd90423fe5ac116f08a4ab44eccbf39","unresolved":true,"context_lines":[{"line_number":2231,"context_line":"                self.db.share_get_all_by_project_with_count"},{"line_number":2232,"context_line":"                if show_count else self.db.share_get_all_by_project)}"},{"line_number":2233,"context_line":""},{"line_number":2234,"context_line":"        if policy.check_is_admin(context):"},{"line_number":2235,"context_line":"            filters[\u0027list_deferred_delete\u0027] \u003d True"},{"line_number":2236,"context_line":""},{"line_number":2237,"context_line":"        # Get filtered list of shares"}],"source_content_type":"text/x-python","patch_set":8,"id":"d9e6acb0_6c727d2c","line":2234,"range":{"start_line":2234,"start_character":7,"end_line":2234,"end_character":42},"updated":"2024-03-09 01:43:54.000000000","message":"please add a separate policy for this in https://github.com/openstack/manila/blob/master/manila/policies/shares.py; don\u0027t use \"check_is_admin\"","commit_id":"367739992bc1c34a31f81a15491758f4570a1a45"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8a8a610fa0ca6313a9e1e251a671fae1fbfcfd09","unresolved":false,"context_lines":[{"line_number":2231,"context_line":"                self.db.share_get_all_by_project_with_count"},{"line_number":2232,"context_line":"                if show_count else self.db.share_get_all_by_project)}"},{"line_number":2233,"context_line":""},{"line_number":2234,"context_line":"        if policy.check_is_admin(context):"},{"line_number":2235,"context_line":"            filters[\u0027list_deferred_delete\u0027] \u003d True"},{"line_number":2236,"context_line":""},{"line_number":2237,"context_line":"        # Get filtered list of shares"}],"source_content_type":"text/x-python","patch_set":8,"id":"972bb00a_bfff1eb0","line":2234,"range":{"start_line":2234,"start_character":7,"end_line":2234,"end_character":42},"in_reply_to":"12c7151b_4057d1fe","updated":"2024-03-12 17:53:18.000000000","message":"resolved","commit_id":"367739992bc1c34a31f81a15491758f4570a1a45"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6539d42ef1c8f8e178715a95077aadf6c2d56031","unresolved":true,"context_lines":[{"line_number":2231,"context_line":"                self.db.share_get_all_by_project_with_count"},{"line_number":2232,"context_line":"                if show_count else self.db.share_get_all_by_project)}"},{"line_number":2233,"context_line":""},{"line_number":2234,"context_line":"        if policy.check_is_admin(context):"},{"line_number":2235,"context_line":"            filters[\u0027list_deferred_delete\u0027] \u003d True"},{"line_number":2236,"context_line":""},{"line_number":2237,"context_line":"        # Get filtered list of shares"}],"source_content_type":"text/x-python","patch_set":8,"id":"12c7151b_4057d1fe","line":2234,"range":{"start_line":2234,"start_character":7,"end_line":2234,"end_character":42},"in_reply_to":"d9e6acb0_6c727d2c","updated":"2024-03-11 10:55:17.000000000","message":"we dont have API changes for deferred deletion, so added new policy rule similar to check_is_admin.","commit_id":"367739992bc1c34a31f81a15491758f4570a1a45"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4f9c19d0b2085ae0837a3ef0c0b32b7139d1f1df","unresolved":true,"context_lines":[{"line_number":2285,"context_line":"                self.db.share_get_all_by_project_with_count"},{"line_number":2286,"context_line":"                if show_count else self.db.share_get_all_by_project)}"},{"line_number":2287,"context_line":""},{"line_number":2288,"context_line":"        if policy.check_is_state_admin(context):"},{"line_number":2289,"context_line":"            filters[\u0027list_deferred_delete\u0027] \u003d True"},{"line_number":2290,"context_line":""},{"line_number":2291,"context_line":"        # Get filtered list of shares"}],"source_content_type":"text/x-python","patch_set":9,"id":"3728ef66_765af2bd","line":2288,"range":{"start_line":2288,"start_character":0,"end_line":2288,"end_character":48},"updated":"2024-03-11 22:39:53.000000000","message":"2 things seem incorrect here; \n\n1) this method permits filtering by \"status\"; currently your code doesn\u0027t prevent someone using this filter and querying shares in \"deferred_deleting\" or \"error_deferred_deleting\" directly.\n2) You don\u0027t need a dedicated \"check_is_state_admin\" check, just a normal new policy would do. See comment regarding this in the policy file.. \n\n```\n      \n      # check if user is querying with deferred states and forbid\n      # users that aren\u0027t authorized to query shares in these states\n      policy_str \u003d \"list_resources_in_deferred_deletion_states\"\n      do_raise \u003d (\u0027status\u0027 in filters and \u0027deferred\u0027 in filters[\u0027status\u0027])\n      show_deferred_deleted \u003d policy.check_policy(\n          context, \u0027share\u0027, policy_str, do_raise\u003ddo_raise)\n      if show_deferred_deleted:\n          filters[\u0027list_deferred_delete\u0027] \u003d True\n```","commit_id":"5056e3888033e14494d9cd2471bfaccce898ed1a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"187ff8fa29093077dea532e67e352ff273af4802","unresolved":false,"context_lines":[{"line_number":2285,"context_line":"                self.db.share_get_all_by_project_with_count"},{"line_number":2286,"context_line":"                if show_count else self.db.share_get_all_by_project)}"},{"line_number":2287,"context_line":""},{"line_number":2288,"context_line":"        if policy.check_is_state_admin(context):"},{"line_number":2289,"context_line":"            filters[\u0027list_deferred_delete\u0027] \u003d True"},{"line_number":2290,"context_line":""},{"line_number":2291,"context_line":"        # Get filtered list of shares"}],"source_content_type":"text/x-python","patch_set":9,"id":"ead8a28a_f513786f","line":2288,"range":{"start_line":2288,"start_character":0,"end_line":2288,"end_character":48},"in_reply_to":"3728ef66_765af2bd","updated":"2024-03-13 12:49:20.000000000","message":"Done","commit_id":"5056e3888033e14494d9cd2471bfaccce898ed1a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4f9c19d0b2085ae0837a3ef0c0b32b7139d1f1df","unresolved":true,"context_lines":[{"line_number":2359,"context_line":"            \u0027get_all_by_project\u0027: ("},{"line_number":2360,"context_line":"                self.db.share_snapshot_get_all_by_project_with_count"},{"line_number":2361,"context_line":"                if show_count else self.db.share_snapshot_get_all_by_project)}"},{"line_number":2362,"context_line":""},{"line_number":2363,"context_line":"        if context.is_admin and all_tenants:"},{"line_number":2364,"context_line":"            result \u003d get_methods[\u0027get_all\u0027]("},{"line_number":2365,"context_line":"                context, filters\u003dsearch_opts, limit\u003dlimit, offset\u003doffset,"}],"source_content_type":"text/x-python","patch_set":9,"id":"d453edc3_4cafdc5f","line":2362,"updated":"2024-03-11 22:39:53.000000000","message":"Don\u0027t we need similar handling to ensure we\u0027re displaying snapshots in deferred deletion states?","commit_id":"5056e3888033e14494d9cd2471bfaccce898ed1a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"187ff8fa29093077dea532e67e352ff273af4802","unresolved":false,"context_lines":[{"line_number":2359,"context_line":"            \u0027get_all_by_project\u0027: ("},{"line_number":2360,"context_line":"                self.db.share_snapshot_get_all_by_project_with_count"},{"line_number":2361,"context_line":"                if show_count else self.db.share_snapshot_get_all_by_project)}"},{"line_number":2362,"context_line":""},{"line_number":2363,"context_line":"        if context.is_admin and all_tenants:"},{"line_number":2364,"context_line":"            result \u003d get_methods[\u0027get_all\u0027]("},{"line_number":2365,"context_line":"                context, filters\u003dsearch_opts, limit\u003dlimit, offset\u003doffset,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9d48886b_65dbac08","line":2362,"in_reply_to":"d453edc3_4cafdc5f","updated":"2024-03-13 12:49:20.000000000","message":"Done","commit_id":"5056e3888033e14494d9cd2471bfaccce898ed1a"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8a8a610fa0ca6313a9e1e251a671fae1fbfcfd09","unresolved":true,"context_lines":[{"line_number":1461,"context_line":"            raise exception.InvalidShareInstance(reason\u003dmsg)"},{"line_number":1462,"context_line":""},{"line_number":1463,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1464,"context_line":"        if force and deferred_delete:"},{"line_number":1465,"context_line":"            deferred_delete \u003d False"},{"line_number":1466,"context_line":""},{"line_number":1467,"context_line":"        current_status \u003d share_instance[\u0027status\u0027]"},{"line_number":1468,"context_line":"        if current_status not in (constants.STATUS_DEFERRED_DELETING,"}],"source_content_type":"text/x-python","patch_set":11,"id":"2a8b4a1d_3d4020ee","line":1465,"range":{"start_line":1464,"start_character":8,"end_line":1465,"end_character":35},"updated":"2024-03-12 17:53:18.000000000","message":"not properly covered with unit tests: https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_aa7/907051/11/check/openstack-tox-cover/aa72137/cover/d_030f674440dfdd1c_api_py.html","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"187ff8fa29093077dea532e67e352ff273af4802","unresolved":false,"context_lines":[{"line_number":1461,"context_line":"            raise exception.InvalidShareInstance(reason\u003dmsg)"},{"line_number":1462,"context_line":""},{"line_number":1463,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":1464,"context_line":"        if force and deferred_delete:"},{"line_number":1465,"context_line":"            deferred_delete \u003d False"},{"line_number":1466,"context_line":""},{"line_number":1467,"context_line":"        current_status \u003d share_instance[\u0027status\u0027]"},{"line_number":1468,"context_line":"        if current_status not in (constants.STATUS_DEFERRED_DELETING,"}],"source_content_type":"text/x-python","patch_set":11,"id":"196f19c6_31a212a0","line":1465,"range":{"start_line":1464,"start_character":8,"end_line":1465,"end_character":35},"in_reply_to":"2a8b4a1d_3d4020ee","updated":"2024-03-13 12:49:20.000000000","message":"Done","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8a8a610fa0ca6313a9e1e251a671fae1fbfcfd09","unresolved":true,"context_lines":[{"line_number":2178,"context_line":"        )"},{"line_number":2179,"context_line":""},{"line_number":2180,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":2181,"context_line":"        if force and deferred_delete:"},{"line_number":2182,"context_line":"            deferred_delete \u003d False"},{"line_number":2183,"context_line":""},{"line_number":2184,"context_line":"        status \u003d constants.STATUS_DELETING"}],"source_content_type":"text/x-python","patch_set":11,"id":"d69ceef3_5eed4470","line":2181,"range":{"start_line":2181,"start_character":8,"end_line":2181,"end_character":37},"updated":"2024-03-12 17:53:18.000000000","message":"not properly covered with unit tests: https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_aa7/907051/11/check/openstack-tox-cover/aa72137/cover/d_030f674440dfdd1c_api_py.html#t1467","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"187ff8fa29093077dea532e67e352ff273af4802","unresolved":false,"context_lines":[{"line_number":2178,"context_line":"        )"},{"line_number":2179,"context_line":""},{"line_number":2180,"context_line":"        deferred_delete \u003d CONF.is_deferred_deletion_enabled"},{"line_number":2181,"context_line":"        if force and deferred_delete:"},{"line_number":2182,"context_line":"            deferred_delete \u003d False"},{"line_number":2183,"context_line":""},{"line_number":2184,"context_line":"        status \u003d constants.STATUS_DELETING"}],"source_content_type":"text/x-python","patch_set":11,"id":"20c92be1_a19802ab","line":2181,"range":{"start_line":2181,"start_character":8,"end_line":2181,"end_character":37},"in_reply_to":"d69ceef3_5eed4470","updated":"2024-03-13 12:49:20.000000000","message":"Done","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"}],"manila/share/manager.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"336939cfad76501f2895abd8f6ac9ce217b10414","unresolved":true,"context_lines":[{"line_number":3497,"context_line":""},{"line_number":3498,"context_line":"    def _delete_share_quota(self, context, share, share_instance):"},{"line_number":3499,"context_line":"        try:"},{"line_number":3500,"context_line":"            deltas \u003d {\"shares\": -1, \"gigabytes\": -share[\u0027size\u0027]}"},{"line_number":3501,"context_line":"            reservations \u003d QUOTAS.reserve("},{"line_number":3502,"context_line":"                context,"},{"line_number":3503,"context_line":"                project_id\u003dshare[\u0027project_id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"c7457add_e823201a","line":3500,"range":{"start_line":3500,"start_character":12,"end_line":3500,"end_character":64},"updated":"2024-02-22 15:02:03.000000000","message":"if the share supports replicas, we must release replica and replica gigabytes quotas as well.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"55079272bbdd8154e2df50d05c03d57a07d99dae","unresolved":false,"context_lines":[{"line_number":3497,"context_line":""},{"line_number":3498,"context_line":"    def _delete_share_quota(self, context, share, share_instance):"},{"line_number":3499,"context_line":"        try:"},{"line_number":3500,"context_line":"            deltas \u003d {\"shares\": -1, \"gigabytes\": -share[\u0027size\u0027]}"},{"line_number":3501,"context_line":"            reservations \u003d QUOTAS.reserve("},{"line_number":3502,"context_line":"                context,"},{"line_number":3503,"context_line":"                project_id\u003dshare[\u0027project_id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"eee2ac6a_e061cec4","line":3500,"range":{"start_line":3500,"start_character":12,"end_line":3500,"end_character":64},"in_reply_to":"3c21f584_7b7bf728","updated":"2024-02-26 12:40:01.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"1028190861aa9e222ad7291aeb76f4d2aa310c7c","unresolved":true,"context_lines":[{"line_number":3497,"context_line":""},{"line_number":3498,"context_line":"    def _delete_share_quota(self, context, share, share_instance):"},{"line_number":3499,"context_line":"        try:"},{"line_number":3500,"context_line":"            deltas \u003d {\"shares\": -1, \"gigabytes\": -share[\u0027size\u0027]}"},{"line_number":3501,"context_line":"            reservations \u003d QUOTAS.reserve("},{"line_number":3502,"context_line":"                context,"},{"line_number":3503,"context_line":"                project_id\u003dshare[\u0027project_id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"1834e64d_87d41ee5","line":3500,"range":{"start_line":3500,"start_character":12,"end_line":3500,"end_character":64},"in_reply_to":"3c21f584_7b7bf728","updated":"2024-02-26 03:38:06.000000000","message":"We should define a function in db/api.py that calls def _update_share_instance_usages() in db/sqlalchemy/db.py to handle quota.\nHere we can reuse function from the database.\nthis function def _delete_share_quota() is not needed.\n\n    def delete_share_instance():\n        ...\n        if deferred_delete:\n            self.db.update_share_instance_usages()\n        ...","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":true,"context_lines":[{"line_number":3497,"context_line":""},{"line_number":3498,"context_line":"    def _delete_share_quota(self, context, share, share_instance):"},{"line_number":3499,"context_line":"        try:"},{"line_number":3500,"context_line":"            deltas \u003d {\"shares\": -1, \"gigabytes\": -share[\u0027size\u0027]}"},{"line_number":3501,"context_line":"            reservations \u003d QUOTAS.reserve("},{"line_number":3502,"context_line":"                context,"},{"line_number":3503,"context_line":"                project_id\u003dshare[\u0027project_id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"3c21f584_7b7bf728","line":3500,"range":{"start_line":3500,"start_character":12,"end_line":3500,"end_character":64},"in_reply_to":"c7457add_e823201a","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":true,"context_lines":[{"line_number":3497,"context_line":""},{"line_number":3498,"context_line":"    def _delete_share_quota(self, context, share, share_instance):"},{"line_number":3499,"context_line":"        try:"},{"line_number":3500,"context_line":"            deltas \u003d {\"shares\": -1, \"gigabytes\": -share[\u0027size\u0027]}"},{"line_number":3501,"context_line":"            reservations \u003d QUOTAS.reserve("},{"line_number":3502,"context_line":"                context,"},{"line_number":3503,"context_line":"                project_id\u003dshare[\u0027project_id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"fd7ac336_05734408","line":3500,"range":{"start_line":3500,"start_character":12,"end_line":3500,"end_character":64},"in_reply_to":"c7457add_e823201a","updated":"2024-02-23 10:19:32.000000000","message":"exactly; so, why not promote the database method that does quota updates to a regular DB query and reuse it here?","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":true,"context_lines":[{"line_number":3563,"context_line":"                    resource_id\u003dshare_instance_id,"},{"line_number":3564,"context_line":"                    exception\u003dexcep)"},{"line_number":3565,"context_line":""},{"line_number":3566,"context_line":"        if deferred_delete:"},{"line_number":3567,"context_line":"            try:"},{"line_number":3568,"context_line":"                self._delete_share_quota(context, share, share_instance)"},{"line_number":3569,"context_line":"                self.db.share_instance_update("}],"source_content_type":"text/x-python","patch_set":2,"id":"61aa9601_01ec381c","line":3566,"range":{"start_line":3566,"start_character":7,"end_line":3566,"end_character":27},"updated":"2024-02-23 10:19:32.000000000","message":"if you update this condition to :\n\n if deferred_delete and not force:\n\nyou\u0027ll get the same effect.. i.e., you\u0027ll be preserving the use of \"force\".. forcing a share deletion will cause the share to be removed no matter what, and quota freed.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":3563,"context_line":"                    resource_id\u003dshare_instance_id,"},{"line_number":3564,"context_line":"                    exception\u003dexcep)"},{"line_number":3565,"context_line":""},{"line_number":3566,"context_line":"        if deferred_delete:"},{"line_number":3567,"context_line":"            try:"},{"line_number":3568,"context_line":"                self._delete_share_quota(context, share, share_instance)"},{"line_number":3569,"context_line":"                self.db.share_instance_update("}],"source_content_type":"text/x-python","patch_set":2,"id":"4db39c56_a094715a","line":3566,"range":{"start_line":3566,"start_character":7,"end_line":3566,"end_character":27},"in_reply_to":"61aa9601_01ec381c","updated":"2024-02-23 16:32:59.000000000","message":"Not needed since both can not be True in this function as explained above because force will take preference over deferred_delete","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":36178,"name":"Saravanan Manickam","display_name":"msaravan","email":"manicsaran@gmail.com","username":"msaravan"},"change_message_id":"c764ac0d5195026947f4e9340c8ab15a14d00fc0","unresolved":true,"context_lines":[{"line_number":3566,"context_line":"        if deferred_delete:"},{"line_number":3567,"context_line":"            try:"},{"line_number":3568,"context_line":"                self._delete_share_quota(context, share, share_instance)"},{"line_number":3569,"context_line":"                self.db.share_instance_update("},{"line_number":3570,"context_line":"                    context,"},{"line_number":3571,"context_line":"                    share_instance_id,"},{"line_number":3572,"context_line":"                    {\u0027status\u0027: constants.STATUS_DEFERRED_DELETING})"}],"source_content_type":"text/x-python","patch_set":2,"id":"c9121ef2_46ba597f","line":3569,"updated":"2024-02-09 02:32:43.000000000","message":"I think, we need to update the instance first, and then delete the share quota. This is needed if db_share_instance_udpate throws exception, we\u0027ll stay good from quotas perspective as we dont need to alter anything there.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"61365c35a882791bd4648ca3a92847b073807696","unresolved":false,"context_lines":[{"line_number":3566,"context_line":"        if deferred_delete:"},{"line_number":3567,"context_line":"            try:"},{"line_number":3568,"context_line":"                self._delete_share_quota(context, share, share_instance)"},{"line_number":3569,"context_line":"                self.db.share_instance_update("},{"line_number":3570,"context_line":"                    context,"},{"line_number":3571,"context_line":"                    share_instance_id,"},{"line_number":3572,"context_line":"                    {\u0027status\u0027: constants.STATUS_DEFERRED_DELETING})"}],"source_content_type":"text/x-python","patch_set":2,"id":"cf271346_0ec165ff","line":3569,"in_reply_to":"c9121ef2_46ba597f","updated":"2024-02-09 10:29:19.000000000","message":"there is possibility of exception from delete_share_quota instead of db update.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c0bcd8d457020dfc60b29024c5b4884576d2bec5","unresolved":false,"context_lines":[{"line_number":3566,"context_line":"        if deferred_delete:"},{"line_number":3567,"context_line":"            try:"},{"line_number":3568,"context_line":"                self._delete_share_quota(context, share, share_instance)"},{"line_number":3569,"context_line":"                self.db.share_instance_update("},{"line_number":3570,"context_line":"                    context,"},{"line_number":3571,"context_line":"                    share_instance_id,"},{"line_number":3572,"context_line":"                    {\u0027status\u0027: constants.STATUS_DEFERRED_DELETING})"}],"source_content_type":"text/x-python","patch_set":2,"id":"489882b5_f6126576","line":3569,"in_reply_to":"cf271346_0ec165ff","updated":"2024-02-23 10:23:38.000000000","message":"i think we should set status to deferred_deleting in api layer.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":true,"context_lines":[{"line_number":3569,"context_line":"                self.db.share_instance_update("},{"line_number":3570,"context_line":"                    context,"},{"line_number":3571,"context_line":"                    share_instance_id,"},{"line_number":3572,"context_line":"                    {\u0027status\u0027: constants.STATUS_DEFERRED_DELETING})"},{"line_number":3573,"context_line":"                return"},{"line_number":3574,"context_line":"            except Exception as excep:"},{"line_number":3575,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":2,"id":"500e2917_21de2798","line":3572,"range":{"start_line":3572,"start_character":0,"end_line":3572,"end_character":67},"updated":"2024-02-23 10:19:32.000000000","message":"please LOG that the share has been added to a deferred deletion queue and will be deleted during the next iteration of the periodic deletion task","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":3569,"context_line":"                self.db.share_instance_update("},{"line_number":3570,"context_line":"                    context,"},{"line_number":3571,"context_line":"                    share_instance_id,"},{"line_number":3572,"context_line":"                    {\u0027status\u0027: constants.STATUS_DEFERRED_DELETING})"},{"line_number":3573,"context_line":"                return"},{"line_number":3574,"context_line":"            except Exception as excep:"},{"line_number":3575,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":2,"id":"10b02de3_42c59f19","line":3572,"range":{"start_line":3572,"start_character":0,"end_line":3572,"end_character":67},"in_reply_to":"500e2917_21de2798","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"336939cfad76501f2895abd8f6ac9ce217b10414","unresolved":true,"context_lines":[{"line_number":3642,"context_line":"                else:"},{"line_number":3643,"context_line":"                    self.delete_share_server(context, share_server)"},{"line_number":3644,"context_line":""},{"line_number":3645,"context_line":"    def _get_share_instances_to_delete(self, ctxt):"},{"line_number":3646,"context_line":"        share_instances \u003d self.db.share_instance_get_all_by_status("},{"line_number":3647,"context_line":"            ctxt, status\u003dconstants.STATUS_DEFERRED_DELETING)"},{"line_number":3648,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"b33b00fd_dd113213","line":3645,"range":{"start_line":3645,"start_character":8,"end_line":3645,"end_character":38},"updated":"2024-02-22 15:02:03.000000000","message":"_get_share_instances_with_deletion_deferred","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":3642,"context_line":"                else:"},{"line_number":3643,"context_line":"                    self.delete_share_server(context, share_server)"},{"line_number":3644,"context_line":""},{"line_number":3645,"context_line":"    def _get_share_instances_to_delete(self, ctxt):"},{"line_number":3646,"context_line":"        share_instances \u003d self.db.share_instance_get_all_by_status("},{"line_number":3647,"context_line":"            ctxt, status\u003dconstants.STATUS_DEFERRED_DELETING)"},{"line_number":3648,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"098dfd65_14f04c85","line":3645,"range":{"start_line":3645,"start_character":8,"end_line":3645,"end_character":38},"in_reply_to":"b33b00fd_dd113213","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"336939cfad76501f2895abd8f6ac9ce217b10414","unresolved":true,"context_lines":[{"line_number":3646,"context_line":"        share_instances \u003d self.db.share_instance_get_all_by_status("},{"line_number":3647,"context_line":"            ctxt, status\u003dconstants.STATUS_DEFERRED_DELETING)"},{"line_number":3648,"context_line":""},{"line_number":3649,"context_line":"        share_instances_error_deferred_deleting \u003d \\"},{"line_number":3650,"context_line":"            self.db.share_instance_get_all_by_status("},{"line_number":3651,"context_line":"                ctxt, status\u003dconstants.STATUS_ERROR_DEFERRED_DELETING)"},{"line_number":3652,"context_line":"        updated_del \u003d timeutils.utcnow() - datetime.timedelta(minutes\u003d30)"},{"line_number":3653,"context_line":"        for share_instance in share_instances_error_deferred_deleting:"},{"line_number":3654,"context_line":"            if share_instance.get(\u0027updated_at\u0027) \u003c updated_del:"}],"source_content_type":"text/x-python","patch_set":2,"id":"298f97e8_ce0345bb","line":3651,"range":{"start_line":3649,"start_character":50,"end_line":3651,"end_character":70},"updated":"2024-02-22 15:02:03.000000000","message":"please wrap with () instead of using \\","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":3646,"context_line":"        share_instances \u003d self.db.share_instance_get_all_by_status("},{"line_number":3647,"context_line":"            ctxt, status\u003dconstants.STATUS_DEFERRED_DELETING)"},{"line_number":3648,"context_line":""},{"line_number":3649,"context_line":"        share_instances_error_deferred_deleting \u003d \\"},{"line_number":3650,"context_line":"            self.db.share_instance_get_all_by_status("},{"line_number":3651,"context_line":"                ctxt, status\u003dconstants.STATUS_ERROR_DEFERRED_DELETING)"},{"line_number":3652,"context_line":"        updated_del \u003d timeutils.utcnow() - datetime.timedelta(minutes\u003d30)"},{"line_number":3653,"context_line":"        for share_instance in share_instances_error_deferred_deleting:"},{"line_number":3654,"context_line":"            if share_instance.get(\u0027updated_at\u0027) \u003c updated_del:"}],"source_content_type":"text/x-python","patch_set":2,"id":"238a08bb_f210dc46","line":3651,"range":{"start_line":3649,"start_character":50,"end_line":3651,"end_character":70},"in_reply_to":"298f97e8_ce0345bb","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":true,"context_lines":[{"line_number":3658,"context_line":"    @periodic_task.periodic_task("},{"line_number":3659,"context_line":"        spacing\u003dCONF.periodic_deferred_delete_interval)"},{"line_number":3660,"context_line":"    @utils.require_driver_initialized"},{"line_number":3661,"context_line":"    def delete_share_instances_in_driver(self, ctxt):"},{"line_number":3662,"context_line":"        LOG.debug(\"Check for shares and delete them in driver.\")"},{"line_number":3663,"context_line":"        ctxt \u003d ctxt.elevated()"},{"line_number":3664,"context_line":"        share_instances \u003d self._get_share_instances_to_delete(ctxt)"}],"source_content_type":"text/x-python","patch_set":2,"id":"08325329_73ea9527","line":3661,"updated":"2024-02-23 10:19:32.000000000","message":"Can we call this method \"do_deferred_share_deletion\" or something more appropriate?","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":3658,"context_line":"    @periodic_task.periodic_task("},{"line_number":3659,"context_line":"        spacing\u003dCONF.periodic_deferred_delete_interval)"},{"line_number":3660,"context_line":"    @utils.require_driver_initialized"},{"line_number":3661,"context_line":"    def delete_share_instances_in_driver(self, ctxt):"},{"line_number":3662,"context_line":"        LOG.debug(\"Check for shares and delete them in driver.\")"},{"line_number":3663,"context_line":"        ctxt \u003d ctxt.elevated()"},{"line_number":3664,"context_line":"        share_instances \u003d self._get_share_instances_to_delete(ctxt)"}],"source_content_type":"text/x-python","patch_set":2,"id":"31ecd917_d029d3da","line":3661,"in_reply_to":"08325329_73ea9527","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":true,"context_lines":[{"line_number":3659,"context_line":"        spacing\u003dCONF.periodic_deferred_delete_interval)"},{"line_number":3660,"context_line":"    @utils.require_driver_initialized"},{"line_number":3661,"context_line":"    def delete_share_instances_in_driver(self, ctxt):"},{"line_number":3662,"context_line":"        LOG.debug(\"Check for shares and delete them in driver.\")"},{"line_number":3663,"context_line":"        ctxt \u003d ctxt.elevated()"},{"line_number":3664,"context_line":"        share_instances \u003d self._get_share_instances_to_delete(ctxt)"},{"line_number":3665,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3491a647_19e55718","line":3662,"range":{"start_line":3662,"start_character":19,"end_line":3662,"end_character":24},"updated":"2024-02-23 10:19:32.000000000","message":"Checking for shares in \"deferred_deleting\" status to process their deletion","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":3659,"context_line":"        spacing\u003dCONF.periodic_deferred_delete_interval)"},{"line_number":3660,"context_line":"    @utils.require_driver_initialized"},{"line_number":3661,"context_line":"    def delete_share_instances_in_driver(self, ctxt):"},{"line_number":3662,"context_line":"        LOG.debug(\"Check for shares and delete them in driver.\")"},{"line_number":3663,"context_line":"        ctxt \u003d ctxt.elevated()"},{"line_number":3664,"context_line":"        share_instances \u003d self._get_share_instances_to_delete(ctxt)"},{"line_number":3665,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"2ac53f66_42e262ca","line":3662,"range":{"start_line":3662,"start_character":19,"end_line":3662,"end_character":24},"in_reply_to":"3491a647_19e55718","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c0bcd8d457020dfc60b29024c5b4884576d2bec5","unresolved":true,"context_lines":[{"line_number":3675,"context_line":"            except exception.ShareResourceNotFound:"},{"line_number":3676,"context_line":"                LOG.warning(\"Share instance %s does not exist in the \""},{"line_number":3677,"context_line":"                            \"backend.\", share_instance_id)"},{"line_number":3678,"context_line":"                continue"},{"line_number":3679,"context_line":"            except Exception:"},{"line_number":3680,"context_line":"                msg \u003d (\"The driver was unable to delete the share \""},{"line_number":3681,"context_line":"                       \"instance: %s on the backend. \")"}],"source_content_type":"text/x-python","patch_set":2,"id":"688d3204_2c30a69b","line":3678,"range":{"start_line":3678,"start_character":16,"end_line":3678,"end_character":24},"updated":"2024-02-23 10:23:38.000000000","message":"can not continue here.\nif continue, The database will keep a record of share.\nLine 3689 is not executed","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":3675,"context_line":"            except exception.ShareResourceNotFound:"},{"line_number":3676,"context_line":"                LOG.warning(\"Share instance %s does not exist in the \""},{"line_number":3677,"context_line":"                            \"backend.\", share_instance_id)"},{"line_number":3678,"context_line":"                continue"},{"line_number":3679,"context_line":"            except Exception:"},{"line_number":3680,"context_line":"                msg \u003d (\"The driver was unable to delete the share \""},{"line_number":3681,"context_line":"                       \"instance: %s on the backend. \")"}],"source_content_type":"text/x-python","patch_set":2,"id":"344223d6_20be444b","line":3678,"range":{"start_line":3678,"start_character":16,"end_line":3678,"end_character":24},"in_reply_to":"688d3204_2c30a69b","updated":"2024-02-23 16:32:59.000000000","message":"good catch. fixed","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c0bcd8d457020dfc60b29024c5b4884576d2bec5","unresolved":true,"context_lines":[{"line_number":3687,"context_line":"                continue"},{"line_number":3688,"context_line":""},{"line_number":3689,"context_line":"            self.db.share_instance_delete(ctxt, share_instance_id)"},{"line_number":3690,"context_line":"            LOG.info(\"Share instance %s: deleted successfully.\","},{"line_number":3691,"context_line":"                     share_instance_id)"},{"line_number":3692,"context_line":"            self._check_delete_share_server(ctxt,"},{"line_number":3693,"context_line":"                                            share_instance\u003dshare_instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"11a69144_abf9f718","line":3690,"range":{"start_line":3690,"start_character":12,"end_line":3690,"end_character":64},"updated":"2024-02-23 10:23:38.000000000","message":"LOG.info(\"Share instance %s: deferred deleted successfully.\",","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":3687,"context_line":"                continue"},{"line_number":3688,"context_line":""},{"line_number":3689,"context_line":"            self.db.share_instance_delete(ctxt, share_instance_id)"},{"line_number":3690,"context_line":"            LOG.info(\"Share instance %s: deleted successfully.\","},{"line_number":3691,"context_line":"                     share_instance_id)"},{"line_number":3692,"context_line":"            self._check_delete_share_server(ctxt,"},{"line_number":3693,"context_line":"                                            share_instance\u003dshare_instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"2b7adbd3_f62ce9b5","line":3690,"range":{"start_line":3690,"start_character":12,"end_line":3690,"end_character":64},"in_reply_to":"11a69144_abf9f718","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":true,"context_lines":[{"line_number":3663,"context_line":"        ctxt \u003d ctxt.elevated()"},{"line_number":3664,"context_line":"        share_instances \u003d self._get_share_instances_to_delete(ctxt)"},{"line_number":3665,"context_line":""},{"line_number":3666,"context_line":"        for share_instance in share_instances:"},{"line_number":3667,"context_line":"            share_instance_id \u003d share_instance[\u0027id\u0027]"},{"line_number":3668,"context_line":"            share_instance \u003d self._get_share_instance(ctxt, share_instance_id)"},{"line_number":3669,"context_line":"            share_id \u003d share_instance.get(\u0027share_id\u0027)"},{"line_number":3670,"context_line":"            share_server \u003d self._get_share_server(ctxt, share_instance)"},{"line_number":3671,"context_line":"            share \u003d self.db.share_get(ctxt, share_id)"},{"line_number":3672,"context_line":"            try:"},{"line_number":3673,"context_line":"                self.driver.delete_share(ctxt, share_instance,"},{"line_number":3674,"context_line":"                                         share_server\u003dshare_server)"},{"line_number":3675,"context_line":"            except exception.ShareResourceNotFound:"},{"line_number":3676,"context_line":"                LOG.warning(\"Share instance %s does not exist in the \""},{"line_number":3677,"context_line":"                            \"backend.\", share_instance_id)"},{"line_number":3678,"context_line":"                continue"},{"line_number":3679,"context_line":"            except Exception:"},{"line_number":3680,"context_line":"                msg \u003d (\"The driver was unable to delete the share \""},{"line_number":3681,"context_line":"                       \"instance: %s on the backend. \")"},{"line_number":3682,"context_line":"                LOG.error(msg, share_instance_id)"},{"line_number":3683,"context_line":"                self.db.share_instance_update("},{"line_number":3684,"context_line":"                    ctxt,"},{"line_number":3685,"context_line":"                    share_instance_id,"},{"line_number":3686,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR_DEFERRED_DELETING})"},{"line_number":3687,"context_line":"                continue"},{"line_number":3688,"context_line":""},{"line_number":3689,"context_line":"            self.db.share_instance_delete(ctxt, share_instance_id)"},{"line_number":3690,"context_line":"            LOG.info(\"Share instance %s: deleted successfully.\","},{"line_number":3691,"context_line":"                     share_instance_id)"},{"line_number":3692,"context_line":"            self._check_delete_share_server(ctxt,"},{"line_number":3693,"context_line":"                                            share_instance\u003dshare_instance)"},{"line_number":3694,"context_line":"            self._notify_about_share_usage(ctxt, share,"},{"line_number":3695,"context_line":"                                           share_instance, \"delete.end\")"},{"line_number":3696,"context_line":""},{"line_number":3697,"context_line":"    @periodic_task.periodic_task(spacing\u003d600)"},{"line_number":3698,"context_line":"    @utils.require_driver_initialized"},{"line_number":3699,"context_line":"    def delete_free_share_servers(self, ctxt):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fd5e3dc1_9714420a","line":3696,"range":{"start_line":3666,"start_character":8,"end_line":3696,"end_character":0},"updated":"2024-02-23 10:19:32.000000000","message":"Feels like unnecessary code duplication; maybe there\u0027s a way to extract this into a common function to share between the regular delete call and this?","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"55079272bbdd8154e2df50d05c03d57a07d99dae","unresolved":false,"context_lines":[{"line_number":3663,"context_line":"        ctxt \u003d ctxt.elevated()"},{"line_number":3664,"context_line":"        share_instances \u003d self._get_share_instances_to_delete(ctxt)"},{"line_number":3665,"context_line":""},{"line_number":3666,"context_line":"        for share_instance in share_instances:"},{"line_number":3667,"context_line":"            share_instance_id \u003d share_instance[\u0027id\u0027]"},{"line_number":3668,"context_line":"            share_instance \u003d self._get_share_instance(ctxt, share_instance_id)"},{"line_number":3669,"context_line":"            share_id \u003d share_instance.get(\u0027share_id\u0027)"},{"line_number":3670,"context_line":"            share_server \u003d self._get_share_server(ctxt, share_instance)"},{"line_number":3671,"context_line":"            share \u003d self.db.share_get(ctxt, share_id)"},{"line_number":3672,"context_line":"            try:"},{"line_number":3673,"context_line":"                self.driver.delete_share(ctxt, share_instance,"},{"line_number":3674,"context_line":"                                         share_server\u003dshare_server)"},{"line_number":3675,"context_line":"            except exception.ShareResourceNotFound:"},{"line_number":3676,"context_line":"                LOG.warning(\"Share instance %s does not exist in the \""},{"line_number":3677,"context_line":"                            \"backend.\", share_instance_id)"},{"line_number":3678,"context_line":"                continue"},{"line_number":3679,"context_line":"            except Exception:"},{"line_number":3680,"context_line":"                msg \u003d (\"The driver was unable to delete the share \""},{"line_number":3681,"context_line":"                       \"instance: %s on the backend. \")"},{"line_number":3682,"context_line":"                LOG.error(msg, share_instance_id)"},{"line_number":3683,"context_line":"                self.db.share_instance_update("},{"line_number":3684,"context_line":"                    ctxt,"},{"line_number":3685,"context_line":"                    share_instance_id,"},{"line_number":3686,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR_DEFERRED_DELETING})"},{"line_number":3687,"context_line":"                continue"},{"line_number":3688,"context_line":""},{"line_number":3689,"context_line":"            self.db.share_instance_delete(ctxt, share_instance_id)"},{"line_number":3690,"context_line":"            LOG.info(\"Share instance %s: deleted successfully.\","},{"line_number":3691,"context_line":"                     share_instance_id)"},{"line_number":3692,"context_line":"            self._check_delete_share_server(ctxt,"},{"line_number":3693,"context_line":"                                            share_instance\u003dshare_instance)"},{"line_number":3694,"context_line":"            self._notify_about_share_usage(ctxt, share,"},{"line_number":3695,"context_line":"                                           share_instance, \"delete.end\")"},{"line_number":3696,"context_line":""},{"line_number":3697,"context_line":"    @periodic_task.periodic_task(spacing\u003d600)"},{"line_number":3698,"context_line":"    @utils.require_driver_initialized"},{"line_number":3699,"context_line":"    def delete_free_share_servers(self, ctxt):"}],"source_content_type":"text/x-python","patch_set":2,"id":"b04c0326_c434fddd","line":3696,"range":{"start_line":3666,"start_character":8,"end_line":3696,"end_character":0},"in_reply_to":"fd5e3dc1_9714420a","updated":"2024-02-26 12:40:01.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c0bcd8d457020dfc60b29024c5b4884576d2bec5","unresolved":true,"context_lines":[{"line_number":3916,"context_line":"            try:"},{"line_number":3917,"context_line":"                self._delete_snapshot_quota(context, snapshot_ref,"},{"line_number":3918,"context_line":"                                            deferred_delete\u003dTrue)"},{"line_number":3919,"context_line":"                self.db.share_snapshot_instance_update("},{"line_number":3920,"context_line":"                    context,"},{"line_number":3921,"context_line":"                    snapshot_instance_id,"},{"line_number":3922,"context_line":"                    {\u0027status\u0027: constants.STATUS_DEFERRED_DELETING})"},{"line_number":3923,"context_line":"                return"},{"line_number":3924,"context_line":"            except Exception as excep:"},{"line_number":3925,"context_line":"                with excutils.save_and_reraise_exception() as exc:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9d47876f_98a54368","line":3922,"range":{"start_line":3919,"start_character":16,"end_line":3922,"end_character":67},"updated":"2024-02-23 10:23:38.000000000","message":"same above, move status change to api layer.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":3916,"context_line":"            try:"},{"line_number":3917,"context_line":"                self._delete_snapshot_quota(context, snapshot_ref,"},{"line_number":3918,"context_line":"                                            deferred_delete\u003dTrue)"},{"line_number":3919,"context_line":"                self.db.share_snapshot_instance_update("},{"line_number":3920,"context_line":"                    context,"},{"line_number":3921,"context_line":"                    snapshot_instance_id,"},{"line_number":3922,"context_line":"                    {\u0027status\u0027: constants.STATUS_DEFERRED_DELETING})"},{"line_number":3923,"context_line":"                return"},{"line_number":3924,"context_line":"            except Exception as excep:"},{"line_number":3925,"context_line":"                with excutils.save_and_reraise_exception() as exc:"}],"source_content_type":"text/x-python","patch_set":2,"id":"2263fdc8_2979cd94","line":3922,"range":{"start_line":3919,"start_character":16,"end_line":3922,"end_character":67},"in_reply_to":"9d47876f_98a54368","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"336939cfad76501f2895abd8f6ac9ce217b10414","unresolved":true,"context_lines":[{"line_number":3964,"context_line":"        self.db.share_snapshot_instance_delete(context, snapshot_instance_id)"},{"line_number":3965,"context_line":"        self._delete_snapshot_quota(context, snapshot_ref)"},{"line_number":3966,"context_line":""},{"line_number":3967,"context_line":"    def _get_snapshot_instances_to_delete(self, ctxt):"},{"line_number":3968,"context_line":"        snap_instances \u003d self.db.share_snapshot_instance_get_all_with_filters("},{"line_number":3969,"context_line":"            ctxt, {\u0027statuses\u0027: constants.STATUS_DEFERRED_DELETING})"},{"line_number":3970,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7bd500da_528acb71","line":3967,"range":{"start_line":3967,"start_character":8,"end_line":3967,"end_character":41},"updated":"2024-02-22 15:02:03.000000000","message":"same pattern of the method above","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":3964,"context_line":"        self.db.share_snapshot_instance_delete(context, snapshot_instance_id)"},{"line_number":3965,"context_line":"        self._delete_snapshot_quota(context, snapshot_ref)"},{"line_number":3966,"context_line":""},{"line_number":3967,"context_line":"    def _get_snapshot_instances_to_delete(self, ctxt):"},{"line_number":3968,"context_line":"        snap_instances \u003d self.db.share_snapshot_instance_get_all_with_filters("},{"line_number":3969,"context_line":"            ctxt, {\u0027statuses\u0027: constants.STATUS_DEFERRED_DELETING})"},{"line_number":3970,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"d29d83a1_a0959417","line":3967,"range":{"start_line":3967,"start_character":8,"end_line":3967,"end_character":41},"in_reply_to":"7bd500da_528acb71","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"72574b5b0cd90423fe5ac116f08a4ab44eccbf39","unresolved":true,"context_lines":[{"line_number":3565,"context_line":"            try:"},{"line_number":3566,"context_line":"                self.db.update_share_instance_quota_usages(context,"},{"line_number":3567,"context_line":"                                                           share_instance_id)"},{"line_number":3568,"context_line":"                LOG.debug("},{"line_number":3569,"context_line":"                    \"Share instance %s has been added to a deferred deletion \""},{"line_number":3570,"context_line":"                    \"queue and will be deleted during the next iteration of \""},{"line_number":3571,"context_line":"                    \"the periodic deletion task\", share_instance_id"}],"source_content_type":"text/x-python","patch_set":8,"id":"f0b0a0b4_f0cc384e","line":3568,"range":{"start_line":3568,"start_character":20,"end_line":3568,"end_character":25},"updated":"2024-03-09 01:43:54.000000000","message":"info","commit_id":"367739992bc1c34a31f81a15491758f4570a1a45"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6539d42ef1c8f8e178715a95077aadf6c2d56031","unresolved":false,"context_lines":[{"line_number":3565,"context_line":"            try:"},{"line_number":3566,"context_line":"                self.db.update_share_instance_quota_usages(context,"},{"line_number":3567,"context_line":"                                                           share_instance_id)"},{"line_number":3568,"context_line":"                LOG.debug("},{"line_number":3569,"context_line":"                    \"Share instance %s has been added to a deferred deletion \""},{"line_number":3570,"context_line":"                    \"queue and will be deleted during the next iteration of \""},{"line_number":3571,"context_line":"                    \"the periodic deletion task\", share_instance_id"}],"source_content_type":"text/x-python","patch_set":8,"id":"7d9b348b_1902713b","line":3568,"range":{"start_line":3568,"start_character":20,"end_line":3568,"end_character":25},"in_reply_to":"f0b0a0b4_f0cc384e","updated":"2024-03-11 10:55:17.000000000","message":"Done","commit_id":"367739992bc1c34a31f81a15491758f4570a1a45"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"72574b5b0cd90423fe5ac116f08a4ab44eccbf39","unresolved":true,"context_lines":[{"line_number":3571,"context_line":"                    \"the periodic deletion task\", share_instance_id"},{"line_number":3572,"context_line":"                )"},{"line_number":3573,"context_line":"                return"},{"line_number":3574,"context_line":"            except Exception as excep:"},{"line_number":3575,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":3576,"context_line":"                    self.db.share_instance_update("},{"line_number":3577,"context_line":"                        context,"},{"line_number":3578,"context_line":"                        share_instance_id,"},{"line_number":3579,"context_line":"                        {\u0027status\u0027: constants.STATUS_ERROR_DELETING})"},{"line_number":3580,"context_line":"                    self.message_api.create("},{"line_number":3581,"context_line":"                        context,"},{"line_number":3582,"context_line":"                        message_field.Action.DELETE,"},{"line_number":3583,"context_line":"                        share_instance[\u0027project_id\u0027],"},{"line_number":3584,"context_line":"                        resource_type\u003dmessage_field.Resource.SHARE,"},{"line_number":3585,"context_line":"                        resource_id\u003dshare_instance_id,"},{"line_number":3586,"context_line":"                        exception\u003dexcep)"},{"line_number":3587,"context_line":""},{"line_number":3588,"context_line":"        try:"},{"line_number":3589,"context_line":"            self.driver.delete_share(context, share_instance,"}],"source_content_type":"text/x-python","patch_set":8,"id":"4ce7b4dc_32fd0339","line":3586,"range":{"start_line":3574,"start_character":12,"end_line":3586,"end_character":40},"updated":"2024-03-09 01:43:54.000000000","message":"Lets discuss this; we\u0027ve so far ignored quota cleanup errors; so are we sure we want to surface this for deferred deletions?","commit_id":"367739992bc1c34a31f81a15491758f4570a1a45"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6539d42ef1c8f8e178715a95077aadf6c2d56031","unresolved":false,"context_lines":[{"line_number":3571,"context_line":"                    \"the periodic deletion task\", share_instance_id"},{"line_number":3572,"context_line":"                )"},{"line_number":3573,"context_line":"                return"},{"line_number":3574,"context_line":"            except Exception as excep:"},{"line_number":3575,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":3576,"context_line":"                    self.db.share_instance_update("},{"line_number":3577,"context_line":"                        context,"},{"line_number":3578,"context_line":"                        share_instance_id,"},{"line_number":3579,"context_line":"                        {\u0027status\u0027: constants.STATUS_ERROR_DELETING})"},{"line_number":3580,"context_line":"                    self.message_api.create("},{"line_number":3581,"context_line":"                        context,"},{"line_number":3582,"context_line":"                        message_field.Action.DELETE,"},{"line_number":3583,"context_line":"                        share_instance[\u0027project_id\u0027],"},{"line_number":3584,"context_line":"                        resource_type\u003dmessage_field.Resource.SHARE,"},{"line_number":3585,"context_line":"                        resource_id\u003dshare_instance_id,"},{"line_number":3586,"context_line":"                        exception\u003dexcep)"},{"line_number":3587,"context_line":""},{"line_number":3588,"context_line":"        try:"},{"line_number":3589,"context_line":"            self.driver.delete_share(context, share_instance,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9b5c98c0_2cd5ad31","line":3586,"range":{"start_line":3574,"start_character":12,"end_line":3586,"end_character":40},"in_reply_to":"4ce7b4dc_32fd0339","updated":"2024-03-11 10:55:17.000000000","message":"Done","commit_id":"367739992bc1c34a31f81a15491758f4570a1a45"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"72574b5b0cd90423fe5ac116f08a4ab44eccbf39","unresolved":true,"context_lines":[{"line_number":3658,"context_line":"            self.db.share_instance_get_all("},{"line_number":3659,"context_line":"                ctxt,"},{"line_number":3660,"context_line":"                filters\u003d{\u0027status\u0027: constants.STATUS_ERROR_DEFERRED_DELETING}))"},{"line_number":3661,"context_line":"        updated_del \u003d timeutils.utcnow() - datetime.timedelta(minutes\u003d30)"},{"line_number":3662,"context_line":"        for share_instance in share_instances_error_deferred_deleting:"},{"line_number":3663,"context_line":"            if share_instance.get(\u0027updated_at\u0027) \u003c updated_del:"},{"line_number":3664,"context_line":"                share_instances.append(share_instance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7eb2acd4_50011427","line":3661,"range":{"start_line":3661,"start_character":8,"end_line":3661,"end_character":73},"updated":"2024-03-09 01:43:54.000000000","message":"I didn\u0027t get this logic.. \n\nYou\u0027re picking up anything that is \"deferred_deleting\" but updated wihin the last 29 minutes?","commit_id":"367739992bc1c34a31f81a15491758f4570a1a45"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6539d42ef1c8f8e178715a95077aadf6c2d56031","unresolved":false,"context_lines":[{"line_number":3658,"context_line":"            self.db.share_instance_get_all("},{"line_number":3659,"context_line":"                ctxt,"},{"line_number":3660,"context_line":"                filters\u003d{\u0027status\u0027: constants.STATUS_ERROR_DEFERRED_DELETING}))"},{"line_number":3661,"context_line":"        updated_del \u003d timeutils.utcnow() - datetime.timedelta(minutes\u003d30)"},{"line_number":3662,"context_line":"        for share_instance in share_instances_error_deferred_deleting:"},{"line_number":3663,"context_line":"            if share_instance.get(\u0027updated_at\u0027) \u003c updated_del:"},{"line_number":3664,"context_line":"                share_instances.append(share_instance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"e99c4d6d_b546d02c","line":3661,"range":{"start_line":3661,"start_character":8,"end_line":3661,"end_character":73},"in_reply_to":"7eb2acd4_50011427","updated":"2024-03-11 10:55:17.000000000","message":"1. all with deferred deleting \n2. older than 30 mins with error_deferred_deleting\nabove two are considered.","commit_id":"367739992bc1c34a31f81a15491758f4570a1a45"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"72574b5b0cd90423fe5ac116f08a4ab44eccbf39","unresolved":true,"context_lines":[{"line_number":3882,"context_line":"        except Exception as e:"},{"line_number":3883,"context_line":"            LOG.exception(\"Failed to update quota usages while deleting \""},{"line_number":3884,"context_line":"                          \"snapshot %s.\", snapshot[\u0027id\u0027])"},{"line_number":3885,"context_line":"            if deferred_delete:"},{"line_number":3886,"context_line":"                raise e"},{"line_number":3887,"context_line":""},{"line_number":3888,"context_line":"        if reservations:"},{"line_number":3889,"context_line":"            QUOTAS.commit("}],"source_content_type":"text/x-python","patch_set":8,"id":"d15e8671_dda4a1e8","line":3886,"range":{"start_line":3885,"start_character":11,"end_line":3886,"end_character":23},"updated":"2024-03-09 01:43:54.000000000","message":"same question as the share deletion.. I think we should have the same UX as regular deletions... if there\u0027s a problem unsetting quotas, there\u0027s not much an end user can do; since we already log quota cleanup errors, we can preserve that behavior with deferred deletions..","commit_id":"367739992bc1c34a31f81a15491758f4570a1a45"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6539d42ef1c8f8e178715a95077aadf6c2d56031","unresolved":false,"context_lines":[{"line_number":3882,"context_line":"        except Exception as e:"},{"line_number":3883,"context_line":"            LOG.exception(\"Failed to update quota usages while deleting \""},{"line_number":3884,"context_line":"                          \"snapshot %s.\", snapshot[\u0027id\u0027])"},{"line_number":3885,"context_line":"            if deferred_delete:"},{"line_number":3886,"context_line":"                raise e"},{"line_number":3887,"context_line":""},{"line_number":3888,"context_line":"        if reservations:"},{"line_number":3889,"context_line":"            QUOTAS.commit("}],"source_content_type":"text/x-python","patch_set":8,"id":"661d4639_396c1217","line":3886,"range":{"start_line":3885,"start_character":11,"end_line":3886,"end_character":23},"in_reply_to":"d15e8671_dda4a1e8","updated":"2024-03-11 10:55:17.000000000","message":"ok, removed this raise","commit_id":"367739992bc1c34a31f81a15491758f4570a1a45"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8a8a610fa0ca6313a9e1e251a671fae1fbfcfd09","unresolved":true,"context_lines":[{"line_number":3681,"context_line":"                LOG.warning(\"Share instance %s does not exist in the \""},{"line_number":3682,"context_line":"                            \"backend.\", share_instance_id)"},{"line_number":3683,"context_line":"            except Exception:"},{"line_number":3684,"context_line":"                msg \u003d (\"The driver was unable to delete the share \""},{"line_number":3685,"context_line":"                       \"instance: %s on the backend. \")"},{"line_number":3686,"context_line":"                LOG.error(msg, share_instance_id)"},{"line_number":3687,"context_line":"                self.db.share_instance_update("},{"line_number":3688,"context_line":"                    ctxt,"},{"line_number":3689,"context_line":"                    share_instance_id,"},{"line_number":3690,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR_DEFERRED_DELETING})"},{"line_number":3691,"context_line":"                continue"},{"line_number":3692,"context_line":""},{"line_number":3693,"context_line":"            self.db.share_instance_delete(ctxt, share_instance_id)"},{"line_number":3694,"context_line":"            LOG.info(\"Share instance %s: deferred deleted successfully.\","}],"source_content_type":"text/x-python","patch_set":11,"id":"ac3b821c_8e95f621","line":3691,"range":{"start_line":3684,"start_character":0,"end_line":3691,"end_character":24},"updated":"2024-03-12 17:53:18.000000000","message":"not covered by unit tests: https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_aa7/907051/11/check/openstack-tox-cover/aa72137/cover/d_030f674440dfdd1c_manager_py.html#t3683","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"187ff8fa29093077dea532e67e352ff273af4802","unresolved":false,"context_lines":[{"line_number":3681,"context_line":"                LOG.warning(\"Share instance %s does not exist in the \""},{"line_number":3682,"context_line":"                            \"backend.\", share_instance_id)"},{"line_number":3683,"context_line":"            except Exception:"},{"line_number":3684,"context_line":"                msg \u003d (\"The driver was unable to delete the share \""},{"line_number":3685,"context_line":"                       \"instance: %s on the backend. \")"},{"line_number":3686,"context_line":"                LOG.error(msg, share_instance_id)"},{"line_number":3687,"context_line":"                self.db.share_instance_update("},{"line_number":3688,"context_line":"                    ctxt,"},{"line_number":3689,"context_line":"                    share_instance_id,"},{"line_number":3690,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR_DEFERRED_DELETING})"},{"line_number":3691,"context_line":"                continue"},{"line_number":3692,"context_line":""},{"line_number":3693,"context_line":"            self.db.share_instance_delete(ctxt, share_instance_id)"},{"line_number":3694,"context_line":"            LOG.info(\"Share instance %s: deferred deleted successfully.\","}],"source_content_type":"text/x-python","patch_set":11,"id":"e8b5a6d5_76c4360e","line":3691,"range":{"start_line":3684,"start_character":0,"end_line":3691,"end_character":24},"in_reply_to":"ac3b821c_8e95f621","updated":"2024-03-13 12:49:20.000000000","message":"Done","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8a8a610fa0ca6313a9e1e251a671fae1fbfcfd09","unresolved":true,"context_lines":[{"line_number":3994,"context_line":"                self.driver.delete_snapshot(ctxt, snapshot_instance,"},{"line_number":3995,"context_line":"                                            share_server\u003dshare_server)"},{"line_number":3996,"context_line":"            except Exception:"},{"line_number":3997,"context_line":"                self.db.share_snapshot_instance_update("},{"line_number":3998,"context_line":"                    ctxt,"},{"line_number":3999,"context_line":"                    snapshot_instance_id,"},{"line_number":4000,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR_DEFERRED_DELETING})"},{"line_number":4001,"context_line":"                continue"},{"line_number":4002,"context_line":"            self.db.share_snapshot_instance_delete(ctxt,"},{"line_number":4003,"context_line":"                                                   snapshot_instance_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7483df71_2abf2f58","line":4000,"range":{"start_line":3997,"start_character":0,"end_line":4000,"end_character":73},"updated":"2024-03-12 17:53:18.000000000","message":"not covered by unit tests: https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_aa7/907051/11/check/openstack-tox-cover/aa72137/cover/d_030f674440dfdd1c_manager_py.html#t3999","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"187ff8fa29093077dea532e67e352ff273af4802","unresolved":false,"context_lines":[{"line_number":3994,"context_line":"                self.driver.delete_snapshot(ctxt, snapshot_instance,"},{"line_number":3995,"context_line":"                                            share_server\u003dshare_server)"},{"line_number":3996,"context_line":"            except Exception:"},{"line_number":3997,"context_line":"                self.db.share_snapshot_instance_update("},{"line_number":3998,"context_line":"                    ctxt,"},{"line_number":3999,"context_line":"                    snapshot_instance_id,"},{"line_number":4000,"context_line":"                    {\u0027status\u0027: constants.STATUS_ERROR_DEFERRED_DELETING})"},{"line_number":4001,"context_line":"                continue"},{"line_number":4002,"context_line":"            self.db.share_snapshot_instance_delete(ctxt,"},{"line_number":4003,"context_line":"                                                   snapshot_instance_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"4f383f91_d2e75632","line":4000,"range":{"start_line":3997,"start_character":0,"end_line":4000,"end_character":73},"in_reply_to":"7483df71_2abf2f58","updated":"2024-03-13 12:49:20.000000000","message":"Done","commit_id":"558288e00ad70ee6024fb73dc94279ce954a6ed3"}],"manila/share/rpcapi.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"70d762eb7a8cdb234cdce111d36c722c94507b57","unresolved":true,"context_lines":[{"line_number":87,"context_line":"        1.25 - Add transfer_accept()"},{"line_number":88,"context_line":"        1.26 - Add create_backup() and delete_backup()"},{"line_number":89,"context_line":"            restore_backup() methods"},{"line_number":90,"context_line":"        1.27 - Update delete_share_instance API"},{"line_number":91,"context_line":"    \"\"\""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"eb5c4904_4a2e10bc","line":90,"updated":"2024-02-23 10:19:32.000000000","message":"Update delete_share_instance() and delete_snapshot() methods","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        1.25 - Add transfer_accept()"},{"line_number":88,"context_line":"        1.26 - Add create_backup() and delete_backup()"},{"line_number":89,"context_line":"            restore_backup() methods"},{"line_number":90,"context_line":"        1.27 - Update delete_share_instance API"},{"line_number":91,"context_line":"    \"\"\""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    BASE_RPC_API_VERSION \u003d \u00271.0\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"797011a0_72b75937","line":90,"in_reply_to":"eb5c4904_4a2e10bc","updated":"2024-02-23 16:32:59.000000000","message":"Done","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"}],"releasenotes/notes/blueprint-share-and-snapshot-deferred-deletion-b3453718fd1e4b56.yaml":[{"author":{"_account_id":36178,"name":"Saravanan Manickam","display_name":"msaravan","email":"manicsaran@gmail.com","username":"msaravan"},"change_message_id":"c764ac0d5195026947f4e9340c8ab15a14d00fc0","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    With deferred deletion, when resource(share or snapshot) is deleted, the"},{"line_number":5,"context_line":"    quota is freed immediately and periodic tasks will delete the resource"},{"line_number":6,"context_line":"    (i.e. share or snapshot) in driver. The resources errored during deletion"},{"line_number":7,"context_line":"    are retried for deletion after some time in the same periodic tasks."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"5b8bc2d9_2b1f7948","line":7,"updated":"2024-02-09 02:32:43.000000000","message":"Did you find the root cause why we are not able to delete the share or snapshot when clone is present ? I see a change in ONTAP b/w 9.8 and 9.13 versions. \n\nIn ONTAP 9.8, the below works perfectly fine: \n\u003d\u003e Delete clone (new share created from snapshot in openstack)\n\u003d\u003e Delete the snapshot from parent volume (snapshot created in openstack)\n\u003d\u003e Delete the parent volume (parent share in openstack)\n\nIn ONTAP 9.13, the same flow is not working fine. I tried it yesterday via OpenStack as well as direct ONTAP commands, and hit same orphan objects in ONTAP. So, the right flow worked for me in 9.13 is : \n\n\u003d\u003e Split the clone (it takes time as it does copying data from snapshot and make it an individual volume)\n\u003d\u003e Delete clone (new share created from snapshot in openstack)\n\u003d\u003e Delete the snapshot from parent volume (snapshot created in openstack)\n\u003d\u003e Delete the parent volume (parent share in openstack)\n\u003d\u003e This way, there are no orphan objects in ONTAP. \n\nI feel that, deferred deletion is good in one way, and we need to check with ONTAP team to find out why this is changed as its breaking our product. There might be some options in ONTAP to delete the clone directly as how it used to work in ONTAP 9.8. Will reach out to FlexClone team and log a bug on ONTAP.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":36178,"name":"Saravanan Manickam","display_name":"msaravan","email":"manicsaran@gmail.com","username":"msaravan"},"change_message_id":"37d683763434bb2fd2d0b934a1a0afcdbe7561f7","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    With deferred deletion, when resource(share or snapshot) is deleted, the"},{"line_number":5,"context_line":"    quota is freed immediately and periodic tasks will delete the resource"},{"line_number":6,"context_line":"    (i.e. share or snapshot) in driver. The resources errored during deletion"},{"line_number":7,"context_line":"    are retried for deletion after some time in the same periodic tasks."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"e520f7e6_266c600a","line":7,"in_reply_to":"1cf9dd03_a7925b1a","updated":"2024-02-09 14:21:20.000000000","message":"Yes, from NetApp point of view, there are multiple ways we can delete flexclone volumes immediately. Starting from ONTAP 13.1, it has been done intentionally that, if user mistakenly deletes flexclone, we want to keep it for until retention period expires. To avoid waiting for the retention period,and to delete the flexclone share immediately we can do one of this. You can try it in the lab, it\u0027ll delete such flexclones immediately. \n\n1) Force delete the flexclone share which will delete the volume immediately in ONTAP  \n2) Set the retention period to 0\n3) Do \"volume recovery-queue purge-all\" \n\nI prefer, we can implement option #1 in NetApp driver code. See my sample snippet below. \n\naff250-astra-01-02::\u003e volume clone show\n                      Parent  Parent        Parent\nVserver FlexClone     Vserver Volume        Snapshot             State     Type\n------- ------------- ------- ------------- -------------------- --------- ----\nms-nfs2 vol1_clone    ms-nfs2 vol1          vol1-snap            online    RW\n\naff250-astra-01-02::\u003e\n\n\naff250-astra-01-02::\u003e volume offline -vserver ms-nfs2 -volume vol1_clone\nVolume \"ms-nfs2:vol1_clone\" is now offline.\n\naff250-astra-01-02::\u003e volume destroy -vserver ms-nfs2 -volume vol1_clone -force\n[Job 10400] Job is queued: Delete vol1_clone.\n\nWarning: Unable to list entries for kernel on node \"aff250-astra-01\": Volume is offline.\nVolume \"ms-nfs2:vol1_clone\" destroyed.\n\naff250-astra-01-02::\u003e volume clone show \nThere are no entries matching your query.\n\naff250-astra-01-02::\u003e","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"61365c35a882791bd4648ca3a92847b073807696","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    With deferred deletion, when resource(share or snapshot) is deleted, the"},{"line_number":5,"context_line":"    quota is freed immediately and periodic tasks will delete the resource"},{"line_number":6,"context_line":"    (i.e. share or snapshot) in driver. The resources errored during deletion"},{"line_number":7,"context_line":"    are retried for deletion after some time in the same periodic tasks."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1cf9dd03_a7925b1a","line":7,"in_reply_to":"5b8bc2d9_2b1f7948","updated":"2024-02-09 10:29:19.000000000","message":"As mentioned abouve, I believe the split the clone, takes time. Anyways deferred deletion is generic feature and can benefit other drivers as well.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3fe83b5f2f9d379a35b035b9705ab7af1271ce08","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    With deferred deletion, when resource(share or snapshot) is deleted, the"},{"line_number":5,"context_line":"    quota is freed immediately and periodic tasks will delete the resource"},{"line_number":6,"context_line":"    (i.e. share or snapshot) in driver. The resources errored during deletion"},{"line_number":7,"context_line":"    are retried for deletion after some time in the same periodic tasks."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"436d3d54_93aef1e2","line":7,"in_reply_to":"e520f7e6_266c600a","updated":"2024-02-23 16:32:59.000000000","message":"this is generic feature and wont need changes in netapp layer.","commit_id":"fe67e89395c84c7a45f37858c2c0a9868a32f920"}]}
