)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"ebc1929d0a7d050e1439c87cb93611d228db46a5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9024180d_fdb0201a","updated":"2023-07-20 15:18:02.000000000","message":"Hi kiran, thank you for the fix. See my comments.","commit_id":"3e05b9567b2b379b8f4328c688259e12a0fb4580"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7f8812e66e9c60f940c5a9d7678f346dc97f17a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"584efbe3_8c013e15","updated":"2023-08-07 17:56:07.000000000","message":"please rebase","commit_id":"bd1d4ab564a3eff8090cf8103b32a1a7dd604184"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"4145efaa6460526193a00ab4d6ff646abacfaf73","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1032980f_34394c7d","updated":"2023-09-07 11:05:34.000000000","message":"Hello,\n\nPlease review pylint report:\n```\n+ tox -e pylint\n...\n************* Module manila.share.drivers.netapp.dataontap.client.api\nmanila/share/drivers/netapp/dataontap/client/api.py:30:0: E0401: Unable to import \u0027requests.packages.urllib3.util.retry\u0027 (import-error)\nmanila/share/drivers/netapp/dataontap/client/api.py:134:15: E1101: Instance of \u0027BaseClient\u0027 has no \u0027_server_type\u0027 member (no-member)\n```\n\nThank you!","commit_id":"7fde2159ddaf592e567f2af71cb1bff77cdaa545"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"49477bf8303f4453a0ae714b3263f06f01cc2a60","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"85c89522_9231d1bf","in_reply_to":"1032980f_34394c7d","updated":"2023-09-07 12:00:28.000000000","message":"this is not related to current pull request.","commit_id":"7fde2159ddaf592e567f2af71cb1bff77cdaa545"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"95eac0f632e9b0f00a76ae29cdf59f46c0915155","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"95de287f_754a0c8a","updated":"2023-10-27 19:41:58.000000000","message":"We discussed this in detail at the PTG; and I am okay with this change, with the reassurance that the \"split_clone_stop\" API that you execute is:\n\n1) synchronous\n2) stops the clone-split operation immediately\n\nand allows the driver to proceed to unmount... \n\nI do still have questions though?\n\nCan you delete the share with pending (but stopped) clone split jobs? \n\nI\u0027d also like some eyes from NetApp maintainers - the CI system is failing..","commit_id":"a71054e093054a2ba573594151766fccc9b48d57"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"3147217c8fd7f2c15881e3890ad6d5cafa23326a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"727b0be3_2cd9d782","in_reply_to":"08044107_ada671e4","updated":"2023-11-08 14:46:02.000000000","message":"I trigger the CI run NetApp, here is the details of 2 voting jobs\n\nmanila-tempest-plugin-ontap-dhss: this job is failing with 5 failures those seems to be intermediate failure and not even related to this code. Below is the test result\nhttps://netappopenstacklogserver.s3-us-west-1.amazonaws.com/logs/27/888927/7/upstream-check/manila-tempest-plugin-ontap-dhss/2a2fe84/testr_results.html \n\nmanila-tempest-plugin-ontap-no-dhss all test in this job is passing, below is the test result \nhttps://netappopenstacklogserver.s3-us-west-1.amazonaws.com/logs/27/888927/7/upstream-check/manila-tempest-plugin-ontap-no-dhss/c68027f/testr_results.html\n\nSo, CI run point of view we are good here.","commit_id":"a71054e093054a2ba573594151766fccc9b48d57"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"39bc1a7e3a0afe3b3efabcb943560d06e140ecab","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7cbe64c6_e780522d","in_reply_to":"727b0be3_2cd9d782","updated":"2023-11-09 06:19:27.000000000","message":"clone split is log running process and executed in background. split_clone_stop is quick and synchronous. Regarding your question\nCan you delete the share with pending (but stopped) clone split jobs? \nsplit clone is paused when volume goes offline. before deleting volume, we have to take ONTAP volume offline. So, delete will work if volume is offline.","commit_id":"a71054e093054a2ba573594151766fccc9b48d57"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"622af8d4a54ac9ff799b9114253a334fe1e44924","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"08044107_ada671e4","in_reply_to":"95de287f_754a0c8a","updated":"2023-10-30 13:35:51.000000000","message":"one job is stopped and status is queried, there is no job reported by ONTAP. This means there is only start-stop and not start-pause-resume-stop. Thus no dependency on deletion of share as there is non pending jobs.\n\n@Felipe,\nplease share your outlook on this.","commit_id":"a71054e093054a2ba573594151766fccc9b48d57"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"e05c3a166b0f68b8706fbed0b0141c537eb5654f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"b46f22b6_01bb766f","updated":"2023-11-22 12:26:19.000000000","message":"Hi, Kiran! Could you please take a look at Jayaanand\u0027s comment? https://review.opendev.org/c/openstack/manila/+/888927/comment/97297b03_4b3f443b/","commit_id":"8709e877c7f24c545b13ce3cbeadf99541a85614"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"9f65cc81fac2b453d5ef076789d96f1ffeb66236","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4cd3b235_da8c679a","updated":"2023-11-16 05:54:33.000000000","message":"LGTM","commit_id":"8709e877c7f24c545b13ce3cbeadf99541a85614"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"43589e14efb4db72d1550c9c2bee697212ed8d26","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4e7daf67_05384c91","updated":"2023-11-16 05:54:10.000000000","message":"LGTM","commit_id":"8709e877c7f24c545b13ce3cbeadf99541a85614"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"b6821f84e6511b8d79aa6066af2419adf53f7ef4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8922d96b_e1117bd0","updated":"2023-11-07 14:45:24.000000000","message":"Please re-trigger the netapp CI","commit_id":"8709e877c7f24c545b13ce3cbeadf99541a85614"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"317190c77586e7f5c38fa5c281dc9d00ec32d5c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"95622393_01676ca3","updated":"2023-11-08 09:49:07.000000000","message":"run-NetApp CI","commit_id":"8709e877c7f24c545b13ce3cbeadf99541a85614"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"96d759d2ac7d7d8f8e492f6af5965cbfba1056ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"cc9ed81c_61a6e674","updated":"2023-11-08 04:51:07.000000000","message":"run-NetApp CI","commit_id":"8709e877c7f24c545b13ce3cbeadf99541a85614"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"87a757b1e78f0a73984a6aa7785699ef85419a40","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"103bbe56_77060644","in_reply_to":"47aefb7c_e5adf756","updated":"2023-11-08 04:53:25.000000000","message":"I mean to say, Just run the NetApp CI by adding \"run-NetApp C\" comment to patch. I just trigger the NetApp CI.","commit_id":"8709e877c7f24c545b13ce3cbeadf99541a85614"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f871c219a7a70e2d57a3ecafa9c8ddc10112b8c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"47aefb7c_e5adf756","in_reply_to":"8922d96b_e1117bd0","updated":"2023-11-07 18:44:08.000000000","message":"Hi Gireesh; \n\nunsure about the context of this comment; are you asking anyone in particular?\n\nThird party CI systems are summonable; and anyone can do this by commenting with the CI\u0027s trigger. Since you\u0027ll be maintaining the NetApp driver and CI system, I wanted to share something that might be useful... we\u0027ve a wiki page where CI systems reporting against OpenStack gerrit are documented: https://wiki.openstack.org/wiki/ThirdPartySystems\n\n\nif you click on the NetApp link from that page, you\u0027ll see the trigger word for the CI system.. you\u0027ll need to type that out as a comment here; please feel free to correct that page to match information per your CI system","commit_id":"8709e877c7f24c545b13ce3cbeadf99541a85614"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"25f1fec8dd72b256dd255af1d57568dd0c322905","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"03723a24_176099e2","updated":"2023-12-04 13:21:33.000000000","message":"Haixin/Goutham,\nwe need another +2 to merge","commit_id":"54c4f91aa11b05f815690d9438c5fc9bd4e5386c"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f0abc189d3a252af7c943daae4b84142c3824d15","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f207c495_75343b38","updated":"2023-11-23 19:39:30.000000000","message":"LGTM overall, have only one question inline","commit_id":"54c4f91aa11b05f815690d9438c5fc9bd4e5386c"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"fbd889d721012e0b4f9d4a6e47d05c5276e68641","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"265889de_e23039b3","updated":"2023-11-22 14:24:27.000000000","message":"Thank you! Kiran for addressing my comment.","commit_id":"54c4f91aa11b05f815690d9438c5fc9bd4e5386c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"59fe38c2f8ce4c48cfed8df7dcd9460f9dfc42fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"881cb2be_9d0ee2a2","updated":"2023-11-22 16:05:51.000000000","message":"recheck","commit_id":"54c4f91aa11b05f815690d9438c5fc9bd4e5386c"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"16c496f4a718217af0f8865a170571baeba1d9ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"cda7fdeb_80db5c2b","updated":"2023-12-05 01:50:00.000000000","message":"thanks for your change, let us merge this.","commit_id":"54c4f91aa11b05f815690d9438c5fc9bd4e5386c"}],"manila/share/drivers/netapp/dataontap/client/client_cmode.py":[{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"ebc1929d0a7d050e1439c87cb93611d228db46a5","unresolved":true,"context_lines":[{"line_number":2996,"context_line":"            raise"},{"line_number":2997,"context_line":""},{"line_number":2998,"context_line":"    @na_utils.trace"},{"line_number":2999,"context_line":"    def volume_clone_split_status(self, volume_name):"},{"line_number":3000,"context_line":"        \"\"\"Status of splitting a clone from its parent.\"\"\""},{"line_number":3001,"context_line":"        try:"},{"line_number":3002,"context_line":"            api_args \u003d {\u0027volume\u0027: volume_name}"},{"line_number":3003,"context_line":"            result \u003d self.send_request(\u0027volume-clone-split-status\u0027, api_args)"},{"line_number":3004,"context_line":"        except netapp_api.NaApiError:"},{"line_number":3005,"context_line":"            # any exception in status is considered either clone split is"},{"line_number":3006,"context_line":"            # completed or not triggred on this volume"},{"line_number":3007,"context_line":"            return 100"},{"line_number":3008,"context_line":""},{"line_number":3009,"context_line":"        clone_split_details \u003d result.get_child_by_name("},{"line_number":3010,"context_line":"            \u0027clone-split-details\u0027) or netapp_api.NaElement(\u0027none\u0027)"},{"line_number":3011,"context_line":"        for clone_split_details_info in clone_split_details.get_children():"},{"line_number":3012,"context_line":"            percentage \u003d clone_split_details_info.get_child_content("},{"line_number":3013,"context_line":"                \u0027block-percentage-complete\u0027)"},{"line_number":3014,"context_line":"            try:"},{"line_number":3015,"context_line":"                return int(percentage)"},{"line_number":3016,"context_line":"            except Exception:"},{"line_number":3017,"context_line":"                return 100"},{"line_number":3018,"context_line":"        return 100"},{"line_number":3019,"context_line":""},{"line_number":3020,"context_line":"    @na_utils.trace"},{"line_number":3021,"context_line":"    def volume_clone_split_stop(self, volume_name):"},{"line_number":3022,"context_line":"        \"\"\"Stop splitting a clone from its parent.\"\"\""},{"line_number":3023,"context_line":"        try:"},{"line_number":3024,"context_line":"            api_args \u003d {\u0027volume\u0027: volume_name}"},{"line_number":3025,"context_line":"            self.send_request(\u0027volume-clone-split-stop\u0027, api_args)"},{"line_number":3026,"context_line":"        except netapp_api.NaApiError as e:"},{"line_number":3027,"context_line":"            if e.code in (netapp_api.EVOLUMEDOESNOTEXIST,"},{"line_number":3028,"context_line":"                          netapp_api.EVOLNOTCLONE,"},{"line_number":3029,"context_line":"                          netapp_api.EVOLOPNOTUNDERWAY):"},{"line_number":3030,"context_line":"                return"},{"line_number":3031,"context_line":"            raise"},{"line_number":3032,"context_line":""},{"line_number":3033,"context_line":"    @na_utils.trace"},{"line_number":3034,"context_line":"    def check_volume_clone_split_completed(self, volume_name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a07a61c_b8a24284","line":3031,"range":{"start_line":2999,"start_character":4,"end_line":3031,"end_character":17},"updated":"2023-07-20 15:18:02.000000000","message":"As a new NetApp practice, all new calls for ZAPI must be added to REST. Please, add them to the REST client too.","commit_id":"3e05b9567b2b379b8f4328c688259e12a0fb4580"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"ad3bc946a8a717eb70766a94d4ba843ee5bbcb91","unresolved":false,"context_lines":[{"line_number":2996,"context_line":"            raise"},{"line_number":2997,"context_line":""},{"line_number":2998,"context_line":"    @na_utils.trace"},{"line_number":2999,"context_line":"    def volume_clone_split_status(self, volume_name):"},{"line_number":3000,"context_line":"        \"\"\"Status of splitting a clone from its parent.\"\"\""},{"line_number":3001,"context_line":"        try:"},{"line_number":3002,"context_line":"            api_args \u003d {\u0027volume\u0027: volume_name}"},{"line_number":3003,"context_line":"            result \u003d self.send_request(\u0027volume-clone-split-status\u0027, api_args)"},{"line_number":3004,"context_line":"        except netapp_api.NaApiError:"},{"line_number":3005,"context_line":"            # any exception in status is considered either clone split is"},{"line_number":3006,"context_line":"            # completed or not triggred on this volume"},{"line_number":3007,"context_line":"            return 100"},{"line_number":3008,"context_line":""},{"line_number":3009,"context_line":"        clone_split_details \u003d result.get_child_by_name("},{"line_number":3010,"context_line":"            \u0027clone-split-details\u0027) or netapp_api.NaElement(\u0027none\u0027)"},{"line_number":3011,"context_line":"        for clone_split_details_info in clone_split_details.get_children():"},{"line_number":3012,"context_line":"            percentage \u003d clone_split_details_info.get_child_content("},{"line_number":3013,"context_line":"                \u0027block-percentage-complete\u0027)"},{"line_number":3014,"context_line":"            try:"},{"line_number":3015,"context_line":"                return int(percentage)"},{"line_number":3016,"context_line":"            except Exception:"},{"line_number":3017,"context_line":"                return 100"},{"line_number":3018,"context_line":"        return 100"},{"line_number":3019,"context_line":""},{"line_number":3020,"context_line":"    @na_utils.trace"},{"line_number":3021,"context_line":"    def volume_clone_split_stop(self, volume_name):"},{"line_number":3022,"context_line":"        \"\"\"Stop splitting a clone from its parent.\"\"\""},{"line_number":3023,"context_line":"        try:"},{"line_number":3024,"context_line":"            api_args \u003d {\u0027volume\u0027: volume_name}"},{"line_number":3025,"context_line":"            self.send_request(\u0027volume-clone-split-stop\u0027, api_args)"},{"line_number":3026,"context_line":"        except netapp_api.NaApiError as e:"},{"line_number":3027,"context_line":"            if e.code in (netapp_api.EVOLUMEDOESNOTEXIST,"},{"line_number":3028,"context_line":"                          netapp_api.EVOLNOTCLONE,"},{"line_number":3029,"context_line":"                          netapp_api.EVOLOPNOTUNDERWAY):"},{"line_number":3030,"context_line":"                return"},{"line_number":3031,"context_line":"            raise"},{"line_number":3032,"context_line":""},{"line_number":3033,"context_line":"    @na_utils.trace"},{"line_number":3034,"context_line":"    def check_volume_clone_split_completed(self, volume_name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"47aed275_3cd5b659","line":3031,"range":{"start_line":2999,"start_character":4,"end_line":3031,"end_character":17},"in_reply_to":"7a07a61c_b8a24284","updated":"2023-07-21 13:34:09.000000000","message":"Done","commit_id":"3e05b9567b2b379b8f4328c688259e12a0fb4580"}],"manila/share/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"95eac0f632e9b0f00a76ae29cdf59f46c0915155","unresolved":true,"context_lines":[{"line_number":1974,"context_line":"        body \u003d {"},{"line_number":1975,"context_line":"            \u0027clone.split_initiated\u0027: \u0027false\u0027,"},{"line_number":1976,"context_line":"        }"},{"line_number":1977,"context_line":"        self.send_request(f\u0027/storage/volumes/{uuid}\u0027, \u0027patch\u0027,"},{"line_number":1978,"context_line":"                          body\u003dbody, wait_on_accepted\u003dFalse)"},{"line_number":1979,"context_line":""},{"line_number":1980,"context_line":"    @na_utils.trace"},{"line_number":1981,"context_line":"    def delete_snapshot(self, volume_name, snapshot_name, ignore_owners\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":6,"id":"f8ab70de_65667867","line":1978,"range":{"start_line":1977,"start_character":0,"end_line":1978,"end_character":60},"updated":"2023-10-27 19:41:58.000000000","message":"unlike ZAPI, there\u0027s no error handling here.. is that alright? If errors surface, they\u0027ll bubble up, and the share will transition from \"deleting\" to \"error_deleting\".","commit_id":"a71054e093054a2ba573594151766fccc9b48d57"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"622af8d4a54ac9ff799b9114253a334fe1e44924","unresolved":false,"context_lines":[{"line_number":1974,"context_line":"        body \u003d {"},{"line_number":1975,"context_line":"            \u0027clone.split_initiated\u0027: \u0027false\u0027,"},{"line_number":1976,"context_line":"        }"},{"line_number":1977,"context_line":"        self.send_request(f\u0027/storage/volumes/{uuid}\u0027, \u0027patch\u0027,"},{"line_number":1978,"context_line":"                          body\u003dbody, wait_on_accepted\u003dFalse)"},{"line_number":1979,"context_line":""},{"line_number":1980,"context_line":"    @na_utils.trace"},{"line_number":1981,"context_line":"    def delete_snapshot(self, volume_name, snapshot_name, ignore_owners\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":6,"id":"d51038ba_92b5d18f","line":1978,"range":{"start_line":1977,"start_character":0,"end_line":1978,"end_character":60},"in_reply_to":"f8ab70de_65667867","updated":"2023-10-30 13:35:51.000000000","message":"updated.","commit_id":"a71054e093054a2ba573594151766fccc9b48d57"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"2f24de22ad59499e5f4aff9174f25113692480be","unresolved":true,"context_lines":[{"line_number":1960,"context_line":""},{"line_number":1961,"context_line":"        res \u003d self.send_request(\u0027/storage/volumes/\u0027, \u0027get\u0027, query\u003dquery)"},{"line_number":1962,"context_line":""},{"line_number":1963,"context_line":"        percent \u003d res.get(\u0027clone.split_complete_percent\u0027)"},{"line_number":1964,"context_line":"        if not percent:"},{"line_number":1965,"context_line":"            return 100"},{"line_number":1966,"context_line":"        return percent"}],"source_content_type":"text/x-python","patch_set":7,"id":"97297b03_4b3f443b","line":1963,"updated":"2023-11-09 17:09:46.000000000","message":"/storage/volumes can throw error. can you please handle https://library.netapp.com/ecmdocs/ECMLP2856304/html/index.html#/storage/volume_collection_get","commit_id":"8709e877c7f24c545b13ce3cbeadf99541a85614"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"fff6f1c7f0c06d3c3ca5c85e4fa8e6acd423386e","unresolved":false,"context_lines":[{"line_number":1960,"context_line":""},{"line_number":1961,"context_line":"        res \u003d self.send_request(\u0027/storage/volumes/\u0027, \u0027get\u0027, query\u003dquery)"},{"line_number":1962,"context_line":""},{"line_number":1963,"context_line":"        percent \u003d res.get(\u0027clone.split_complete_percent\u0027)"},{"line_number":1964,"context_line":"        if not percent:"},{"line_number":1965,"context_line":"            return 100"},{"line_number":1966,"context_line":"        return percent"}],"source_content_type":"text/x-python","patch_set":7,"id":"5b6c4756_6eaf9d4b","line":1963,"in_reply_to":"97297b03_4b3f443b","updated":"2023-11-22 12:52:14.000000000","message":"fixed","commit_id":"8709e877c7f24c545b13ce3cbeadf99541a85614"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"7d5edf0d5418b656d37a9b9519daccd0564723fb","unresolved":true,"context_lines":[{"line_number":1975,"context_line":"            \u0027clone.split_initiated\u0027: \u0027false\u0027,"},{"line_number":1976,"context_line":"        }"},{"line_number":1977,"context_line":"        try:"},{"line_number":1978,"context_line":"            self.send_request(f\u0027/storage/volumes/{uuid}\u0027, \u0027patch\u0027,"},{"line_number":1979,"context_line":"                              body\u003dbody, wait_on_accepted\u003dFalse)"},{"line_number":1980,"context_line":"        except netapp_api.NaApiError as e:"},{"line_number":1981,"context_line":"            if e.code in (netapp_api.EVOLUMEDOESNOTEXIST,"}],"source_content_type":"text/x-python","patch_set":7,"id":"2445dc21_f8e5a77d","line":1978,"updated":"2023-11-09 17:27:45.000000000","message":"NIT: Code looks good for me.If possible could you please move rest end point to rest_endpoints.py file.","commit_id":"8709e877c7f24c545b13ce3cbeadf99541a85614"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a3d4721ea233b89f83984a8c98df389b1d3c16af","unresolved":true,"context_lines":[{"line_number":1975,"context_line":"            \u0027clone.split_initiated\u0027: \u0027false\u0027,"},{"line_number":1976,"context_line":"        }"},{"line_number":1977,"context_line":"        try:"},{"line_number":1978,"context_line":"            self.send_request(f\u0027/storage/volumes/{uuid}\u0027, \u0027patch\u0027,"},{"line_number":1979,"context_line":"                              body\u003dbody, wait_on_accepted\u003dFalse)"},{"line_number":1980,"context_line":"        except netapp_api.NaApiError as e:"},{"line_number":1981,"context_line":"            if e.code in (netapp_api.EVOLUMEDOESNOTEXIST,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bb67f764_c12a38c6","line":1978,"in_reply_to":"2445dc21_f8e5a77d","updated":"2023-11-10 15:25:33.000000000","message":"No its not needed. There client_cmode_rest.py handles REST API directly. The rest_endpoints.py I believe is not used by any API introduction after 2021.","commit_id":"8709e877c7f24c545b13ce3cbeadf99541a85614"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"741fc42a8cc685e7e6a0bbddd56e7d9056346f93","unresolved":false,"context_lines":[{"line_number":1975,"context_line":"            \u0027clone.split_initiated\u0027: \u0027false\u0027,"},{"line_number":1976,"context_line":"        }"},{"line_number":1977,"context_line":"        try:"},{"line_number":1978,"context_line":"            self.send_request(f\u0027/storage/volumes/{uuid}\u0027, \u0027patch\u0027,"},{"line_number":1979,"context_line":"                              body\u003dbody, wait_on_accepted\u003dFalse)"},{"line_number":1980,"context_line":"        except netapp_api.NaApiError as e:"},{"line_number":1981,"context_line":"            if e.code in (netapp_api.EVOLUMEDOESNOTEXIST,"}],"source_content_type":"text/x-python","patch_set":7,"id":"e5ef535f_5d400fe6","line":1978,"in_reply_to":"bb67f764_c12a38c6","updated":"2023-11-16 08:42:14.000000000","message":"Ok, fine. then all looks good for me","commit_id":"8709e877c7f24c545b13ce3cbeadf99541a85614"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f0abc189d3a252af7c943daae4b84142c3824d15","unresolved":true,"context_lines":[{"line_number":1967,"context_line":"        except netapp_api.NaApiError:"},{"line_number":1968,"context_line":"            msg \u003d (\"Failed to get clone split status for volume %s \")"},{"line_number":1969,"context_line":"            LOG.warning(msg, volume_name)"},{"line_number":1970,"context_line":"            return 100"},{"line_number":1971,"context_line":""},{"line_number":1972,"context_line":"    @na_utils.trace"},{"line_number":1973,"context_line":"    def volume_clone_split_stop(self, volume_name):"}],"source_content_type":"text/x-python","patch_set":8,"id":"a373547b_6115765d","line":1970,"range":{"start_line":1970,"start_character":12,"end_line":1970,"end_character":22},"updated":"2023-11-23 19:39:30.000000000","message":"should we actually return 100 when it failed on get volumes?","commit_id":"54c4f91aa11b05f815690d9438c5fc9bd4e5386c"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"110246d4474d8c26d90c9b2415166d0d7d863583","unresolved":false,"context_lines":[{"line_number":1967,"context_line":"        except netapp_api.NaApiError:"},{"line_number":1968,"context_line":"            msg \u003d (\"Failed to get clone split status for volume %s \")"},{"line_number":1969,"context_line":"            LOG.warning(msg, volume_name)"},{"line_number":1970,"context_line":"            return 100"},{"line_number":1971,"context_line":""},{"line_number":1972,"context_line":"    @na_utils.trace"},{"line_number":1973,"context_line":"    def volume_clone_split_stop(self, volume_name):"}],"source_content_type":"text/x-python","patch_set":8,"id":"98b7022a_c5f66059","line":1970,"range":{"start_line":1970,"start_character":12,"end_line":1970,"end_character":22},"in_reply_to":"a373547b_6115765d","updated":"2023-11-24 13:09:43.000000000","message":"ideally we wont get in situation where we failed to get volumes. But API return exception in other cases as well e.g. if clone split is not needed. For safe side, we return 100. Any value between 0-99 indicates ongoing clone split.","commit_id":"54c4f91aa11b05f815690d9438c5fc9bd4e5386c"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_base.py":[{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"ebc1929d0a7d050e1439c87cb93611d228db46a5","unresolved":true,"context_lines":[{"line_number":1585,"context_line":"        self._delete_fpolicy_for_share(share, vserver, vserver_client)"},{"line_number":1586,"context_line":""},{"line_number":1587,"context_line":"        if self._share_exists(share_name, vserver_client):"},{"line_number":1588,"context_line":"            if vserver_client.volume_clone_split_status(share_name) !\u003d 100:"},{"line_number":1589,"context_line":"                vserver_client.volume_clone_split_stop(share_name)"},{"line_number":1590,"context_line":"            if remove_export:"},{"line_number":1591,"context_line":"                self._remove_export(share, vserver_client)"},{"line_number":1592,"context_line":"            self._deallocate_container(share_name, vserver_client)"}],"source_content_type":"text/x-python","patch_set":1,"id":"4668d49a_ed5d3f2d","line":1589,"range":{"start_line":1588,"start_character":12,"end_line":1589,"end_character":66},"updated":"2023-07-20 15:18:02.000000000","message":"the stop job operation can take same time and the delete might fail if the time is not enough for calling the deletion. I mean, this solution cannot work in some scenarios, am I wrong ?","commit_id":"3e05b9567b2b379b8f4328c688259e12a0fb4580"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"0ce5a90e5b6fddf3ae0a47c4eb11892dd4d31edc","unresolved":true,"context_lines":[{"line_number":1585,"context_line":"        self._delete_fpolicy_for_share(share, vserver, vserver_client)"},{"line_number":1586,"context_line":""},{"line_number":1587,"context_line":"        if self._share_exists(share_name, vserver_client):"},{"line_number":1588,"context_line":"            if vserver_client.volume_clone_split_status(share_name) !\u003d 100:"},{"line_number":1589,"context_line":"                vserver_client.volume_clone_split_stop(share_name)"},{"line_number":1590,"context_line":"            if remove_export:"},{"line_number":1591,"context_line":"                self._remove_export(share, vserver_client)"},{"line_number":1592,"context_line":"            self._deallocate_container(share_name, vserver_client)"}],"source_content_type":"text/x-python","patch_set":1,"id":"404dde46_533508ec","line":1589,"range":{"start_line":1588,"start_character":12,"end_line":1589,"end_character":66},"in_reply_to":"05a6032f_c9622056","updated":"2023-07-28 10:40:13.000000000","message":"if split is ongoing, its get cancelled without any delay. During testing, I have observed that ongoing split is stopped after volume_clone_split_stop() is called and hence call of remove_export succeeded which was without stopping clone split used to trigger unmount failure. \nNetApp folks might have more detail about it.","commit_id":"3e05b9567b2b379b8f4328c688259e12a0fb4580"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7f8812e66e9c60f940c5a9d7678f346dc97f17a2","unresolved":false,"context_lines":[{"line_number":1585,"context_line":"        self._delete_fpolicy_for_share(share, vserver, vserver_client)"},{"line_number":1586,"context_line":""},{"line_number":1587,"context_line":"        if self._share_exists(share_name, vserver_client):"},{"line_number":1588,"context_line":"            if vserver_client.volume_clone_split_status(share_name) !\u003d 100:"},{"line_number":1589,"context_line":"                vserver_client.volume_clone_split_stop(share_name)"},{"line_number":1590,"context_line":"            if remove_export:"},{"line_number":1591,"context_line":"                self._remove_export(share, vserver_client)"},{"line_number":1592,"context_line":"            self._deallocate_container(share_name, vserver_client)"}],"source_content_type":"text/x-python","patch_set":1,"id":"6996193a_9064d901","line":1589,"range":{"start_line":1588,"start_character":12,"end_line":1589,"end_character":66},"in_reply_to":"404dde46_533508ec","updated":"2023-08-07 17:56:07.000000000","message":"ack; felipe, lets rethink this if your testing shows otherwise.. else LGTM","commit_id":"3e05b9567b2b379b8f4328c688259e12a0fb4580"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"ad3bc946a8a717eb70766a94d4ba843ee5bbcb91","unresolved":true,"context_lines":[{"line_number":1585,"context_line":"        self._delete_fpolicy_for_share(share, vserver, vserver_client)"},{"line_number":1586,"context_line":""},{"line_number":1587,"context_line":"        if self._share_exists(share_name, vserver_client):"},{"line_number":1588,"context_line":"            if vserver_client.volume_clone_split_status(share_name) !\u003d 100:"},{"line_number":1589,"context_line":"                vserver_client.volume_clone_split_stop(share_name)"},{"line_number":1590,"context_line":"            if remove_export:"},{"line_number":1591,"context_line":"                self._remove_export(share, vserver_client)"},{"line_number":1592,"context_line":"            self._deallocate_container(share_name, vserver_client)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c0525aa7_03f3b9b2","line":1589,"range":{"start_line":1588,"start_character":12,"end_line":1589,"end_character":66},"in_reply_to":"4668d49a_ed5d3f2d","updated":"2023-07-21 13:34:09.000000000","message":"There are multiple issues w.r.t handling deletion of share created from snapshot.\nEither volume is busy or clone split is ongoing causes failure in unmount. As far as I tested, unmount failure issue is resolved with stopping clone split job. Tested as - create share from snapshot, as soon as it will be reported available in manila, delete the share. During testing, I found percentage of clone split status reported between 10-60 % if clone split is indeed ongoing.","commit_id":"3e05b9567b2b379b8f4328c688259e12a0fb4580"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"2c1642ca63527fb40cf61d8fde69541a3c93977a","unresolved":true,"context_lines":[{"line_number":1585,"context_line":"        self._delete_fpolicy_for_share(share, vserver, vserver_client)"},{"line_number":1586,"context_line":""},{"line_number":1587,"context_line":"        if self._share_exists(share_name, vserver_client):"},{"line_number":1588,"context_line":"            if vserver_client.volume_clone_split_status(share_name) !\u003d 100:"},{"line_number":1589,"context_line":"                vserver_client.volume_clone_split_stop(share_name)"},{"line_number":1590,"context_line":"            if remove_export:"},{"line_number":1591,"context_line":"                self._remove_export(share, vserver_client)"},{"line_number":1592,"context_line":"            self._deallocate_container(share_name, vserver_client)"}],"source_content_type":"text/x-python","patch_set":1,"id":"05a6032f_c9622056","line":1589,"range":{"start_line":1588,"start_character":12,"end_line":1589,"end_character":66},"in_reply_to":"78a2199f_5c2e7325","updated":"2023-07-27 16:40:43.000000000","message":"maybe we add a waiter to ensure that the split is canceled? How long does the cancelation typically take?","commit_id":"3e05b9567b2b379b8f4328c688259e12a0fb4580"},{"author":{"_account_id":33038,"name":"Chuan Miao","email":"chuan137@gmail.com","username":"chuan137"},"change_message_id":"5aa9918390ec647814eedb09b515240c55ea2add","unresolved":true,"context_lines":[{"line_number":1585,"context_line":"        self._delete_fpolicy_for_share(share, vserver, vserver_client)"},{"line_number":1586,"context_line":""},{"line_number":1587,"context_line":"        if self._share_exists(share_name, vserver_client):"},{"line_number":1588,"context_line":"            if vserver_client.volume_clone_split_status(share_name) !\u003d 100:"},{"line_number":1589,"context_line":"                vserver_client.volume_clone_split_stop(share_name)"},{"line_number":1590,"context_line":"            if remove_export:"},{"line_number":1591,"context_line":"                self._remove_export(share, vserver_client)"},{"line_number":1592,"context_line":"            self._deallocate_container(share_name, vserver_client)"}],"source_content_type":"text/x-python","patch_set":1,"id":"78a2199f_5c2e7325","line":1589,"range":{"start_line":1588,"start_character":12,"end_line":1589,"end_character":66},"in_reply_to":"c0525aa7_03f3b9b2","updated":"2023-07-22 09:08:30.000000000","message":"\u003e the stop job operation can take same time and the delete might fail if the time is not enough for calling the deletion. I mean, this solution cannot work in some scenarios, am I wrong ?\n\nHi Felipe, thanks for the feedback. You are right, it\u0027s possible. We haven\u0027t hit the problem in CI. Maybe because there are a few more steps before destroy the volume, like removing the export policies, unmount and offline volume. The clone split command can be finished during those operations.","commit_id":"3e05b9567b2b379b8f4328c688259e12a0fb4580"}]}
