)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"4db6d78d817f5ee55d394204ed099cc90e304dad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d03c0d4a_2122b814","updated":"2023-02-10 18:22:54.000000000","message":"Thanks for the patch, Nahim. I\u0027ve pointed some small nit things. The rest LGTM.","commit_id":"53bae1e5bb9c5bdcccd14f00013d1be0f9337101"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"18e5dc250b2df740f46805156353b5486a6ae128","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"5481bb20_63ecde34","updated":"2023-02-16 22:31:27.000000000","message":"Thank you for working on this change - Have a couple of comments inline. Please take a look at them.\nI have also noticed that there are various corner cases not being covered by unit tests on this change. Could you please take a look at them?","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"7a3a6387_bf44b61d","updated":"2023-02-17 01:41:14.000000000","message":"Thanks Nahim and all. See my comments.","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2fe1f08a_f76c2bc2","updated":"2023-02-22 18:35:39.000000000","message":"Hello, everyone. Thank you so much for the reviews. I addressed your comments in the last patch.","commit_id":"24000c9432a08119e45b9d754bd200541aee9f1d"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"8f93549d7a22ad38f985acad99cce6ab65def00a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"b4b8e30b_7eeb37d3","updated":"2023-02-23 18:07:08.000000000","message":"Change looks good - Coverage is still missing for the cmode_rest file overall. Would be good to have that too even if in a follow-up.","commit_id":"b0a1ad978592f537c7b0800011edcfb01b7bbd73"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"39c3ef5042701778229e40aeeac7a70d64ec854f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8a8f1537_510e8ee5","updated":"2023-02-23 17:21:39.000000000","message":"NetApp CI results for REST API - it was executed on the patch that is on the top of the stack (downstream), containing all the code: \n\n- manila-tempest-plugin-ontap-dhss-rest https://netappopenstacklogserver.s3.us-west-1.amazonaws.com/index.html#logs/99/1699/35/downstream-experimental/manila-tempest-plugin-ontap-dhss-rest/715b676/ : SUCCESS in 1h 59m 09s\n\n- manila-tempest-plugin-ontap-no-dhss-rest https://netappopenstacklogserver.s3.us-west-1.amazonaws.com/index.html#logs/12/1712/1/downstream-experimental/manila-tempest-plugin-ontap-no-dhss-rest/f70dfc6/ : SUCCESS in 2h 23m 35s","commit_id":"b0a1ad978592f537c7b0800011edcfb01b7bbd73"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"9aa13076668258f3492ee4af9fdf756f1ed0f979","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"aced2c02_254cded2","updated":"2023-02-23 17:27:59.000000000","message":"Thanks Nahim. LGTM.","commit_id":"b0a1ad978592f537c7b0800011edcfb01b7bbd73"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"b14300a9f07cc437326d7ad7e195db2296a3ef93","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"7de8884f_a8cd60ae","updated":"2023-02-23 11:54:37.000000000","message":"Thanks, Felipe. The comments were addressed in the last patch.","commit_id":"b0a1ad978592f537c7b0800011edcfb01b7bbd73"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"96df2335b41e22df7d431bb073fde4a4c36542d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"942aee68_7cbb8534","in_reply_to":"8a8f1537_510e8ee5","updated":"2023-02-23 20:23:10.000000000","message":"These jobs aren\u0027t testing share and server migration... Have you tested those features as well, maybe manually?","commit_id":"b0a1ad978592f537c7b0800011edcfb01b7bbd73"}],"manila/share/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"4db6d78d817f5ee55d394204ed099cc90e304dad","unresolved":true,"context_lines":[{"line_number":2783,"context_line":"        try:"},{"line_number":2784,"context_line":"            self.send_request(\u0027/snapmirror/relationships/\u0027, \u0027post\u0027, body\u003dbody)"},{"line_number":2785,"context_line":"        except netapp_api.api.NaApiError as e:"},{"line_number":2786,"context_line":"            if e.code !\u003d netapp_api.REST_ERELATION_EXISTS:"},{"line_number":2787,"context_line":"                raise"},{"line_number":2788,"context_line":""},{"line_number":2789,"context_line":"    def _set_snapmirror_state(self, state, source_path, destination_path,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fbc257cd_1f540c9b","line":2786,"updated":"2023-02-10 18:22:54.000000000","message":"nit: Log message for mapped error code will help in future debugs.","commit_id":"53bae1e5bb9c5bdcccd14f00013d1be0f9337101"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":2783,"context_line":"        try:"},{"line_number":2784,"context_line":"            self.send_request(\u0027/snapmirror/relationships/\u0027, \u0027post\u0027, body\u003dbody)"},{"line_number":2785,"context_line":"        except netapp_api.api.NaApiError as e:"},{"line_number":2786,"context_line":"            if e.code !\u003d netapp_api.REST_ERELATION_EXISTS:"},{"line_number":2787,"context_line":"                raise"},{"line_number":2788,"context_line":""},{"line_number":2789,"context_line":"    def _set_snapmirror_state(self, state, source_path, destination_path,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3cbc33b8_5ec824c7","line":2786,"in_reply_to":"fbc257cd_1f540c9b","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"53bae1e5bb9c5bdcccd14f00013d1be0f9337101"},{"author":{"_account_id":35677,"name":"Thiago José de Andrade Alvoravel","display_name":"Thiago Alvoravel","email":"thiago.andrade@fit-tecnologia.org.br","username":"thiagoalvoravel"},"change_message_id":"4db6d78d817f5ee55d394204ed099cc90e304dad","unresolved":true,"context_lines":[{"line_number":2809,"context_line":""},{"line_number":2810,"context_line":"        uuid \u003d snapmirror[0][\u0027uuid\u0027]"},{"line_number":2811,"context_line":"        body \u003d {\u0027state\u0027: state}"},{"line_number":2812,"context_line":"        result \u003d self.send_request(\u0027/snapmirror/relationships/\u0027 + uuid,"},{"line_number":2813,"context_line":"                                   \u0027patch\u0027, body\u003dbody,"},{"line_number":2814,"context_line":"                                   wait_on_accepted\u003dwait_result)"},{"line_number":2815,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"0b942f9c_0c6b87f4","line":2812,"updated":"2023-02-10 18:22:54.000000000","message":"nit: Keep the pattern used self.send_request(f\u0027/snapmirror/relationships/{uuid}\u0027,","commit_id":"53bae1e5bb9c5bdcccd14f00013d1be0f9337101"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"18e5dc250b2df740f46805156353b5486a6ae128","unresolved":true,"context_lines":[{"line_number":2809,"context_line":""},{"line_number":2810,"context_line":"        uuid \u003d snapmirror[0][\u0027uuid\u0027]"},{"line_number":2811,"context_line":"        body \u003d {\u0027state\u0027: state}"},{"line_number":2812,"context_line":"        result \u003d self.send_request(\u0027/snapmirror/relationships/\u0027 + uuid,"},{"line_number":2813,"context_line":"                                   \u0027patch\u0027, body\u003dbody,"},{"line_number":2814,"context_line":"                                   wait_on_accepted\u003dwait_result)"},{"line_number":2815,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"f9a028ca_ea85203d","line":2812,"in_reply_to":"0b942f9c_0c6b87f4","updated":"2023-02-16 22:31:27.000000000","message":"+1 - f\u0027strings\u0027 for the win!","commit_id":"53bae1e5bb9c5bdcccd14f00013d1be0f9337101"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":2809,"context_line":""},{"line_number":2810,"context_line":"        uuid \u003d snapmirror[0][\u0027uuid\u0027]"},{"line_number":2811,"context_line":"        body \u003d {\u0027state\u0027: state}"},{"line_number":2812,"context_line":"        result \u003d self.send_request(\u0027/snapmirror/relationships/\u0027 + uuid,"},{"line_number":2813,"context_line":"                                   \u0027patch\u0027, body\u003dbody,"},{"line_number":2814,"context_line":"                                   wait_on_accepted\u003dwait_result)"},{"line_number":2815,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"e06c5828_ee60dede","line":2812,"in_reply_to":"f9a028ca_ea85203d","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"53bae1e5bb9c5bdcccd14f00013d1be0f9337101"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":1882,"context_line":"        result \u003d self.send_request("},{"line_number":1883,"context_line":"            f\u0027/storage/volumes/{vol_uuid}/snapshots/\u0027, \u0027get\u0027, query\u003dquery)"},{"line_number":1884,"context_line":""},{"line_number":1885,"context_line":"        errors \u003d result.get(\u0027error\u0027)"},{"line_number":1886,"context_line":"        if errors:"},{"line_number":1887,"context_line":"            error_code \u003d errors.get(\u0027code\u0027)"},{"line_number":1888,"context_line":"            error_reason \u003d errors.get(\u0027message\u0027)"},{"line_number":1889,"context_line":"            msg \u003d _(\u0027Could not read information for snapshot %(name)s. \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"c7986cc6_9509e300","line":1886,"range":{"start_line":1885,"start_character":8,"end_line":1886,"end_character":18},"updated":"2023-02-17 01:41:14.000000000","message":"This code is not doing what it should do. It should have the same behavior of ZAPI.\nFirst, the \"result\" never contains \"error\" key, since if an error happened, API layer would raise an exception.","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":1882,"context_line":"        result \u003d self.send_request("},{"line_number":1883,"context_line":"            f\u0027/storage/volumes/{vol_uuid}/snapshots/\u0027, \u0027get\u0027, query\u003dquery)"},{"line_number":1884,"context_line":""},{"line_number":1885,"context_line":"        errors \u003d result.get(\u0027error\u0027)"},{"line_number":1886,"context_line":"        if errors:"},{"line_number":1887,"context_line":"            error_code \u003d errors.get(\u0027code\u0027)"},{"line_number":1888,"context_line":"            error_reason \u003d errors.get(\u0027message\u0027)"},{"line_number":1889,"context_line":"            msg \u003d _(\u0027Could not read information for snapshot %(name)s. \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"69688557_2ce99fd9","line":1886,"range":{"start_line":1885,"start_character":8,"end_line":1886,"end_character":18},"in_reply_to":"c7986cc6_9509e300","updated":"2023-02-22 18:35:39.000000000","message":"Ack","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":1893,"context_line":"                \u0027code\u0027: error_code,"},{"line_number":1894,"context_line":"                \u0027reason\u0027: error_reason"},{"line_number":1895,"context_line":"            }"},{"line_number":1896,"context_line":"            if error_code \u003d\u003d netapp_api.api.ESNAPSHOTNOTALLOWED:"},{"line_number":1897,"context_line":"                raise exception.SnapshotUnavailable(msg % msg_args)"},{"line_number":1898,"context_line":"            else:"},{"line_number":1899,"context_line":"                raise exception.NetAppException(msg % msg_args)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3d3f8fa2_67bb7296","line":1896,"range":{"start_line":1896,"start_character":44,"end_line":1896,"end_character":63},"updated":"2023-02-17 01:41:14.000000000","message":"it is zapi code.","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":1893,"context_line":"                \u0027code\u0027: error_code,"},{"line_number":1894,"context_line":"                \u0027reason\u0027: error_reason"},{"line_number":1895,"context_line":"            }"},{"line_number":1896,"context_line":"            if error_code \u003d\u003d netapp_api.api.ESNAPSHOTNOTALLOWED:"},{"line_number":1897,"context_line":"                raise exception.SnapshotUnavailable(msg % msg_args)"},{"line_number":1898,"context_line":"            else:"},{"line_number":1899,"context_line":"                raise exception.NetAppException(msg % msg_args)"}],"source_content_type":"text/x-python","patch_set":5,"id":"65bf1143_8a111df4","line":1896,"range":{"start_line":1896,"start_character":44,"end_line":1896,"end_character":63},"in_reply_to":"3d3f8fa2_67bb7296","updated":"2023-02-22 18:35:39.000000000","message":"Ack","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":1894,"context_line":"                \u0027reason\u0027: error_reason"},{"line_number":1895,"context_line":"            }"},{"line_number":1896,"context_line":"            if error_code \u003d\u003d netapp_api.api.ESNAPSHOTNOTALLOWED:"},{"line_number":1897,"context_line":"                raise exception.SnapshotUnavailable(msg % msg_args)"},{"line_number":1898,"context_line":"            else:"},{"line_number":1899,"context_line":"                raise exception.NetAppException(msg % msg_args)"},{"line_number":1900,"context_line":""},{"line_number":1901,"context_line":"        return self._has_records(result)"},{"line_number":1902,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"02d54db0_a75c5b91","line":1899,"range":{"start_line":1897,"start_character":16,"end_line":1899,"end_character":63},"updated":"2023-02-17 01:41:14.000000000","message":"It is not doing what ZAPI does. ZAPI is returning \"SnapshotUnavailable\" when the volume is offline, so it cannot retrieve the snapshots.\n\nTo keep ZAPI compatibility, this code should:\n\n1. Check if volume is offline (add state field to \"_get_volume_by_args\")\n2. If the volume is offline, it should throw \"SnapshotUnavailable\"\n3. If volume is online, then, it should try to retrieve the snapshots as line \"1882\". This call should have a try/catch and if an error happens it should move the \"NaApiError\" to raise \"NetAppException\" (with the error code/message).","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":1894,"context_line":"                \u0027reason\u0027: error_reason"},{"line_number":1895,"context_line":"            }"},{"line_number":1896,"context_line":"            if error_code \u003d\u003d netapp_api.api.ESNAPSHOTNOTALLOWED:"},{"line_number":1897,"context_line":"                raise exception.SnapshotUnavailable(msg % msg_args)"},{"line_number":1898,"context_line":"            else:"},{"line_number":1899,"context_line":"                raise exception.NetAppException(msg % msg_args)"},{"line_number":1900,"context_line":""},{"line_number":1901,"context_line":"        return self._has_records(result)"},{"line_number":1902,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"48842c2a_930782c6","line":1899,"range":{"start_line":1897,"start_character":16,"end_line":1899,"end_character":63},"in_reply_to":"02d54db0_a75c5b91","updated":"2023-02-22 18:35:39.000000000","message":"As we discussed, I implemented (1) and (2), but (3) was not necessary because the layer does not handle this specific error type.","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"18e5dc250b2df740f46805156353b5486a6ae128","unresolved":true,"context_lines":[{"line_number":2111,"context_line":""},{"line_number":2112,"context_line":"    @na_utils.trace"},{"line_number":2113,"context_line":"    def get_snapmirrors_svm(self, source_vserver\u003dNone, dest_vserver\u003dNone,"},{"line_number":2114,"context_line":"                            desired_attributes\u003dNone):"},{"line_number":2115,"context_line":"        source_path \u003d source_vserver + \u0027:*\u0027 if source_vserver else None"},{"line_number":2116,"context_line":"        dest_path \u003d dest_vserver + \u0027:*\u0027 if dest_vserver else None"},{"line_number":2117,"context_line":"        return self.get_snapmirrors(source_path\u003dsource_path,"}],"source_content_type":"text/x-python","patch_set":5,"id":"4c756e93_9e1cd801","line":2114,"updated":"2023-02-16 22:31:27.000000000","message":"missing docstring","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":2111,"context_line":""},{"line_number":2112,"context_line":"    @na_utils.trace"},{"line_number":2113,"context_line":"    def get_snapmirrors_svm(self, source_vserver\u003dNone, dest_vserver\u003dNone,"},{"line_number":2114,"context_line":"                            desired_attributes\u003dNone):"},{"line_number":2115,"context_line":"        source_path \u003d source_vserver + \u0027:*\u0027 if source_vserver else None"},{"line_number":2116,"context_line":"        dest_path \u003d dest_vserver + \u0027:*\u0027 if dest_vserver else None"},{"line_number":2117,"context_line":"        return self.get_snapmirrors(source_path\u003dsource_path,"}],"source_content_type":"text/x-python","patch_set":5,"id":"2c82910a_3555dedb","line":2114,"in_reply_to":"4c756e93_9e1cd801","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"18e5dc250b2df740f46805156353b5486a6ae128","unresolved":true,"context_lines":[{"line_number":2502,"context_line":"                          query\u003dquery, body\u003dbody)"},{"line_number":2503,"context_line":""},{"line_number":2504,"context_line":"    @na_utils.trace"},{"line_number":2505,"context_line":"    def abort_volume_move(self, volume_name, vserver):"},{"line_number":2506,"context_line":"        volume \u003d self._get_volume_by_args(vol_name\u003dvolume_name)"},{"line_number":2507,"context_line":"        vol_uuid \u003d volume[\u0027uuid\u0027]"},{"line_number":2508,"context_line":"        self.send_request(f\u0027/storage/volumes/{vol_uuid}\u0027, \u0027patch\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"f8a963e8_3142cc0b","line":2505,"updated":"2023-02-16 22:31:27.000000000","message":"please add docstring","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":2502,"context_line":"                          query\u003dquery, body\u003dbody)"},{"line_number":2503,"context_line":""},{"line_number":2504,"context_line":"    @na_utils.trace"},{"line_number":2505,"context_line":"    def abort_volume_move(self, volume_name, vserver):"},{"line_number":2506,"context_line":"        volume \u003d self._get_volume_by_args(vol_name\u003dvolume_name)"},{"line_number":2507,"context_line":"        vol_uuid \u003d volume[\u0027uuid\u0027]"},{"line_number":2508,"context_line":"        self.send_request(f\u0027/storage/volumes/{vol_uuid}\u0027, \u0027patch\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fad463f3_51698426","line":2505,"in_reply_to":"f8a963e8_3142cc0b","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":2709,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":2710,"context_line":"        svm_id \u003d res.get(\u0027records\u0027)[0][\u0027uuid\u0027]"},{"line_number":2711,"context_line":"        try:"},{"line_number":2712,"context_line":"            self.send_request(f\u0027/api/protocols/fpolicy/{svm_id}/policies\u0027"},{"line_number":2713,"context_line":"                              f\u0027/{policy_name}\u0027, \u0027patch\u0027)"},{"line_number":2714,"context_line":"        except netapp_api.api.NaApiError as e:"},{"line_number":2715,"context_line":"            if (e.code in [netapp_api.POLICY_ALREADY_DISABLED,"}],"source_content_type":"text/x-python","patch_set":5,"id":"04e4bc40_67049724","line":2712,"range":{"start_line":2712,"start_character":30,"end_line":2712,"end_character":36},"updated":"2023-02-17 01:41:14.000000000","message":"wrong. This should not work, \"api\" is already added by api layer. It would endup with \"/api/api/..\"/","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":2709,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":2710,"context_line":"        svm_id \u003d res.get(\u0027records\u0027)[0][\u0027uuid\u0027]"},{"line_number":2711,"context_line":"        try:"},{"line_number":2712,"context_line":"            self.send_request(f\u0027/api/protocols/fpolicy/{svm_id}/policies\u0027"},{"line_number":2713,"context_line":"                              f\u0027/{policy_name}\u0027, \u0027patch\u0027)"},{"line_number":2714,"context_line":"        except netapp_api.api.NaApiError as e:"},{"line_number":2715,"context_line":"            if (e.code in [netapp_api.POLICY_ALREADY_DISABLED,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5fcd2bd7_0f707905","line":2712,"range":{"start_line":2712,"start_character":30,"end_line":2712,"end_character":36},"in_reply_to":"04e4bc40_67049724","updated":"2023-02-22 18:35:39.000000000","message":"Ack","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":2858,"context_line":"                            qos_policy_group\u003dNone,"},{"line_number":2859,"context_line":"                            adaptive_qos_policy_group\u003dNone,"},{"line_number":2860,"context_line":"                            **options):"},{"line_number":2861,"context_line":"        \"\"\"Get source aggregates\"\"\""},{"line_number":2862,"context_line":"        # NOTE(renanpiranguinho): To simulate ZAPI behaviour we need to"},{"line_number":2863,"context_line":"        # pass the parent/source aggregate to create the new share in the"},{"line_number":2864,"context_line":"        # parent/source pool and then proceed with the process of moving"}],"source_content_type":"text/x-python","patch_set":5,"id":"64e0938e_42c80901","line":2861,"range":{"start_line":2861,"start_character":8,"end_line":2861,"end_character":35},"updated":"2023-02-17 01:41:14.000000000","message":"wrong documentation, please, document what the method does.","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":2858,"context_line":"                            qos_policy_group\u003dNone,"},{"line_number":2859,"context_line":"                            adaptive_qos_policy_group\u003dNone,"},{"line_number":2860,"context_line":"                            **options):"},{"line_number":2861,"context_line":"        \"\"\"Get source aggregates\"\"\""},{"line_number":2862,"context_line":"        # NOTE(renanpiranguinho): To simulate ZAPI behaviour we need to"},{"line_number":2863,"context_line":"        # pass the parent/source aggregate to create the new share in the"},{"line_number":2864,"context_line":"        # parent/source pool and then proceed with the process of moving"}],"source_content_type":"text/x-python","patch_set":5,"id":"75943512_1cbc136e","line":2861,"range":{"start_line":2861,"start_character":8,"end_line":2861,"end_character":35},"in_reply_to":"64e0938e_42c80901","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":2859,"context_line":"                            adaptive_qos_policy_group\u003dNone,"},{"line_number":2860,"context_line":"                            **options):"},{"line_number":2861,"context_line":"        \"\"\"Get source aggregates\"\"\""},{"line_number":2862,"context_line":"        # NOTE(renanpiranguinho): To simulate ZAPI behaviour we need to"},{"line_number":2863,"context_line":"        # pass the parent/source aggregate to create the new share in the"},{"line_number":2864,"context_line":"        # parent/source pool and then proceed with the process of moving"},{"line_number":2865,"context_line":""},{"line_number":2866,"context_line":"        query \u003d {"},{"line_number":2867,"context_line":"            \u0027name\u0027: parent_volume_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"f31dd4c0_a3c83b37","line":2864,"range":{"start_line":2862,"start_character":8,"end_line":2864,"end_character":72},"updated":"2023-02-17 01:41:14.000000000","message":"It is not clear. Why is it related to this method ? From my view, it is cloning as expected. Why is it simulating ZAPI ?","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":2859,"context_line":"                            adaptive_qos_policy_group\u003dNone,"},{"line_number":2860,"context_line":"                            **options):"},{"line_number":2861,"context_line":"        \"\"\"Get source aggregates\"\"\""},{"line_number":2862,"context_line":"        # NOTE(renanpiranguinho): To simulate ZAPI behaviour we need to"},{"line_number":2863,"context_line":"        # pass the parent/source aggregate to create the new share in the"},{"line_number":2864,"context_line":"        # parent/source pool and then proceed with the process of moving"},{"line_number":2865,"context_line":""},{"line_number":2866,"context_line":"        query \u003d {"},{"line_number":2867,"context_line":"            \u0027name\u0027: parent_volume_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"234cb311_75914f18","line":2864,"range":{"start_line":2862,"start_character":8,"end_line":2864,"end_character":72},"in_reply_to":"f31dd4c0_a3c83b37","updated":"2023-02-22 18:35:39.000000000","message":"Ack","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":2870,"context_line":""},{"line_number":2871,"context_line":"        response \u003d self.send_request(\u0027/storage/volumes\u0027, \u0027get\u0027, query\u003dquery)"},{"line_number":2872,"context_line":""},{"line_number":2873,"context_line":"        res \u003d response.get(\u0027records\u0027, [])[0]"},{"line_number":2874,"context_line":"        aggregate_name \u003d [aggr.get(\u0027name\u0027) for aggr in res.get(\u0027aggregates\u0027)]"},{"line_number":2875,"context_line":""},{"line_number":2876,"context_line":"        \"\"\"Clones a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a01535c_07a1767a","line":2873,"range":{"start_line":2873,"start_character":37,"end_line":2873,"end_character":44},"updated":"2023-02-17 01:41:14.000000000","message":"getting the empty list if not set and accessing the 0. Please, you should either:\n\nres \u003d response[\u0027records\u0027][0]\n\nor if there is a possibility of volume does not exist:\n\nif not response[\u0027records\u0027]:\nraise ...\nres \u003d response[\u0027records\u0027][0]","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":2870,"context_line":""},{"line_number":2871,"context_line":"        response \u003d self.send_request(\u0027/storage/volumes\u0027, \u0027get\u0027, query\u003dquery)"},{"line_number":2872,"context_line":""},{"line_number":2873,"context_line":"        res \u003d response.get(\u0027records\u0027, [])[0]"},{"line_number":2874,"context_line":"        aggregate_name \u003d [aggr.get(\u0027name\u0027) for aggr in res.get(\u0027aggregates\u0027)]"},{"line_number":2875,"context_line":""},{"line_number":2876,"context_line":"        \"\"\"Clones a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"cc1c4a08_61ebe345","line":2873,"range":{"start_line":2873,"start_character":37,"end_line":2873,"end_character":44},"in_reply_to":"5a01535c_07a1767a","updated":"2023-02-22 18:35:39.000000000","message":"Ack","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":2873,"context_line":"        res \u003d response.get(\u0027records\u0027, [])[0]"},{"line_number":2874,"context_line":"        aggregate_name \u003d [aggr.get(\u0027name\u0027) for aggr in res.get(\u0027aggregates\u0027)]"},{"line_number":2875,"context_line":""},{"line_number":2876,"context_line":"        \"\"\"Clones a volume.\"\"\""},{"line_number":2877,"context_line":"        body \u003d {"},{"line_number":2878,"context_line":"            \u0027name\u0027: volume_name,"},{"line_number":2879,"context_line":"            \u0027clone.parent_volume.name\u0027: parent_volume_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"d5b84717_81fc488b","line":2876,"range":{"start_line":2876,"start_character":8,"end_line":2876,"end_character":30},"updated":"2023-02-17 01:41:14.000000000","message":"remove it","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":2873,"context_line":"        res \u003d response.get(\u0027records\u0027, [])[0]"},{"line_number":2874,"context_line":"        aggregate_name \u003d [aggr.get(\u0027name\u0027) for aggr in res.get(\u0027aggregates\u0027)]"},{"line_number":2875,"context_line":""},{"line_number":2876,"context_line":"        \"\"\"Clones a volume.\"\"\""},{"line_number":2877,"context_line":"        body \u003d {"},{"line_number":2878,"context_line":"            \u0027name\u0027: volume_name,"},{"line_number":2879,"context_line":"            \u0027clone.parent_volume.name\u0027: parent_volume_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"697277d8_542f08f2","line":2876,"range":{"start_line":2876,"start_character":8,"end_line":2876,"end_character":30},"in_reply_to":"d5b84717_81fc488b","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"d131cdaed849c8af32ac2e6123c2a268d22a79b5","unresolved":true,"context_lines":[{"line_number":2884,"context_line":"        if qos_policy_group is not None:"},{"line_number":2885,"context_line":"            body[\u0027qos.policy.name\u0027] \u003d qos_policy_group"},{"line_number":2886,"context_line":""},{"line_number":2887,"context_line":"        self.send_request(\u0027/storage/volumes\u0027, \u0027post\u0027, body\u003dbody)"},{"line_number":2888,"context_line":""},{"line_number":2889,"context_line":"        if split:"},{"line_number":2890,"context_line":"            self.split_volume_clone(volume_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"f5a73105_832da7df","line":2887,"range":{"start_line":2887,"start_character":25,"end_line":2887,"end_character":64},"updated":"2023-02-21 02:59:58.000000000","message":"it won\u0027t work with SVM scoped, since it requires the \"svm.name\". please, add it to the body dict:\n\n    \u0027svm.name\u0027: self.connection.get_vserver()","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":2884,"context_line":"        if qos_policy_group is not None:"},{"line_number":2885,"context_line":"            body[\u0027qos.policy.name\u0027] \u003d qos_policy_group"},{"line_number":2886,"context_line":""},{"line_number":2887,"context_line":"        self.send_request(\u0027/storage/volumes\u0027, \u0027post\u0027, body\u003dbody)"},{"line_number":2888,"context_line":""},{"line_number":2889,"context_line":"        if split:"},{"line_number":2890,"context_line":"            self.split_volume_clone(volume_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"a82c2279_0cc58592","line":2887,"range":{"start_line":2887,"start_character":25,"end_line":2887,"end_character":64},"in_reply_to":"f5a73105_832da7df","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":2987,"context_line":""},{"line_number":2988,"context_line":"        if not response:"},{"line_number":2989,"context_line":"            raise netapp_api.api.NaApiError("},{"line_number":2990,"context_line":"                code\u003dnetapp_api.api.EOBJECTNOTFOUND)"},{"line_number":2991,"context_line":""},{"line_number":2992,"context_line":"        snapmirror_uuid \u003d response[0][\u0027uuid\u0027]"},{"line_number":2993,"context_line":"        snapmirror_policy \u003d response[0][\u0027policy-type\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"a3780fba_3207b5a2","line":2990,"range":{"start_line":2990,"start_character":16,"end_line":2990,"end_character":51},"updated":"2023-02-17 01:41:14.000000000","message":"ZAPI code, that\u0027s fine if the upper layer expects it. If so, please, add a note explaining to keep ZAPI compatibility, it is returning a ZAPI error code.","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":2987,"context_line":""},{"line_number":2988,"context_line":"        if not response:"},{"line_number":2989,"context_line":"            raise netapp_api.api.NaApiError("},{"line_number":2990,"context_line":"                code\u003dnetapp_api.api.EOBJECTNOTFOUND)"},{"line_number":2991,"context_line":""},{"line_number":2992,"context_line":"        snapmirror_uuid \u003d response[0][\u0027uuid\u0027]"},{"line_number":2993,"context_line":"        snapmirror_policy \u003d response[0][\u0027policy-type\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"ee855bda_ccf4fa8c","line":2990,"range":{"start_line":2990,"start_character":16,"end_line":2990,"end_character":51},"in_reply_to":"a3780fba_3207b5a2","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":3015,"context_line":"                                source_volume, dest_volume)"},{"line_number":3016,"context_line":""},{"line_number":3017,"context_line":"    @na_utils.trace"},{"line_number":3018,"context_line":"    def add_nfs_export_rule(self, policy_name, client_match, readonly,"},{"line_number":3019,"context_line":"                            auth_methods):"},{"line_number":3020,"context_line":"        rule_indices \u003d self._get_nfs_export_rule_indices(policy_name,"},{"line_number":3021,"context_line":"                                                         client_match)"}],"source_content_type":"text/x-python","patch_set":5,"id":"95a0bbbf_e83cda90","line":3018,"range":{"start_line":3018,"start_character":8,"end_line":3018,"end_character":27},"updated":"2023-02-17 01:41:14.000000000","message":"add method documentation","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":3015,"context_line":"                                source_volume, dest_volume)"},{"line_number":3016,"context_line":""},{"line_number":3017,"context_line":"    @na_utils.trace"},{"line_number":3018,"context_line":"    def add_nfs_export_rule(self, policy_name, client_match, readonly,"},{"line_number":3019,"context_line":"                            auth_methods):"},{"line_number":3020,"context_line":"        rule_indices \u003d self._get_nfs_export_rule_indices(policy_name,"},{"line_number":3021,"context_line":"                                                         client_match)"}],"source_content_type":"text/x-python","patch_set":5,"id":"944d5727_d9e0a0cc","line":3018,"range":{"start_line":3018,"start_character":8,"end_line":3018,"end_character":27},"in_reply_to":"95a0bbbf_e83cda90","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":3030,"context_line":"            self._remove_nfs_export_rules(policy_name, rule_indices)"},{"line_number":3031,"context_line":""},{"line_number":3032,"context_line":"    @na_utils.trace"},{"line_number":3033,"context_line":"    def set_qos_policy_group_for_volume(self, volume_name,"},{"line_number":3034,"context_line":"                                        qos_policy_group_name):"},{"line_number":3035,"context_line":"        volume \u003d self._get_volume_by_args(vol_name\u003dvolume_name)"},{"line_number":3036,"context_line":"        uuid \u003d volume[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"12bd51af_4878b7f4","line":3033,"range":{"start_line":3033,"start_character":8,"end_line":3033,"end_character":39},"updated":"2023-02-17 01:41:14.000000000","message":"add method documentation","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":3030,"context_line":"            self._remove_nfs_export_rules(policy_name, rule_indices)"},{"line_number":3031,"context_line":""},{"line_number":3032,"context_line":"    @na_utils.trace"},{"line_number":3033,"context_line":"    def set_qos_policy_group_for_volume(self, volume_name,"},{"line_number":3034,"context_line":"                                        qos_policy_group_name):"},{"line_number":3035,"context_line":"        volume \u003d self._get_volume_by_args(vol_name\u003dvolume_name)"},{"line_number":3036,"context_line":"        uuid \u003d volume[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"acb7399c_13b546c9","line":3033,"range":{"start_line":3033,"start_character":8,"end_line":3033,"end_character":39},"in_reply_to":"12bd51af_4878b7f4","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":3051,"context_line":"                                dest_volume\u003ddest_volume)"},{"line_number":3052,"context_line":""},{"line_number":3053,"context_line":"    @na_utils.trace"},{"line_number":3054,"context_line":"    def _update_snapmirror(self, source_path\u003dNone, dest_path\u003dNone,"},{"line_number":3055,"context_line":"                           source_vserver\u003dNone, dest_vserver\u003dNone,"},{"line_number":3056,"context_line":"                           source_volume\u003dNone, dest_volume\u003dNone):"},{"line_number":3057,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"b95bb132_6591bcca","line":3054,"range":{"start_line":3054,"start_character":8,"end_line":3054,"end_character":26},"updated":"2023-02-17 01:41:14.000000000","message":"add method documentation","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":3051,"context_line":"                                dest_volume\u003ddest_volume)"},{"line_number":3052,"context_line":""},{"line_number":3053,"context_line":"    @na_utils.trace"},{"line_number":3054,"context_line":"    def _update_snapmirror(self, source_path\u003dNone, dest_path\u003dNone,"},{"line_number":3055,"context_line":"                           source_vserver\u003dNone, dest_vserver\u003dNone,"},{"line_number":3056,"context_line":"                           source_volume\u003dNone, dest_volume\u003dNone):"},{"line_number":3057,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"a91abbc9_212f3068","line":3054,"range":{"start_line":3054,"start_character":8,"end_line":3054,"end_character":26},"in_reply_to":"b95bb132_6591bcca","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":3101,"context_line":"            \u0027fields\u0027: \u0027clone.parent_volume.name\u0027"},{"line_number":3102,"context_line":"        }"},{"line_number":3103,"context_line":"        result \u003d self.send_request(f\u0027/storage/volumes/{uuid}\u0027, \u0027get\u0027,"},{"line_number":3104,"context_line":"                                   query\u003dquery, enable_tunneling\u003dFalse)"},{"line_number":3105,"context_line":"        if result.get(\"clone\") is None:"},{"line_number":3106,"context_line":"            return None"},{"line_number":3107,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"cd91e264_14829361","line":3104,"range":{"start_line":3104,"start_character":47,"end_line":3104,"end_character":70},"updated":"2023-02-17 01:41:14.000000000","message":"why is it disabling the tunning ?","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"b14300a9f07cc437326d7ad7e195db2296a3ef93","unresolved":false,"context_lines":[{"line_number":3101,"context_line":"            \u0027fields\u0027: \u0027clone.parent_volume.name\u0027"},{"line_number":3102,"context_line":"        }"},{"line_number":3103,"context_line":"        result \u003d self.send_request(f\u0027/storage/volumes/{uuid}\u0027, \u0027get\u0027,"},{"line_number":3104,"context_line":"                                   query\u003dquery, enable_tunneling\u003dFalse)"},{"line_number":3105,"context_line":"        if result.get(\"clone\") is None:"},{"line_number":3106,"context_line":"            return None"},{"line_number":3107,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"94225407_1d4f4d95","line":3104,"range":{"start_line":3104,"start_character":47,"end_line":3104,"end_character":70},"in_reply_to":"cd91e264_14829361","updated":"2023-02-23 11:54:37.000000000","message":"Ack","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":3123,"context_line":"            \"vserver\": vserver,"},{"line_number":3124,"context_line":"            \"volume\": volume_name,"},{"line_number":3125,"context_line":"            \"destination_vserver\": destination_vserver"},{"line_number":3126,"context_line":"            }"},{"line_number":3127,"context_line":"        self.send_request(\u0027/private/cli/volume/rehost\u0027, \u0027post\u0027, body\u003dbody)"},{"line_number":3128,"context_line":""},{"line_number":3129,"context_line":"    @na_utils.trace"}],"source_content_type":"text/x-python","patch_set":5,"id":"b34e5472_27668bb6","line":3126,"range":{"start_line":3126,"start_character":9,"end_line":3126,"end_character":12},"updated":"2023-02-17 01:41:14.000000000","message":"nit: align the close \"}\" with body word (as we did with all other dicts)","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":3123,"context_line":"            \"vserver\": vserver,"},{"line_number":3124,"context_line":"            \"volume\": volume_name,"},{"line_number":3125,"context_line":"            \"destination_vserver\": destination_vserver"},{"line_number":3126,"context_line":"            }"},{"line_number":3127,"context_line":"        self.send_request(\u0027/private/cli/volume/rehost\u0027, \u0027post\u0027, body\u003dbody)"},{"line_number":3128,"context_line":""},{"line_number":3129,"context_line":"    @na_utils.trace"}],"source_content_type":"text/x-python","patch_set":5,"id":"6727ab3e_70cb57da","line":3126,"range":{"start_line":3126,"start_character":9,"end_line":3126,"end_character":12},"in_reply_to":"b34e5472_27668bb6","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":3127,"context_line":"        self.send_request(\u0027/private/cli/volume/rehost\u0027, \u0027post\u0027, body\u003dbody)"},{"line_number":3128,"context_line":""},{"line_number":3129,"context_line":"    @na_utils.trace"},{"line_number":3130,"context_line":"    def set_qos_adaptive_policy_group_for_volume(self, volume_name,"},{"line_number":3131,"context_line":"                                                 qos_policy_group_name):"},{"line_number":3132,"context_line":""},{"line_number":3133,"context_line":"        # NOTE(renanpiranguinho): In the REST API migration"}],"source_content_type":"text/x-python","patch_set":5,"id":"0ff51ee3_6ab81ff6","line":3130,"range":{"start_line":3130,"start_character":8,"end_line":3130,"end_character":48},"updated":"2023-02-17 01:41:14.000000000","message":"add method documentation","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":3127,"context_line":"        self.send_request(\u0027/private/cli/volume/rehost\u0027, \u0027post\u0027, body\u003dbody)"},{"line_number":3128,"context_line":""},{"line_number":3129,"context_line":"    @na_utils.trace"},{"line_number":3130,"context_line":"    def set_qos_adaptive_policy_group_for_volume(self, volume_name,"},{"line_number":3131,"context_line":"                                                 qos_policy_group_name):"},{"line_number":3132,"context_line":""},{"line_number":3133,"context_line":"        # NOTE(renanpiranguinho): In the REST API migration"}],"source_content_type":"text/x-python","patch_set":5,"id":"3ad5b9fb_9c9e7419","line":3130,"range":{"start_line":3130,"start_character":8,"end_line":3130,"end_character":48},"in_reply_to":"0ff51ee3_6ab81ff6","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"1ffe8d6281f6fbc014e49b099d4a34b23c9042df","unresolved":true,"context_lines":[{"line_number":3130,"context_line":"    def set_qos_adaptive_policy_group_for_volume(self, volume_name,"},{"line_number":3131,"context_line":"                                                 qos_policy_group_name):"},{"line_number":3132,"context_line":""},{"line_number":3133,"context_line":"        # NOTE(renanpiranguinho): In the REST API migration"},{"line_number":3134,"context_line":"        # the current endpoint begin the same as in the function"},{"line_number":3135,"context_line":"        # set_qos_policy_group_for_volume"},{"line_number":3136,"context_line":"        if not self.features.ADAPTIVE_QOS:"},{"line_number":3137,"context_line":"            msg \u003d \u0027Adaptive QoS not supported on this backend ONTAP version.\u0027"},{"line_number":3138,"context_line":"            raise exception.NetAppException(msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"22efc447_046fd63e","line":3135,"range":{"start_line":3133,"start_character":34,"end_line":3135,"end_character":41},"updated":"2023-02-17 01:41:14.000000000","message":"add the note right before the \"set_qos_policy_group_for_volume\" as:\n\nNOTE(renanpiranguinho): For REST API, adaptive QoS is set the same way as normal QoS.","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":3130,"context_line":"    def set_qos_adaptive_policy_group_for_volume(self, volume_name,"},{"line_number":3131,"context_line":"                                                 qos_policy_group_name):"},{"line_number":3132,"context_line":""},{"line_number":3133,"context_line":"        # NOTE(renanpiranguinho): In the REST API migration"},{"line_number":3134,"context_line":"        # the current endpoint begin the same as in the function"},{"line_number":3135,"context_line":"        # set_qos_policy_group_for_volume"},{"line_number":3136,"context_line":"        if not self.features.ADAPTIVE_QOS:"},{"line_number":3137,"context_line":"            msg \u003d \u0027Adaptive QoS not supported on this backend ONTAP version.\u0027"},{"line_number":3138,"context_line":"            raise exception.NetAppException(msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"b174d97d_14e8688e","line":3135,"range":{"start_line":3133,"start_character":34,"end_line":3135,"end_character":41},"in_reply_to":"22efc447_046fd63e","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"8feaae623625016aafb4e72c67bd62848b05d470","unresolved":true,"context_lines":[{"line_number":3222,"context_line":"    @na_utils.trace"},{"line_number":3223,"context_line":"    def check_volume_clone_split_completed(self, volume_name):"},{"line_number":3224,"context_line":"        \"\"\"Check if volume clone split operation already finished\"\"\""},{"line_number":3225,"context_line":"        return self.get_volume_clone_parent_snaphot(volume_name) is None"},{"line_number":3226,"context_line":""},{"line_number":3227,"context_line":"    @na_utils.trace"},{"line_number":3228,"context_line":"    def get_volume_clone_parent_snaphot(self, volume_name):"},{"line_number":3229,"context_line":"        \"\"\"Gets volume\u0027s clone parent."},{"line_number":3230,"context_line":""},{"line_number":3231,"context_line":"        Return the snapshot name of a volume\u0027s clone parent, or None if it"},{"line_number":3232,"context_line":"        doesn\u0027t exist."},{"line_number":3233,"context_line":"        \"\"\""},{"line_number":3234,"context_line":"        volume \u003d self._get_volume_by_args(vol_name\u003dvolume_name)"},{"line_number":3235,"context_line":"        uuid \u003d volume[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"dea77e60_957fb825","line":3232,"range":{"start_line":3225,"start_character":7,"end_line":3232,"end_character":22},"updated":"2023-02-23 00:22:55.000000000","message":"You can join these methods. It is not reused by anyone. \n\nAnother point. The idea of the method is to see if the given volume is still a clone. So, you can only request the \u0027clone.is_flexclone\u0027. I think it makes it more clear.","commit_id":"24000c9432a08119e45b9d754bd200541aee9f1d"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"b14300a9f07cc437326d7ad7e195db2296a3ef93","unresolved":false,"context_lines":[{"line_number":3222,"context_line":"    @na_utils.trace"},{"line_number":3223,"context_line":"    def check_volume_clone_split_completed(self, volume_name):"},{"line_number":3224,"context_line":"        \"\"\"Check if volume clone split operation already finished\"\"\""},{"line_number":3225,"context_line":"        return self.get_volume_clone_parent_snaphot(volume_name) is None"},{"line_number":3226,"context_line":""},{"line_number":3227,"context_line":"    @na_utils.trace"},{"line_number":3228,"context_line":"    def get_volume_clone_parent_snaphot(self, volume_name):"},{"line_number":3229,"context_line":"        \"\"\"Gets volume\u0027s clone parent."},{"line_number":3230,"context_line":""},{"line_number":3231,"context_line":"        Return the snapshot name of a volume\u0027s clone parent, or None if it"},{"line_number":3232,"context_line":"        doesn\u0027t exist."},{"line_number":3233,"context_line":"        \"\"\""},{"line_number":3234,"context_line":"        volume \u003d self._get_volume_by_args(vol_name\u003dvolume_name)"},{"line_number":3235,"context_line":"        uuid \u003d volume[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"f4370237_295a3450","line":3232,"range":{"start_line":3225,"start_character":7,"end_line":3232,"end_character":22},"in_reply_to":"dea77e60_957fb825","updated":"2023-02-23 11:54:37.000000000","message":"Ack","commit_id":"24000c9432a08119e45b9d754bd200541aee9f1d"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"8feaae623625016aafb4e72c67bd62848b05d470","unresolved":true,"context_lines":[{"line_number":3241,"context_line":"        if result.get(\"clone\") is None:"},{"line_number":3242,"context_line":"            return None"},{"line_number":3243,"context_line":""},{"line_number":3244,"context_line":"        parent_name \u003d result.get(\"clone\")[\"parent_volume\"][\"name\"]"},{"line_number":3245,"context_line":"        return parent_name"},{"line_number":3246,"context_line":""},{"line_number":3247,"context_line":"    @na_utils.trace"},{"line_number":3248,"context_line":"    def rehost_volume(self, volume_name, vserver, destination_vserver):"}],"source_content_type":"text/x-python","patch_set":6,"id":"69fa8f77_4f1458e2","line":3245,"range":{"start_line":3244,"start_character":8,"end_line":3245,"end_character":26},"updated":"2023-02-23 00:22:55.000000000","message":"Wrong: this method should return the snapshot parent name, not the volume parent name. It is what ZAPI does. Since this method is used for checking if a volume is still a clone.","commit_id":"24000c9432a08119e45b9d754bd200541aee9f1d"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"b14300a9f07cc437326d7ad7e195db2296a3ef93","unresolved":false,"context_lines":[{"line_number":3241,"context_line":"        if result.get(\"clone\") is None:"},{"line_number":3242,"context_line":"            return None"},{"line_number":3243,"context_line":""},{"line_number":3244,"context_line":"        parent_name \u003d result.get(\"clone\")[\"parent_volume\"][\"name\"]"},{"line_number":3245,"context_line":"        return parent_name"},{"line_number":3246,"context_line":""},{"line_number":3247,"context_line":"    @na_utils.trace"},{"line_number":3248,"context_line":"    def rehost_volume(self, volume_name, vserver, destination_vserver):"}],"source_content_type":"text/x-python","patch_set":6,"id":"45b1f210_5d06be38","line":3245,"range":{"start_line":3244,"start_character":8,"end_line":3245,"end_character":26},"in_reply_to":"69fa8f77_4f1458e2","updated":"2023-02-23 11:54:37.000000000","message":"Ack","commit_id":"24000c9432a08119e45b9d754bd200541aee9f1d"}],"manila/tests/share/drivers/netapp/dataontap/client/test_client_cmode_rest.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"18e5dc250b2df740f46805156353b5486a6ae128","unresolved":true,"context_lines":[{"line_number":2283,"context_line":"                                              cutover_action\u003d\u0027wait\u0027,"},{"line_number":2284,"context_line":"                                              validation_only\u003dTrue,"},{"line_number":2285,"context_line":"                                              encrypt_destination\u003dFalse)"},{"line_number":2286,"context_line":"        mock_sr.assert_called_once()"},{"line_number":2287,"context_line":""},{"line_number":2288,"context_line":"    def test_get_nfs_export_policy_for_volume(self):"},{"line_number":2289,"context_line":"        ret \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"58e38f44_38f4bd18","line":2286,"range":{"start_line":2286,"start_character":8,"end_line":2286,"end_character":36},"updated":"2023-02-16 22:31:27.000000000","message":"please use assert_called_once_with","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":2283,"context_line":"                                              cutover_action\u003d\u0027wait\u0027,"},{"line_number":2284,"context_line":"                                              validation_only\u003dTrue,"},{"line_number":2285,"context_line":"                                              encrypt_destination\u003dFalse)"},{"line_number":2286,"context_line":"        mock_sr.assert_called_once()"},{"line_number":2287,"context_line":""},{"line_number":2288,"context_line":"    def test_get_nfs_export_policy_for_volume(self):"},{"line_number":2289,"context_line":"        ret \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"702f980a_22a38af2","line":2286,"range":{"start_line":2286,"start_character":8,"end_line":2286,"end_character":36},"in_reply_to":"58e38f44_38f4bd18","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"18e5dc250b2df740f46805156353b5486a6ae128","unresolved":true,"context_lines":[{"line_number":2493,"context_line":"        return_uuid \u003d {"},{"line_number":2494,"context_line":"            \u0027uuid\u0027: \u0027fake_uuid\u0027"},{"line_number":2495,"context_line":"        }"},{"line_number":2496,"context_line":"        mock_id \u003d self.mock_object(self.client, \u0027_get_volume_by_args\u0027,"},{"line_number":2497,"context_line":"                                   mock.Mock(return_value\u003dreturn_uuid))"},{"line_number":2498,"context_line":""},{"line_number":2499,"context_line":"        mock_sr \u003d self.mock_object(self.client, \u0027send_request\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"000eb0e3_e4584a2f","line":2496,"range":{"start_line":2496,"start_character":8,"end_line":2496,"end_character":15},"updated":"2023-02-16 22:31:27.000000000","message":"mock_id is not very suggestive here, we can try to make it a bit more suggestive","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":2493,"context_line":"        return_uuid \u003d {"},{"line_number":2494,"context_line":"            \u0027uuid\u0027: \u0027fake_uuid\u0027"},{"line_number":2495,"context_line":"        }"},{"line_number":2496,"context_line":"        mock_id \u003d self.mock_object(self.client, \u0027_get_volume_by_args\u0027,"},{"line_number":2497,"context_line":"                                   mock.Mock(return_value\u003dreturn_uuid))"},{"line_number":2498,"context_line":""},{"line_number":2499,"context_line":"        mock_sr \u003d self.mock_object(self.client, \u0027send_request\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"d4c7d009_96780093","line":2496,"range":{"start_line":2496,"start_character":8,"end_line":2496,"end_character":15},"in_reply_to":"000eb0e3_e4584a2f","updated":"2023-02-22 18:35:39.000000000","message":"Ack","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"18e5dc250b2df740f46805156353b5486a6ae128","unresolved":true,"context_lines":[{"line_number":2500,"context_line":"        self.client.abort_volume_move(\u0027fake_volume_name\u0027, \u0027fake_vserver\u0027)"},{"line_number":2501,"context_line":"        self.client.send_request.assert_called_once_with("},{"line_number":2502,"context_line":"            \u0027/storage/volumes/fake_uuid\u0027, \u0027patch\u0027)"},{"line_number":2503,"context_line":"        mock_sr.assert_called_once()"},{"line_number":2504,"context_line":"        mock_id.assert_called_once()"},{"line_number":2505,"context_line":""},{"line_number":2506,"context_line":"    def test_get_volume_move_status(self):"},{"line_number":2507,"context_line":"        \"\"\"Gets the current state of a volume move operation.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"438642d6_1460d299","line":2504,"range":{"start_line":2503,"start_character":8,"end_line":2504,"end_character":36},"updated":"2023-02-16 22:31:27.000000000","message":"same about assert_called_once - here and below","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"c4a0759a5e6b79bb1230ad88248e9ea1700f80f4","unresolved":false,"context_lines":[{"line_number":2500,"context_line":"        self.client.abort_volume_move(\u0027fake_volume_name\u0027, \u0027fake_vserver\u0027)"},{"line_number":2501,"context_line":"        self.client.send_request.assert_called_once_with("},{"line_number":2502,"context_line":"            \u0027/storage/volumes/fake_uuid\u0027, \u0027patch\u0027)"},{"line_number":2503,"context_line":"        mock_sr.assert_called_once()"},{"line_number":2504,"context_line":"        mock_id.assert_called_once()"},{"line_number":2505,"context_line":""},{"line_number":2506,"context_line":"    def test_get_volume_move_status(self):"},{"line_number":2507,"context_line":"        \"\"\"Gets the current state of a volume move operation.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"946ee3b3_d1c82ea2","line":2504,"range":{"start_line":2503,"start_character":8,"end_line":2504,"end_character":36},"in_reply_to":"438642d6_1460d299","updated":"2023-02-22 18:35:39.000000000","message":"Done","commit_id":"abc6c7236f22a67878273208813fc9ac071806c4"}]}
