)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"7a01505d1d46fb5357eb9af7ee409c4b075838d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d112bc2e_6e6567dc","updated":"2022-08-29 01:14:11.000000000","message":"I realized that you\u0027ve just missed the release notes.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"741adac1_5b8f04ea","updated":"2022-08-29 00:50:17.000000000","message":"thank you Nahim for working on this REST migration. Mostly it looks good, just some points to be changed and discussed. Please, review them 😊","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"228243f2837e4be29e0e4556a8ff8f7a3f73f01b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"99e96276_8a45ee9b","updated":"2022-09-09 22:03:49.000000000","message":"Code and test coverage look good.  You may want to add coverage for the lagtime parsing function, those are always tricky.  NetApp and Zuul are green.","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c0d8f725fe524380a9c6df5545f2d2c34e13db76","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"edc13720_fe7f7480","updated":"2022-09-09 11:10:36.000000000","message":"NetApp CI is passing except the Netapp FC CI which is failing but possibly unrelated to this change. LGTM.","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"64e2e6df4ce4b559e6ab90c0094b8e0843dcbfec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"ca12c782_10e01774","updated":"2022-09-09 12:28:38.000000000","message":"Thanks, Rajat. I addressed your comments here. We can work on the fixes in a follow up patch.","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a7af7462c7ee942032a812e35d289c902b173cf8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"f684c27d_61ed8bd9","updated":"2022-09-09 05:47:43.000000000","message":"recheck\n\nunrelated failures in grenade and ceph-tempest job","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"70ec0bdfe23713b55f6159e9b662bb9a7c0c7b34","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"dec58b3e_9ae1adb4","updated":"2022-09-09 18:53:21.000000000","message":"run-NetApp CI","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/client/test_client_cmode_rest.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c0d8f725fe524380a9c6df5545f2d2c34e13db76","unresolved":true,"context_lines":[{"line_number":2569,"context_line":""},{"line_number":2570,"context_line":"        body \u003d {"},{"line_number":2571,"context_line":"            \u0027name\u0027: fake_client.VOLUME_NAME,"},{"line_number":2572,"context_line":"            \u0027size\u0027: 100 * units.Gi,"},{"line_number":2573,"context_line":"            \u0027type\u0027: \u0027dp\u0027"},{"line_number":2574,"context_line":"        }"},{"line_number":2575,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3378e5eb_683f24df","line":2572,"range":{"start_line":2572,"start_character":20,"end_line":2572,"end_character":34},"updated":"2022-09-09 11:10:36.000000000","message":"do we really require a value this big for testing?\nI think 1 or 10 GB should\u0027ve sufficed\n\n\u003e\u003e\u003e 1 * 1024 ** 3\n1073741824\n\u003e\u003e\u003e 10 * 1024 ** 3\n10737418240\n\u003e\u003e\u003e 100 * 1024 ** 3\n107374182400","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"64e2e6df4ce4b559e6ab90c0094b8e0843dcbfec","unresolved":true,"context_lines":[{"line_number":2569,"context_line":""},{"line_number":2570,"context_line":"        body \u003d {"},{"line_number":2571,"context_line":"            \u0027name\u0027: fake_client.VOLUME_NAME,"},{"line_number":2572,"context_line":"            \u0027size\u0027: 100 * units.Gi,"},{"line_number":2573,"context_line":"            \u0027type\u0027: \u0027dp\u0027"},{"line_number":2574,"context_line":"        }"},{"line_number":2575,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"cc51b5bd_52917728","line":2572,"range":{"start_line":2572,"start_character":20,"end_line":2572,"end_character":34},"in_reply_to":"3378e5eb_683f24df","updated":"2022-09-09 12:28:38.000000000","message":"It\u0027s not required for testing purposes, other values would suffice. But, I believe that 100Gb is a reasonable value since users can create even larger volumes.","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ab608e2981c8aea028f575ae88293b1647282942","unresolved":false,"context_lines":[{"line_number":2569,"context_line":""},{"line_number":2570,"context_line":"        body \u003d {"},{"line_number":2571,"context_line":"            \u0027name\u0027: fake_client.VOLUME_NAME,"},{"line_number":2572,"context_line":"            \u0027size\u0027: 100 * units.Gi,"},{"line_number":2573,"context_line":"            \u0027type\u0027: \u0027dp\u0027"},{"line_number":2574,"context_line":"        }"},{"line_number":2575,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"e4a2aa6b_1ac9b331","line":2572,"range":{"start_line":2572,"start_character":20,"end_line":2572,"end_character":34},"in_reply_to":"cc51b5bd_52917728","updated":"2022-09-09 19:59:54.000000000","message":"Ack","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c0d8f725fe524380a9c6df5545f2d2c34e13db76","unresolved":true,"context_lines":[{"line_number":2859,"context_line":"                          schedule\u003dNone,"},{"line_number":2860,"context_line":"                          policy\u003dNone,"},{"line_number":2861,"context_line":"                          relationship_type\u003d\u0027data_protection\u0027)"},{"line_number":2862,"context_line":"        self.assertTrue(self.client.send_request.called)"},{"line_number":2863,"context_line":""},{"line_number":2864,"context_line":"    def test__set_snapmirror_state(self):"},{"line_number":2865,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"f040083a_cd019cbe","line":2862,"range":{"start_line":2862,"start_character":8,"end_line":2862,"end_character":56},"updated":"2022-09-09 11:10:36.000000000","message":"or self.client.send_request.assert_called_once()","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"64e2e6df4ce4b559e6ab90c0094b8e0843dcbfec","unresolved":true,"context_lines":[{"line_number":2859,"context_line":"                          schedule\u003dNone,"},{"line_number":2860,"context_line":"                          policy\u003dNone,"},{"line_number":2861,"context_line":"                          relationship_type\u003d\u0027data_protection\u0027)"},{"line_number":2862,"context_line":"        self.assertTrue(self.client.send_request.called)"},{"line_number":2863,"context_line":""},{"line_number":2864,"context_line":"    def test__set_snapmirror_state(self):"},{"line_number":2865,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9d7eed36_1d72f24d","line":2862,"range":{"start_line":2862,"start_character":8,"end_line":2862,"end_character":56},"in_reply_to":"f040083a_cd019cbe","updated":"2022-09-09 12:28:38.000000000","message":"Ack","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c0d8f725fe524380a9c6df5545f2d2c34e13db76","unresolved":true,"context_lines":[{"line_number":3240,"context_line":"        self.mock_object(self.client, \u0027send_request\u0027,"},{"line_number":3241,"context_line":"                         side_effect\u003dcopy.deepcopy(response_list))"},{"line_number":3242,"context_line":""},{"line_number":3243,"context_line":"        expected_job \u003d {"},{"line_number":3244,"context_line":"            \u0027operation-id\u0027: None,"},{"line_number":3245,"context_line":"            \u0027status\u0027: None,"},{"line_number":3246,"context_line":"            \u0027jobid\u0027: fake_client.FAKE_UUID,"},{"line_number":3247,"context_line":"            \u0027error-code\u0027: None,"},{"line_number":3248,"context_line":"            \u0027error-message\u0027: None,"},{"line_number":3249,"context_line":"            \u0027relationship-uuid\u0027: fake_client.FAKE_UUID,"},{"line_number":3250,"context_line":"        }"},{"line_number":3251,"context_line":""},{"line_number":3252,"context_line":"        mock_set_snapmirror_state \u003d self.mock_object("},{"line_number":3253,"context_line":"            self.client,"}],"source_content_type":"text/x-python","patch_set":16,"id":"f5a26a5a_fceaa41f","line":3250,"range":{"start_line":3243,"start_character":0,"end_line":3250,"end_character":9},"updated":"2022-09-09 11:10:36.000000000","message":"this seems to be similar for some test cases, would\u0027ve been better if defined globally instead of inside every test case.\n\nAlso a function would be useful that accepts these parameters and returns this dict\n\n    def _generate_job(self, *args, **kwargs):\n        expected_job \u003d {}\n        expected_job.update(kwargs)\n        return expected_job","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"64e2e6df4ce4b559e6ab90c0094b8e0843dcbfec","unresolved":true,"context_lines":[{"line_number":3240,"context_line":"        self.mock_object(self.client, \u0027send_request\u0027,"},{"line_number":3241,"context_line":"                         side_effect\u003dcopy.deepcopy(response_list))"},{"line_number":3242,"context_line":""},{"line_number":3243,"context_line":"        expected_job \u003d {"},{"line_number":3244,"context_line":"            \u0027operation-id\u0027: None,"},{"line_number":3245,"context_line":"            \u0027status\u0027: None,"},{"line_number":3246,"context_line":"            \u0027jobid\u0027: fake_client.FAKE_UUID,"},{"line_number":3247,"context_line":"            \u0027error-code\u0027: None,"},{"line_number":3248,"context_line":"            \u0027error-message\u0027: None,"},{"line_number":3249,"context_line":"            \u0027relationship-uuid\u0027: fake_client.FAKE_UUID,"},{"line_number":3250,"context_line":"        }"},{"line_number":3251,"context_line":""},{"line_number":3252,"context_line":"        mock_set_snapmirror_state \u003d self.mock_object("},{"line_number":3253,"context_line":"            self.client,"}],"source_content_type":"text/x-python","patch_set":16,"id":"beeedbe6_bd93d59b","line":3250,"range":{"start_line":3243,"start_character":0,"end_line":3250,"end_character":9},"in_reply_to":"f5a26a5a_fceaa41f","updated":"2022-09-09 12:28:38.000000000","message":"I agree, maybe we should\u0027ve created this dict in \u0027fakes.py\u0027 as we did in other test cases.","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":1960,"context_line":""},{"line_number":1961,"context_line":"        response \u003d self.send_request(\u0027/storage/volumes/\u0027, \u0027get\u0027, query\u003dquery)"},{"line_number":1962,"context_line":""},{"line_number":1963,"context_line":"        if response[\u0027num_records\u0027] \u003e 0:"},{"line_number":1964,"context_line":"            return True"},{"line_number":1965,"context_line":""},{"line_number":1966,"context_line":"        return False"},{"line_number":1967,"context_line":""},{"line_number":1968,"context_line":"    def create_volume_async(self, name, aggregate_list, size_gb,"},{"line_number":1969,"context_line":"                            space_guarantee_type\u003dNone, snapshot_policy\u003dNone,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7e54c08a_a324cfd2","line":1966,"range":{"start_line":1963,"start_character":7,"end_line":1966,"end_character":20},"updated":"2022-08-29 00:50:17.000000000","message":"4 in 1: return response[\u0027num_records] \u003e 0","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":1960,"context_line":""},{"line_number":1961,"context_line":"        response \u003d self.send_request(\u0027/storage/volumes/\u0027, \u0027get\u0027, query\u003dquery)"},{"line_number":1962,"context_line":""},{"line_number":1963,"context_line":"        if response[\u0027num_records\u0027] \u003e 0:"},{"line_number":1964,"context_line":"            return True"},{"line_number":1965,"context_line":""},{"line_number":1966,"context_line":"        return False"},{"line_number":1967,"context_line":""},{"line_number":1968,"context_line":"    def create_volume_async(self, name, aggregate_list, size_gb,"},{"line_number":1969,"context_line":"                            space_guarantee_type\u003dNone, snapshot_policy\u003dNone,"}],"source_content_type":"text/x-python","patch_set":7,"id":"4cbd0524_5d35da5b","line":1966,"range":{"start_line":1963,"start_character":7,"end_line":1966,"end_character":20},"in_reply_to":"7e54c08a_a324cfd2","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2007,"context_line":"            }"},{"line_number":2008,"context_line":""},{"line_number":2009,"context_line":"        # cDOT compression requires that deduplication be enabled."},{"line_number":2010,"context_line":"        if dedupe_enabled or compression_enabled:"},{"line_number":2011,"context_line":"            body[\u0027efficiency\u0027] \u003d {\u0027dedupe\u0027: \u0027background\u0027}"},{"line_number":2012,"context_line":""},{"line_number":2013,"context_line":"        if compression_enabled:"},{"line_number":2014,"context_line":"            body[\u0027efficiency\u0027] \u003d {\u0027compression\u0027: \u0027background\u0027}"},{"line_number":2015,"context_line":""},{"line_number":2016,"context_line":"        response \u003d self.send_request(\u0027/storage/volumes/\u0027, \u0027post\u0027, body\u003dbody,"},{"line_number":2017,"context_line":"                                     wait_on_accepted\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fddb8434_f9ce56d0","line":2014,"range":{"start_line":2010,"start_character":8,"end_line":2014,"end_character":62},"updated":"2022-08-29 00:50:17.000000000","message":"If compression requires deduplication, the code is not setting the dedupe when compression is requested: first \"if\" adds the dedupe, but the second will overwrite the \"efficiency\" key with the dict without dedupe. am I right ? it should be:\n\n# cDOT compression requires...\nif dedupe_enable or compression_enabled:\n  body[\u0027efficiency\u0027] \u003d {\u0027dedupe\u0027: \u0027background\u0027}\n  \nif compression_enabled:\n  body[\u0027efficiency][\u0027compression\u0027] \u003d  \u0027background\u0027","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4972a62a6f3766398063a2d89a9a836d87391607","unresolved":false,"context_lines":[{"line_number":2007,"context_line":"            }"},{"line_number":2008,"context_line":""},{"line_number":2009,"context_line":"        # cDOT compression requires that deduplication be enabled."},{"line_number":2010,"context_line":"        if dedupe_enabled or compression_enabled:"},{"line_number":2011,"context_line":"            body[\u0027efficiency\u0027] \u003d {\u0027dedupe\u0027: \u0027background\u0027}"},{"line_number":2012,"context_line":""},{"line_number":2013,"context_line":"        if compression_enabled:"},{"line_number":2014,"context_line":"            body[\u0027efficiency\u0027] \u003d {\u0027compression\u0027: \u0027background\u0027}"},{"line_number":2015,"context_line":""},{"line_number":2016,"context_line":"        response \u003d self.send_request(\u0027/storage/volumes/\u0027, \u0027post\u0027, body\u003dbody,"},{"line_number":2017,"context_line":"                                     wait_on_accepted\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"e2b35d2c_ab744693","line":2014,"range":{"start_line":2010,"start_character":8,"end_line":2014,"end_character":62},"in_reply_to":"713ab590_1b506807","updated":"2022-09-09 00:47:54.000000000","message":"next patchset*","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"dda9a4a57e2af6b518844b76381fb4ce0b914242","unresolved":false,"context_lines":[{"line_number":2007,"context_line":"            }"},{"line_number":2008,"context_line":""},{"line_number":2009,"context_line":"        # cDOT compression requires that deduplication be enabled."},{"line_number":2010,"context_line":"        if dedupe_enabled or compression_enabled:"},{"line_number":2011,"context_line":"            body[\u0027efficiency\u0027] \u003d {\u0027dedupe\u0027: \u0027background\u0027}"},{"line_number":2012,"context_line":""},{"line_number":2013,"context_line":"        if compression_enabled:"},{"line_number":2014,"context_line":"            body[\u0027efficiency\u0027] \u003d {\u0027compression\u0027: \u0027background\u0027}"},{"line_number":2015,"context_line":""},{"line_number":2016,"context_line":"        response \u003d self.send_request(\u0027/storage/volumes/\u0027, \u0027post\u0027, body\u003dbody,"},{"line_number":2017,"context_line":"                                     wait_on_accepted\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"713ab590_1b506807","line":2014,"range":{"start_line":2010,"start_character":8,"end_line":2014,"end_character":62},"in_reply_to":"fddb8434_f9ce56d0","updated":"2022-09-09 00:37:25.000000000","message":"done next patch","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2034,"context_line":""},{"line_number":2035,"context_line":"        return self.create_volume_async("},{"line_number":2036,"context_line":"            flexvol_name, aggregate_name, size_gb,"},{"line_number":2037,"context_line":"            space_guarantee_type, snapshot_policy, language, dedupe_enabled,"},{"line_number":2038,"context_line":"            compression_enabled, snapshot_reserve, volume_type)"},{"line_number":2039,"context_line":""},{"line_number":2040,"context_line":"    def enable_volume_dedupe_async(self, volume_name):"},{"line_number":2041,"context_line":"        \"\"\"Enable deduplication on FlexVol/FlexGroup volume asynchronously.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"5c3a3976_cbb967f6","line":2038,"range":{"start_line":2037,"start_character":12,"end_line":2038,"end_character":61},"updated":"2022-08-29 00:50:17.000000000","message":"all parameters should be passed as kwargs, see function definition.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2034,"context_line":""},{"line_number":2035,"context_line":"        return self.create_volume_async("},{"line_number":2036,"context_line":"            flexvol_name, aggregate_name, size_gb,"},{"line_number":2037,"context_line":"            space_guarantee_type, snapshot_policy, language, dedupe_enabled,"},{"line_number":2038,"context_line":"            compression_enabled, snapshot_reserve, volume_type)"},{"line_number":2039,"context_line":""},{"line_number":2040,"context_line":"    def enable_volume_dedupe_async(self, volume_name):"},{"line_number":2041,"context_line":"        \"\"\"Enable deduplication on FlexVol/FlexGroup volume asynchronously.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"df59f30e_e2571fd4","line":2038,"range":{"start_line":2037,"start_character":12,"end_line":2038,"end_character":61},"in_reply_to":"5c3a3976_cbb967f6","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2040,"context_line":"    def enable_volume_dedupe_async(self, volume_name):"},{"line_number":2041,"context_line":"        \"\"\"Enable deduplication on FlexVol/FlexGroup volume asynchronously.\"\"\""},{"line_number":2042,"context_line":""},{"line_number":2043,"context_line":"        query \u003d {"},{"line_number":2044,"context_line":"            \u0027name\u0027: volume_name,"},{"line_number":2045,"context_line":"            \u0027fields\u0027: \u0027uuid,style\u0027,"},{"line_number":2046,"context_line":"        }"},{"line_number":2047,"context_line":""},{"line_number":2048,"context_line":"        # Get volume UUID"},{"line_number":2049,"context_line":"        response \u003d self.send_request(\u0027/storage/volumes/\u0027, \u0027get\u0027, query\u003dquery)"},{"line_number":2050,"context_line":"        records \u003d response.get(\u0027records\u0027, [])"},{"line_number":2051,"context_line":"        unique_volume \u003d self._get_unique_volume(records)"},{"line_number":2052,"context_line":"        uuid \u003d unique_volume[\u0027uuid\u0027]"},{"line_number":2053,"context_line":""},{"line_number":2054,"context_line":"        body \u003d {"},{"line_number":2055,"context_line":"            \u0027efficiency\u0027: {\u0027dedupe\u0027: \u0027background\u0027}"}],"source_content_type":"text/x-python","patch_set":7,"id":"9b253e89_7f8e489d","line":2052,"range":{"start_line":2043,"start_character":0,"end_line":2052,"end_character":36},"updated":"2022-08-29 00:50:17.000000000","message":"you don\u0027t need to retrieve the volume to apply the patch, since the volume_name is unique, you can apply the patch passing the query parameters pointing to the name\u003d\u003cvolume_name\u003e:\n\ndef enable_volume_...(self, volume_name):\n  body \u003d {\n      \u0027efficiency\u0027: {\u0027dedupe\u0027: \u0027background\u0027}\n }\n query \u003d {\u0027name\u0027: volume_name}\n self.send_request(\u0027/storage/volumes/\u0027,\u0027patch\u0027, body\u003dbody, query\u003dquery,                  \n                   wait_on_accepted\u003dFalse)","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2040,"context_line":"    def enable_volume_dedupe_async(self, volume_name):"},{"line_number":2041,"context_line":"        \"\"\"Enable deduplication on FlexVol/FlexGroup volume asynchronously.\"\"\""},{"line_number":2042,"context_line":""},{"line_number":2043,"context_line":"        query \u003d {"},{"line_number":2044,"context_line":"            \u0027name\u0027: volume_name,"},{"line_number":2045,"context_line":"            \u0027fields\u0027: \u0027uuid,style\u0027,"},{"line_number":2046,"context_line":"        }"},{"line_number":2047,"context_line":""},{"line_number":2048,"context_line":"        # Get volume UUID"},{"line_number":2049,"context_line":"        response \u003d self.send_request(\u0027/storage/volumes/\u0027, \u0027get\u0027, query\u003dquery)"},{"line_number":2050,"context_line":"        records \u003d response.get(\u0027records\u0027, [])"},{"line_number":2051,"context_line":"        unique_volume \u003d self._get_unique_volume(records)"},{"line_number":2052,"context_line":"        uuid \u003d unique_volume[\u0027uuid\u0027]"},{"line_number":2053,"context_line":""},{"line_number":2054,"context_line":"        body \u003d {"},{"line_number":2055,"context_line":"            \u0027efficiency\u0027: {\u0027dedupe\u0027: \u0027background\u0027}"}],"source_content_type":"text/x-python","patch_set":7,"id":"528e7856_ebcdf01f","line":2052,"range":{"start_line":2043,"start_character":0,"end_line":2052,"end_character":36},"in_reply_to":"9b253e89_7f8e489d","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2055,"context_line":"            \u0027efficiency\u0027: {\u0027dedupe\u0027: \u0027background\u0027}"},{"line_number":2056,"context_line":"        }"},{"line_number":2057,"context_line":"        self.send_request(f\u0027/storage/volumes/{uuid}\u0027,"},{"line_number":2058,"context_line":"                          \u0027patch\u0027, body\u003dbody, wait_on_accepted\u003dFalse)"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"    def enable_volume_compression_async(self, volume_name):"},{"line_number":2061,"context_line":"        \"\"\"Enable compression on FlexVol/FlexGroup volume asynchronously.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"7ec50e2b_049e6c8a","line":2058,"range":{"start_line":2058,"start_character":45,"end_line":2058,"end_character":68},"updated":"2022-08-29 00:50:17.000000000","message":"why is it set to False ? On driver layer the method is not checking the state of dedupe/compression, it is only waiting for volume be online, then it runs the enable dedupe/compression synchronously.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2055,"context_line":"            \u0027efficiency\u0027: {\u0027dedupe\u0027: \u0027background\u0027}"},{"line_number":2056,"context_line":"        }"},{"line_number":2057,"context_line":"        self.send_request(f\u0027/storage/volumes/{uuid}\u0027,"},{"line_number":2058,"context_line":"                          \u0027patch\u0027, body\u003dbody, wait_on_accepted\u003dFalse)"},{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"    def enable_volume_compression_async(self, volume_name):"},{"line_number":2061,"context_line":"        \"\"\"Enable compression on FlexVol/FlexGroup volume asynchronously.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"8242dbec_90195cb5","line":2058,"range":{"start_line":2058,"start_character":45,"end_line":2058,"end_character":68},"in_reply_to":"7ec50e2b_049e6c8a","updated":"2022-09-08 22:21:47.000000000","message":"The idea is to keep it consistent with function name and docstring that states that the function will run assync. Waiting would change the intented function behavior. In case the driver needs to wait for the dedup and compression ops to complete, another function would be implemented for that purpose.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"    def enable_volume_compression_async(self, volume_name):"},{"line_number":2061,"context_line":"        \"\"\"Enable compression on FlexVol/FlexGroup volume asynchronously.\"\"\""},{"line_number":2062,"context_line":"        query \u003d {"},{"line_number":2063,"context_line":"            \u0027name\u0027: volume_name,"},{"line_number":2064,"context_line":"            \u0027fields\u0027: \u0027uuid,style\u0027,"},{"line_number":2065,"context_line":"        }"},{"line_number":2066,"context_line":""},{"line_number":2067,"context_line":"        # Get volume UUID"},{"line_number":2068,"context_line":"        response \u003d self.send_request(\u0027/storage/volumes/\u0027, \u0027get\u0027, query\u003dquery)"},{"line_number":2069,"context_line":"        records \u003d response.get(\u0027records\u0027, [])"},{"line_number":2070,"context_line":"        unique_volume \u003d self._get_unique_volume(records)"},{"line_number":2071,"context_line":"        uuid \u003d unique_volume[\u0027uuid\u0027]"},{"line_number":2072,"context_line":""},{"line_number":2073,"context_line":"        body \u003d {"},{"line_number":2074,"context_line":"            \u0027efficiency\u0027: {\u0027compression\u0027: \u0027background\u0027}"}],"source_content_type":"text/x-python","patch_set":7,"id":"097ca128_e984ecba","line":2071,"range":{"start_line":2062,"start_character":8,"end_line":2071,"end_character":36},"updated":"2022-08-29 00:50:17.000000000","message":"you don\u0027t need to retrieve the volume to apply the patch, since the volume_name is unique, you can apply the patch passing the query parameters pointing to the name\u003d\u003cvolume_name\u003e:\n\ndef enable_volume_...(self, volume_name):\n  body \u003d {\n      \u0027efficiency\u0027: {\u0027compression\u0027: \u0027background\u0027}\n }\n query \u003d {\u0027name\u0027: volume_name}\n self.send_request(\u0027/storage/volumes/\u0027,\u0027patch\u0027, body\u003dbody, query\u003dquery,                  \n                   wait_on_accepted\u003dFalse)","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"dda9a4a57e2af6b518844b76381fb4ce0b914242","unresolved":false,"context_lines":[{"line_number":2059,"context_line":""},{"line_number":2060,"context_line":"    def enable_volume_compression_async(self, volume_name):"},{"line_number":2061,"context_line":"        \"\"\"Enable compression on FlexVol/FlexGroup volume asynchronously.\"\"\""},{"line_number":2062,"context_line":"        query \u003d {"},{"line_number":2063,"context_line":"            \u0027name\u0027: volume_name,"},{"line_number":2064,"context_line":"            \u0027fields\u0027: \u0027uuid,style\u0027,"},{"line_number":2065,"context_line":"        }"},{"line_number":2066,"context_line":""},{"line_number":2067,"context_line":"        # Get volume UUID"},{"line_number":2068,"context_line":"        response \u003d self.send_request(\u0027/storage/volumes/\u0027, \u0027get\u0027, query\u003dquery)"},{"line_number":2069,"context_line":"        records \u003d response.get(\u0027records\u0027, [])"},{"line_number":2070,"context_line":"        unique_volume \u003d self._get_unique_volume(records)"},{"line_number":2071,"context_line":"        uuid \u003d unique_volume[\u0027uuid\u0027]"},{"line_number":2072,"context_line":""},{"line_number":2073,"context_line":"        body \u003d {"},{"line_number":2074,"context_line":"            \u0027efficiency\u0027: {\u0027compression\u0027: \u0027background\u0027}"}],"source_content_type":"text/x-python","patch_set":7,"id":"78223ca9_bad724c3","line":2071,"range":{"start_line":2062,"start_character":8,"end_line":2071,"end_character":36},"in_reply_to":"097ca128_e984ecba","updated":"2022-09-09 00:37:25.000000000","message":"after some internally discussion, we agree that keeping as default None would be better.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2074,"context_line":"            \u0027efficiency\u0027: {\u0027compression\u0027: \u0027background\u0027}"},{"line_number":2075,"context_line":"        }"},{"line_number":2076,"context_line":"        self.send_request(f\u0027/storage/volumes/{uuid}\u0027,"},{"line_number":2077,"context_line":"                          \u0027patch\u0027, body\u003dbody, wait_on_accepted\u003dFalse)"},{"line_number":2078,"context_line":""},{"line_number":2079,"context_line":"    def _parse_lagtime(self, time_str):"},{"line_number":2080,"context_line":"        \u0027\u0027\u0027Parse lagtime string (ISO 8601) into a number of seconds.\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"95ad238e_c4cb8380","line":2077,"range":{"start_line":2077,"start_character":45,"end_line":2077,"end_character":68},"updated":"2022-08-29 00:50:17.000000000","message":"why is it set to False ? On driver layer the method is not checking the state of dedupe/compression, it is only waiting for volume be online, then it runs the enable dedupe/compression synchronously.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2074,"context_line":"            \u0027efficiency\u0027: {\u0027compression\u0027: \u0027background\u0027}"},{"line_number":2075,"context_line":"        }"},{"line_number":2076,"context_line":"        self.send_request(f\u0027/storage/volumes/{uuid}\u0027,"},{"line_number":2077,"context_line":"                          \u0027patch\u0027, body\u003dbody, wait_on_accepted\u003dFalse)"},{"line_number":2078,"context_line":""},{"line_number":2079,"context_line":"    def _parse_lagtime(self, time_str):"},{"line_number":2080,"context_line":"        \u0027\u0027\u0027Parse lagtime string (ISO 8601) into a number of seconds.\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"132e0d5b_4816562c","line":2077,"range":{"start_line":2077,"start_character":45,"end_line":2077,"end_character":68},"in_reply_to":"95ad238e_c4cb8380","updated":"2022-09-08 22:21:47.000000000","message":"Same as above.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2098,"context_line":"        td \u003d timedelta(hours\u003dt.hour, minutes\u003dt.minute, seconds\u003dt.second)"},{"line_number":2099,"context_line":"        return td.total_seconds()"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"    def _get_rest_attribute_name(self, zapi_call, zapi_attribute):"},{"line_number":2102,"context_line":""},{"line_number":2103,"context_line":"        snapmirror_mapping \u003d {"},{"line_number":2104,"context_line":"            \u0027relationship-status\u0027: \u0027state\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3c9b2181_8a692077","line":2101,"range":{"start_line":2101,"start_character":8,"end_line":2101,"end_character":32},"updated":"2022-08-29 00:50:17.000000000","message":"Please, add a doc function comment explaining what the function does and what the params/return mean.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2098,"context_line":"        td \u003d timedelta(hours\u003dt.hour, minutes\u003dt.minute, seconds\u003dt.second)"},{"line_number":2099,"context_line":"        return td.total_seconds()"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"    def _get_rest_attribute_name(self, zapi_call, zapi_attribute):"},{"line_number":2102,"context_line":""},{"line_number":2103,"context_line":"        snapmirror_mapping \u003d {"},{"line_number":2104,"context_line":"            \u0027relationship-status\u0027: \u0027state\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"4475c544_18ffbb02","line":2101,"range":{"start_line":2101,"start_character":39,"end_line":2101,"end_character":48},"updated":"2022-08-29 00:50:17.000000000","message":"not required, it is never used in real cases. Just increases the complexity for code understanding.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2098,"context_line":"        td \u003d timedelta(hours\u003dt.hour, minutes\u003dt.minute, seconds\u003dt.second)"},{"line_number":2099,"context_line":"        return td.total_seconds()"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"    def _get_rest_attribute_name(self, zapi_call, zapi_attribute):"},{"line_number":2102,"context_line":""},{"line_number":2103,"context_line":"        snapmirror_mapping \u003d {"},{"line_number":2104,"context_line":"            \u0027relationship-status\u0027: \u0027state\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"b7ec0a06_df6a12e1","line":2101,"range":{"start_line":2101,"start_character":50,"end_line":2101,"end_character":64},"updated":"2022-08-29 00:50:17.000000000","message":"please, avoid zapi name, we don\u0027t want to keep ZAPI dependent: field_name","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2098,"context_line":"        td \u003d timedelta(hours\u003dt.hour, minutes\u003dt.minute, seconds\u003dt.second)"},{"line_number":2099,"context_line":"        return td.total_seconds()"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"    def _get_rest_attribute_name(self, zapi_call, zapi_attribute):"},{"line_number":2102,"context_line":""},{"line_number":2103,"context_line":"        snapmirror_mapping \u003d {"},{"line_number":2104,"context_line":"            \u0027relationship-status\u0027: \u0027state\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1256c41b_17aa2e45","line":2101,"range":{"start_line":2101,"start_character":8,"end_line":2101,"end_character":32},"updated":"2022-08-29 00:50:17.000000000","message":"we don\u0027t want to use this approach again with other functions. This should be avoid, since it keeps the REST driver ZAPI dependent. So, we can name this function exactly what it does. also, the name \"REST attributes\" does not match the REST design, \"attribute\" is a word used on ZAPI design, please, for REST explaing that those \"attributes\" are. Here, the atributes are the query field parameters:\n\ndef _get_snapmirror_query_fields","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2098,"context_line":"        td \u003d timedelta(hours\u003dt.hour, minutes\u003dt.minute, seconds\u003dt.second)"},{"line_number":2099,"context_line":"        return td.total_seconds()"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"    def _get_rest_attribute_name(self, zapi_call, zapi_attribute):"},{"line_number":2102,"context_line":""},{"line_number":2103,"context_line":"        snapmirror_mapping \u003d {"},{"line_number":2104,"context_line":"            \u0027relationship-status\u0027: \u0027state\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"646368ea_674af3e3","line":2101,"range":{"start_line":2101,"start_character":8,"end_line":2101,"end_character":32},"in_reply_to":"1256c41b_17aa2e45","updated":"2022-09-08 22:21:47.000000000","message":"Agree, I removed it completely to decouple drivers logic from the apis.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2098,"context_line":"        td \u003d timedelta(hours\u003dt.hour, minutes\u003dt.minute, seconds\u003dt.second)"},{"line_number":2099,"context_line":"        return td.total_seconds()"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"    def _get_rest_attribute_name(self, zapi_call, zapi_attribute):"},{"line_number":2102,"context_line":""},{"line_number":2103,"context_line":"        snapmirror_mapping \u003d {"},{"line_number":2104,"context_line":"            \u0027relationship-status\u0027: \u0027state\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"e4ee309d_f16e689b","line":2101,"range":{"start_line":2101,"start_character":8,"end_line":2101,"end_character":32},"in_reply_to":"3c9b2181_8a692077","updated":"2022-09-08 22:21:47.000000000","message":"Function deleted. See comment above.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2098,"context_line":"        td \u003d timedelta(hours\u003dt.hour, minutes\u003dt.minute, seconds\u003dt.second)"},{"line_number":2099,"context_line":"        return td.total_seconds()"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"    def _get_rest_attribute_name(self, zapi_call, zapi_attribute):"},{"line_number":2102,"context_line":""},{"line_number":2103,"context_line":"        snapmirror_mapping \u003d {"},{"line_number":2104,"context_line":"            \u0027relationship-status\u0027: \u0027state\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"89e74496_4f68602c","line":2101,"range":{"start_line":2101,"start_character":39,"end_line":2101,"end_character":48},"in_reply_to":"4475c544_18ffbb02","updated":"2022-09-08 22:21:47.000000000","message":"Function deleted. See comment above.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2098,"context_line":"        td \u003d timedelta(hours\u003dt.hour, minutes\u003dt.minute, seconds\u003dt.second)"},{"line_number":2099,"context_line":"        return td.total_seconds()"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"    def _get_rest_attribute_name(self, zapi_call, zapi_attribute):"},{"line_number":2102,"context_line":""},{"line_number":2103,"context_line":"        snapmirror_mapping \u003d {"},{"line_number":2104,"context_line":"            \u0027relationship-status\u0027: \u0027state\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"6ff29c59_567f12f3","line":2101,"range":{"start_line":2101,"start_character":50,"end_line":2101,"end_character":64},"in_reply_to":"b7ec0a06_df6a12e1","updated":"2022-09-08 22:21:47.000000000","message":"Function deleted. See comment above.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2112,"context_line":"            \u0027is-healthy\u0027: \u0027healthy\u0027,"},{"line_number":2113,"context_line":"        }"},{"line_number":2114,"context_line":""},{"line_number":2115,"context_line":"        zapi_calls_mapping \u003d {"},{"line_number":2116,"context_line":"            \u0027snapmirror-get-iter\u0027: snapmirror_mapping,"},{"line_number":2117,"context_line":"            \u0027snapmirror-create\u0027: snapmirror_mapping,"},{"line_number":2118,"context_line":"        }"},{"line_number":2119,"context_line":""},{"line_number":2120,"context_line":"        if zapi_attribute \u003d\u003d \u0027*\u0027:"},{"line_number":2121,"context_line":"            return zapi_calls_mapping.get(zapi_call)"}],"source_content_type":"text/x-python","patch_set":7,"id":"201da326_5a1d9a79","line":2118,"range":{"start_line":2115,"start_character":7,"end_line":2118,"end_character":9},"updated":"2022-08-29 00:50:17.000000000","message":"What is it used for ? We don\u0027t want to keep ZAPI calls on REST side, the idea is to have independent REST code as much as possible.\n\nI do understand that you are adding the mapping, since the driver is passing the desired attributes as ZAPI names and you don\u0027t want to change the driver code. That\u0027s fine. The ZAPI calls name are not passing from driver, theses values are not used in anyway. Am I right ?","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2112,"context_line":"            \u0027is-healthy\u0027: \u0027healthy\u0027,"},{"line_number":2113,"context_line":"        }"},{"line_number":2114,"context_line":""},{"line_number":2115,"context_line":"        zapi_calls_mapping \u003d {"},{"line_number":2116,"context_line":"            \u0027snapmirror-get-iter\u0027: snapmirror_mapping,"},{"line_number":2117,"context_line":"            \u0027snapmirror-create\u0027: snapmirror_mapping,"},{"line_number":2118,"context_line":"        }"},{"line_number":2119,"context_line":""},{"line_number":2120,"context_line":"        if zapi_attribute \u003d\u003d \u0027*\u0027:"},{"line_number":2121,"context_line":"            return zapi_calls_mapping.get(zapi_call)"}],"source_content_type":"text/x-python","patch_set":7,"id":"6ea129a2_ddf6c351","line":2118,"range":{"start_line":2115,"start_character":7,"end_line":2118,"end_character":9},"in_reply_to":"201da326_5a1d9a79","updated":"2022-09-08 22:21:47.000000000","message":"Function deleted. See comment above.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2117,"context_line":"            \u0027snapmirror-create\u0027: snapmirror_mapping,"},{"line_number":2118,"context_line":"        }"},{"line_number":2119,"context_line":""},{"line_number":2120,"context_line":"        if zapi_attribute \u003d\u003d \u0027*\u0027:"},{"line_number":2121,"context_line":"            return zapi_calls_mapping.get(zapi_call)"},{"line_number":2122,"context_line":""},{"line_number":2123,"context_line":"        return zapi_calls_mapping.get(zapi_call, {}).get(zapi_attribute)"},{"line_number":2124,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1820d8_a4b3e82e","line":2121,"range":{"start_line":2120,"start_character":8,"end_line":2121,"end_character":52},"updated":"2022-08-29 00:50:17.000000000","message":"actually, this is making the code harder. What does the \"*\" mean ? It is an implicit logic. The caller which uses it look for the \"zapi\" fields names (the map iteself). You could make it easier avoiding the \"*\" logic:\n\n@staticmethod\ndef _get_snapmirror_query_fields_map(self):\n\"\"\" returns the map..\"\"\"\n    return snapmirror_mapping \n\n\ndef _get_snapmirror_query_field(self, field_name):\n   \"\"\" returns the REST field\"\"\"\n   return self._get_snapmirror_query_fields_map.get(field_name)\n   \n \n\nSo, the code that is using the \"*\" would call directly the static method \"_get_snapmirror_query_fields_map\".","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2117,"context_line":"            \u0027snapmirror-create\u0027: snapmirror_mapping,"},{"line_number":2118,"context_line":"        }"},{"line_number":2119,"context_line":""},{"line_number":2120,"context_line":"        if zapi_attribute \u003d\u003d \u0027*\u0027:"},{"line_number":2121,"context_line":"            return zapi_calls_mapping.get(zapi_call)"},{"line_number":2122,"context_line":""},{"line_number":2123,"context_line":"        return zapi_calls_mapping.get(zapi_call, {}).get(zapi_attribute)"},{"line_number":2124,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"6a7cce4c_f03f616e","line":2121,"range":{"start_line":2120,"start_character":8,"end_line":2121,"end_character":52},"in_reply_to":"1f1820d8_a4b3e82e","updated":"2022-09-08 22:21:47.000000000","message":"Function deleted. See comment above.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2122,"context_line":""},{"line_number":2123,"context_line":"        return zapi_calls_mapping.get(zapi_call, {}).get(zapi_attribute)"},{"line_number":2124,"context_line":""},{"line_number":2125,"context_line":"    def _get_rest_value(self, record, rest_endpoint, zapi_attribute):"},{"line_number":2126,"context_line":"        value \u003d None"},{"line_number":2127,"context_line":"        if rest_endpoint \u003d\u003d \u0027/snapmirror/relationships\u0027:"},{"line_number":2128,"context_line":"            if zapi_attribute \u003d\u003d \u0027relationship-status\u0027:"}],"source_content_type":"text/x-python","patch_set":7,"id":"aefeed2a_f0b9403d","line":2125,"range":{"start_line":2125,"start_character":53,"end_line":2125,"end_character":67},"updated":"2022-08-29 00:50:17.000000000","message":"avoid zapi name. we dont want to make REST code zapi dependent","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2122,"context_line":""},{"line_number":2123,"context_line":"        return zapi_calls_mapping.get(zapi_call, {}).get(zapi_attribute)"},{"line_number":2124,"context_line":""},{"line_number":2125,"context_line":"    def _get_rest_value(self, record, rest_endpoint, zapi_attribute):"},{"line_number":2126,"context_line":"        value \u003d None"},{"line_number":2127,"context_line":"        if rest_endpoint \u003d\u003d \u0027/snapmirror/relationships\u0027:"},{"line_number":2128,"context_line":"            if zapi_attribute \u003d\u003d \u0027relationship-status\u0027:"}],"source_content_type":"text/x-python","patch_set":7,"id":"52c970d7_99ce2531","line":2125,"range":{"start_line":2125,"start_character":38,"end_line":2125,"end_character":51},"updated":"2022-08-29 00:50:17.000000000","message":"this parameter is always the same, so it can be removed, making the function easier.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2122,"context_line":""},{"line_number":2123,"context_line":"        return zapi_calls_mapping.get(zapi_call, {}).get(zapi_attribute)"},{"line_number":2124,"context_line":""},{"line_number":2125,"context_line":"    def _get_rest_value(self, record, rest_endpoint, zapi_attribute):"},{"line_number":2126,"context_line":"        value \u003d None"},{"line_number":2127,"context_line":"        if rest_endpoint \u003d\u003d \u0027/snapmirror/relationships\u0027:"},{"line_number":2128,"context_line":"            if zapi_attribute \u003d\u003d \u0027relationship-status\u0027:"}],"source_content_type":"text/x-python","patch_set":7,"id":"992c009d_176124db","line":2125,"range":{"start_line":2125,"start_character":38,"end_line":2125,"end_character":51},"in_reply_to":"52c970d7_99ce2531","updated":"2022-09-08 22:21:47.000000000","message":"Function deleted. See comment above.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2122,"context_line":""},{"line_number":2123,"context_line":"        return zapi_calls_mapping.get(zapi_call, {}).get(zapi_attribute)"},{"line_number":2124,"context_line":""},{"line_number":2125,"context_line":"    def _get_rest_value(self, record, rest_endpoint, zapi_attribute):"},{"line_number":2126,"context_line":"        value \u003d None"},{"line_number":2127,"context_line":"        if rest_endpoint \u003d\u003d \u0027/snapmirror/relationships\u0027:"},{"line_number":2128,"context_line":"            if zapi_attribute \u003d\u003d \u0027relationship-status\u0027:"}],"source_content_type":"text/x-python","patch_set":7,"id":"a8d7aa46_5a14dc81","line":2125,"range":{"start_line":2125,"start_character":53,"end_line":2125,"end_character":67},"in_reply_to":"aefeed2a_f0b9403d","updated":"2022-09-08 22:21:47.000000000","message":"Function deleted. See comment above.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2150,"context_line":""},{"line_number":2151,"context_line":"        return value"},{"line_number":2152,"context_line":""},{"line_number":2153,"context_line":"    def _get_snapmirrors(self, source_vserver\u003dNone, source_volume\u003dNone,"},{"line_number":2154,"context_line":"                         destination_vserver\u003dNone, destination_volume\u003dNone,"},{"line_number":2155,"context_line":"                         desired_attributes\u003dNone):"},{"line_number":2156,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"73ab39db_6cf16c25","line":2153,"range":{"start_line":2153,"start_character":8,"end_line":2153,"end_character":24},"updated":"2022-08-29 00:50:17.000000000","message":"after reading this function, there are several comments regarding making the code easier on REST side and also avoiding making it ZAPI dependent. I know the driver layer is sticking to ZAPI, maybe, we could think about changing the driver layer. Making it more generic. the REST code is very complex to read and maintain. the function itself is not that complexity: get the snapmirrors based on source or/and destination. The \"desired_attirbutes\" that is causing the issue. We could think in a better way of dealing with it.\n\nWDYT ?","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2150,"context_line":""},{"line_number":2151,"context_line":"        return value"},{"line_number":2152,"context_line":""},{"line_number":2153,"context_line":"    def _get_snapmirrors(self, source_vserver\u003dNone, source_volume\u003dNone,"},{"line_number":2154,"context_line":"                         destination_vserver\u003dNone, destination_volume\u003dNone,"},{"line_number":2155,"context_line":"                         desired_attributes\u003dNone):"},{"line_number":2156,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"8951af90_d1409ba0","line":2153,"range":{"start_line":2153,"start_character":8,"end_line":2153,"end_character":24},"in_reply_to":"73ab39db_6cf16c25","updated":"2022-09-08 22:21:47.000000000","message":"Agree. See comment above.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2158,"context_line":"        if desired_attributes:"},{"line_number":2159,"context_line":"            for attribute in desired_attributes:"},{"line_number":2160,"context_line":"                mapped_attribute \u003d self._get_rest_attribute_name("},{"line_number":2161,"context_line":"                    \u0027snapmirror-get-iter\u0027, attribute)"},{"line_number":2162,"context_line":"                mapped_attribute \u003d (mapped_attribute if mapped_attribute"},{"line_number":2163,"context_line":"                                    else attribute)"},{"line_number":2164,"context_line":"                if mapped_attribute not in fields:"}],"source_content_type":"text/x-python","patch_set":7,"id":"cfa6f665_f2de03e8","line":2161,"range":{"start_line":2161,"start_character":21,"end_line":2161,"end_character":39},"updated":"2022-08-29 00:50:17.000000000","message":"it makes our REST code ZAPI dependent.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2158,"context_line":"        if desired_attributes:"},{"line_number":2159,"context_line":"            for attribute in desired_attributes:"},{"line_number":2160,"context_line":"                mapped_attribute \u003d self._get_rest_attribute_name("},{"line_number":2161,"context_line":"                    \u0027snapmirror-get-iter\u0027, attribute)"},{"line_number":2162,"context_line":"                mapped_attribute \u003d (mapped_attribute if mapped_attribute"},{"line_number":2163,"context_line":"                                    else attribute)"},{"line_number":2164,"context_line":"                if mapped_attribute not in fields:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fd0d8e04_5559666f","line":2161,"range":{"start_line":2161,"start_character":21,"end_line":2161,"end_character":39},"in_reply_to":"cfa6f665_f2de03e8","updated":"2022-09-08 22:21:47.000000000","message":"See comment above.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2164,"context_line":"                if mapped_attribute not in fields:"},{"line_number":2165,"context_line":"                    fields.append(mapped_attribute)"},{"line_number":2166,"context_line":"        else:"},{"line_number":2167,"context_line":"            fields.append(\u0027**\u0027)"},{"line_number":2168,"context_line":""},{"line_number":2169,"context_line":"        query \u003d {}"},{"line_number":2170,"context_line":"        query[\u0027fields\u0027] \u003d \u0027{}\u0027.format(\u0027,\u0027.join(f for f in fields))"}],"source_content_type":"text/x-python","patch_set":7,"id":"511ed1c7_600e5bb4","line":2167,"range":{"start_line":2167,"start_character":11,"end_line":2167,"end_character":31},"updated":"2022-08-29 00:50:17.000000000","message":"why is it used for ? when the desired attributes is not informed, it is not returning all fields, it is only returning the fields that has a ZAPI map. We should look at driver layer and see what it does when calling with no desired attributes to better fit this scenario on client layer.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2164,"context_line":"                if mapped_attribute not in fields:"},{"line_number":2165,"context_line":"                    fields.append(mapped_attribute)"},{"line_number":2166,"context_line":"        else:"},{"line_number":2167,"context_line":"            fields.append(\u0027**\u0027)"},{"line_number":2168,"context_line":""},{"line_number":2169,"context_line":"        query \u003d {}"},{"line_number":2170,"context_line":"        query[\u0027fields\u0027] \u003d \u0027{}\u0027.format(\u0027,\u0027.join(f for f in fields))"}],"source_content_type":"text/x-python","patch_set":7,"id":"e5c74b83_646be768","line":2167,"range":{"start_line":2167,"start_character":11,"end_line":2167,"end_character":31},"in_reply_to":"511ed1c7_600e5bb4","updated":"2022-09-08 22:21:47.000000000","message":"See comment above.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2169,"context_line":"        query \u003d {}"},{"line_number":2170,"context_line":"        query[\u0027fields\u0027] \u003d \u0027{}\u0027.format(\u0027,\u0027.join(f for f in fields))"},{"line_number":2171,"context_line":""},{"line_number":2172,"context_line":"        query_src_vol \u003d source_volume if source_volume else \u0027*\u0027"},{"line_number":2173,"context_line":"        query_src_vserver \u003d source_vserver if source_vserver else \u0027*\u0027"},{"line_number":2174,"context_line":"        query[\u0027source.path\u0027] \u003d query_src_vserver + \u0027:\u0027 + query_src_vol"},{"line_number":2175,"context_line":"        query[\u0027source.svm.name\u0027] \u003d query_src_vserver"},{"line_number":2176,"context_line":""},{"line_number":2177,"context_line":"        query_dst_vol \u003d destination_volume if destination_volume else \u0027*\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"878a9bab_6019c444","line":2174,"range":{"start_line":2172,"start_character":8,"end_line":2174,"end_character":70},"updated":"2022-08-29 00:50:17.000000000","message":"you could set the default param as \u0027*\u0027, instead of None, so the code does not require this if condition:\n\ndef _get_snapmirrors(self, source_vserver\u003d\u0027*\u0027, source_volume\u003d\u0027*\u0027, \n                      destionation_vserver\u003d\u0027*\u0027, destination_volume\u003d\u0027*\u0027,\n                      desisred_attriubutes\u003dNone):\n                      \n                      \n....\nquery[\u0027source_path\u0027] \u003d f\u0027{source_vserver}:{source_volume}\u0027\nquery[\u0027destination_path\u0027] \u003d f\u0027{destination_vserver}:{destination_volume}\u0027\n....\n\n\nImportant thing about adding the default as \u0027*\u0027: please, add a function description comment explaining what the \"*\" means. Example:\n\ndef _get_snapmirrors():\n\"\"\"Get the snapmirros of source/destination volume.\n\n@param source_vserver: the source vserver name, if nor informed the \"*\" is used, matching any vserver on the storage\n@param source_volume: the source volume name, if nor informed the \"*\" is used, matching any volume on the storage\n..\n..\n\"\"\"","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"dda9a4a57e2af6b518844b76381fb4ce0b914242","unresolved":false,"context_lines":[{"line_number":2169,"context_line":"        query \u003d {}"},{"line_number":2170,"context_line":"        query[\u0027fields\u0027] \u003d \u0027{}\u0027.format(\u0027,\u0027.join(f for f in fields))"},{"line_number":2171,"context_line":""},{"line_number":2172,"context_line":"        query_src_vol \u003d source_volume if source_volume else \u0027*\u0027"},{"line_number":2173,"context_line":"        query_src_vserver \u003d source_vserver if source_vserver else \u0027*\u0027"},{"line_number":2174,"context_line":"        query[\u0027source.path\u0027] \u003d query_src_vserver + \u0027:\u0027 + query_src_vol"},{"line_number":2175,"context_line":"        query[\u0027source.svm.name\u0027] \u003d query_src_vserver"},{"line_number":2176,"context_line":""},{"line_number":2177,"context_line":"        query_dst_vol \u003d destination_volume if destination_volume else \u0027*\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"15f15f81_0aec18f7","line":2174,"range":{"start_line":2172,"start_character":8,"end_line":2174,"end_character":70},"in_reply_to":"878a9bab_6019c444","updated":"2022-09-09 00:37:25.000000000","message":"after some internally discussion, we agree that keeping as default None would be better.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2172,"context_line":"        query_src_vol \u003d source_volume if source_volume else \u0027*\u0027"},{"line_number":2173,"context_line":"        query_src_vserver \u003d source_vserver if source_vserver else \u0027*\u0027"},{"line_number":2174,"context_line":"        query[\u0027source.path\u0027] \u003d query_src_vserver + \u0027:\u0027 + query_src_vol"},{"line_number":2175,"context_line":"        query[\u0027source.svm.name\u0027] \u003d query_src_vserver"},{"line_number":2176,"context_line":""},{"line_number":2177,"context_line":"        query_dst_vol \u003d destination_volume if destination_volume else \u0027*\u0027"},{"line_number":2178,"context_line":"        query_dst_vserver \u003d destination_vserver if destination_vserver else \u0027*\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"b578c457_db345bcc","line":2175,"range":{"start_line":2175,"start_character":8,"end_line":2175,"end_character":52},"updated":"2022-08-29 00:50:17.000000000","message":"why is this field required ? If your setting for the \"source_path\" the vserver, here it is duplicated query info. could it be removed ?","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"dda9a4a57e2af6b518844b76381fb4ce0b914242","unresolved":false,"context_lines":[{"line_number":2172,"context_line":"        query_src_vol \u003d source_volume if source_volume else \u0027*\u0027"},{"line_number":2173,"context_line":"        query_src_vserver \u003d source_vserver if source_vserver else \u0027*\u0027"},{"line_number":2174,"context_line":"        query[\u0027source.path\u0027] \u003d query_src_vserver + \u0027:\u0027 + query_src_vol"},{"line_number":2175,"context_line":"        query[\u0027source.svm.name\u0027] \u003d query_src_vserver"},{"line_number":2176,"context_line":""},{"line_number":2177,"context_line":"        query_dst_vol \u003d destination_volume if destination_volume else \u0027*\u0027"},{"line_number":2178,"context_line":"        query_dst_vserver \u003d destination_vserver if destination_vserver else \u0027*\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"bacb7490_b11fa3fe","line":2175,"range":{"start_line":2175,"start_character":8,"end_line":2175,"end_character":52},"in_reply_to":"b578c457_db345bcc","updated":"2022-09-09 00:37:25.000000000","message":"done next patch","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4972a62a6f3766398063a2d89a9a836d87391607","unresolved":false,"context_lines":[{"line_number":2172,"context_line":"        query_src_vol \u003d source_volume if source_volume else \u0027*\u0027"},{"line_number":2173,"context_line":"        query_src_vserver \u003d source_vserver if source_vserver else \u0027*\u0027"},{"line_number":2174,"context_line":"        query[\u0027source.path\u0027] \u003d query_src_vserver + \u0027:\u0027 + query_src_vol"},{"line_number":2175,"context_line":"        query[\u0027source.svm.name\u0027] \u003d query_src_vserver"},{"line_number":2176,"context_line":""},{"line_number":2177,"context_line":"        query_dst_vol \u003d destination_volume if destination_volume else \u0027*\u0027"},{"line_number":2178,"context_line":"        query_dst_vserver \u003d destination_vserver if destination_vserver else \u0027*\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba81e421_1c5a86d4","line":2175,"range":{"start_line":2175,"start_character":8,"end_line":2175,"end_character":52},"in_reply_to":"bacb7490_b11fa3fe","updated":"2022-09-09 00:47:54.000000000","message":"next patchset*","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2174,"context_line":"        query[\u0027source.path\u0027] \u003d query_src_vserver + \u0027:\u0027 + query_src_vol"},{"line_number":2175,"context_line":"        query[\u0027source.svm.name\u0027] \u003d query_src_vserver"},{"line_number":2176,"context_line":""},{"line_number":2177,"context_line":"        query_dst_vol \u003d destination_volume if destination_volume else \u0027*\u0027"},{"line_number":2178,"context_line":"        query_dst_vserver \u003d destination_vserver if destination_vserver else \u0027*\u0027"},{"line_number":2179,"context_line":"        query[\u0027destination.path\u0027] \u003d query_dst_vserver + \u0027:\u0027 + query_dst_vol"},{"line_number":2180,"context_line":"        query[\u0027destination.svm.name\u0027] \u003d query_dst_vserver"},{"line_number":2181,"context_line":""},{"line_number":2182,"context_line":"        response \u003d self.send_request("}],"source_content_type":"text/x-python","patch_set":7,"id":"25154a6b_d8443b3e","line":2179,"range":{"start_line":2177,"start_character":8,"end_line":2179,"end_character":75},"updated":"2022-08-29 00:50:17.000000000","message":"same about using the correct default parameter value","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"3026b2459a86e1e1e5d1fce6faecd13cc6f2ba8e","unresolved":true,"context_lines":[{"line_number":2174,"context_line":"        query[\u0027source.path\u0027] \u003d query_src_vserver + \u0027:\u0027 + query_src_vol"},{"line_number":2175,"context_line":"        query[\u0027source.svm.name\u0027] \u003d query_src_vserver"},{"line_number":2176,"context_line":""},{"line_number":2177,"context_line":"        query_dst_vol \u003d destination_volume if destination_volume else \u0027*\u0027"},{"line_number":2178,"context_line":"        query_dst_vserver \u003d destination_vserver if destination_vserver else \u0027*\u0027"},{"line_number":2179,"context_line":"        query[\u0027destination.path\u0027] \u003d query_dst_vserver + \u0027:\u0027 + query_dst_vol"},{"line_number":2180,"context_line":"        query[\u0027destination.svm.name\u0027] \u003d query_dst_vserver"},{"line_number":2181,"context_line":""},{"line_number":2182,"context_line":"        response \u003d self.send_request("}],"source_content_type":"text/x-python","patch_set":7,"id":"33f979a5_7e4ac3af","line":2179,"range":{"start_line":2177,"start_character":8,"end_line":2179,"end_character":75},"in_reply_to":"25154a6b_d8443b3e","updated":"2022-09-08 22:46:27.000000000","message":"As we discussed the idea proposed here was to keep it consistent with ZAPI client signatures that allows to restrict or open the queries by setting None to the specific parameters. Mainting these function signatures is important to keep it consistent with other functions that works in the same way.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3ebf316fd0da8eb33ce62a1016245d0642ede152","unresolved":false,"context_lines":[{"line_number":2174,"context_line":"        query[\u0027source.path\u0027] \u003d query_src_vserver + \u0027:\u0027 + query_src_vol"},{"line_number":2175,"context_line":"        query[\u0027source.svm.name\u0027] \u003d query_src_vserver"},{"line_number":2176,"context_line":""},{"line_number":2177,"context_line":"        query_dst_vol \u003d destination_volume if destination_volume else \u0027*\u0027"},{"line_number":2178,"context_line":"        query_dst_vserver \u003d destination_vserver if destination_vserver else \u0027*\u0027"},{"line_number":2179,"context_line":"        query[\u0027destination.path\u0027] \u003d query_dst_vserver + \u0027:\u0027 + query_dst_vol"},{"line_number":2180,"context_line":"        query[\u0027destination.svm.name\u0027] \u003d query_dst_vserver"},{"line_number":2181,"context_line":""},{"line_number":2182,"context_line":"        response \u003d self.send_request("}],"source_content_type":"text/x-python","patch_set":7,"id":"8291af79_83449c4e","line":2179,"range":{"start_line":2177,"start_character":8,"end_line":2179,"end_character":75},"in_reply_to":"33f979a5_7e4ac3af","updated":"2022-09-09 00:12:31.000000000","message":"Ack","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2177,"context_line":"        query_dst_vol \u003d destination_volume if destination_volume else \u0027*\u0027"},{"line_number":2178,"context_line":"        query_dst_vserver \u003d destination_vserver if destination_vserver else \u0027*\u0027"},{"line_number":2179,"context_line":"        query[\u0027destination.path\u0027] \u003d query_dst_vserver + \u0027:\u0027 + query_dst_vol"},{"line_number":2180,"context_line":"        query[\u0027destination.svm.name\u0027] \u003d query_dst_vserver"},{"line_number":2181,"context_line":""},{"line_number":2182,"context_line":"        response \u003d self.send_request("},{"line_number":2183,"context_line":"            \u0027/snapmirror/relationships\u0027, \u0027get\u0027, query\u003dquery)"}],"source_content_type":"text/x-python","patch_set":7,"id":"f27c3eb2_2988b4fb","line":2180,"range":{"start_line":2180,"start_character":8,"end_line":2180,"end_character":57},"updated":"2022-08-29 00:50:17.000000000","message":"same about duplicated query info","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"4972a62a6f3766398063a2d89a9a836d87391607","unresolved":false,"context_lines":[{"line_number":2177,"context_line":"        query_dst_vol \u003d destination_volume if destination_volume else \u0027*\u0027"},{"line_number":2178,"context_line":"        query_dst_vserver \u003d destination_vserver if destination_vserver else \u0027*\u0027"},{"line_number":2179,"context_line":"        query[\u0027destination.path\u0027] \u003d query_dst_vserver + \u0027:\u0027 + query_dst_vol"},{"line_number":2180,"context_line":"        query[\u0027destination.svm.name\u0027] \u003d query_dst_vserver"},{"line_number":2181,"context_line":""},{"line_number":2182,"context_line":"        response \u003d self.send_request("},{"line_number":2183,"context_line":"            \u0027/snapmirror/relationships\u0027, \u0027get\u0027, query\u003dquery)"}],"source_content_type":"text/x-python","patch_set":7,"id":"04b3fe25_88f54f73","line":2180,"range":{"start_line":2180,"start_character":8,"end_line":2180,"end_character":57},"in_reply_to":"ac8fe40c_955f3b3c","updated":"2022-09-09 00:47:54.000000000","message":"next patchset*","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"dda9a4a57e2af6b518844b76381fb4ce0b914242","unresolved":false,"context_lines":[{"line_number":2177,"context_line":"        query_dst_vol \u003d destination_volume if destination_volume else \u0027*\u0027"},{"line_number":2178,"context_line":"        query_dst_vserver \u003d destination_vserver if destination_vserver else \u0027*\u0027"},{"line_number":2179,"context_line":"        query[\u0027destination.path\u0027] \u003d query_dst_vserver + \u0027:\u0027 + query_dst_vol"},{"line_number":2180,"context_line":"        query[\u0027destination.svm.name\u0027] \u003d query_dst_vserver"},{"line_number":2181,"context_line":""},{"line_number":2182,"context_line":"        response \u003d self.send_request("},{"line_number":2183,"context_line":"            \u0027/snapmirror/relationships\u0027, \u0027get\u0027, query\u003dquery)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ac8fe40c_955f3b3c","line":2180,"range":{"start_line":2180,"start_character":8,"end_line":2180,"end_character":57},"in_reply_to":"f27c3eb2_2988b4fb","updated":"2022-09-09 00:37:25.000000000","message":"done next patch","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2184,"context_line":""},{"line_number":2185,"context_line":"        records \u003d response.get(\u0027records\u0027, [])"},{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":"        # Maps back rest field names to zapi names"},{"line_number":2188,"context_line":"        zapi_attributes \u003d self._get_rest_attribute_name("},{"line_number":2189,"context_line":"            \u0027snapmirror-get-iter\u0027, \u0027*\u0027)"},{"line_number":2190,"context_line":"        for record in records:"},{"line_number":2191,"context_line":"            for zapi_attribute in zapi_attributes.keys():"},{"line_number":2192,"context_line":"                value \u003d self._get_rest_value("},{"line_number":2193,"context_line":"                    record, \u0027/snapmirror/relationships\u0027, zapi_attribute)"},{"line_number":2194,"context_line":"                if value:"},{"line_number":2195,"context_line":"                    record[zapi_attribute] \u003d value"},{"line_number":2196,"context_line":""},{"line_number":2197,"context_line":"        return records"},{"line_number":2198,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"0974690d_38fc7faa","line":2195,"range":{"start_line":2187,"start_character":8,"end_line":2195,"end_character":50},"updated":"2022-08-29 00:50:17.000000000","message":"too ZAPI dependent and complex code","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2184,"context_line":""},{"line_number":2185,"context_line":"        records \u003d response.get(\u0027records\u0027, [])"},{"line_number":2186,"context_line":""},{"line_number":2187,"context_line":"        # Maps back rest field names to zapi names"},{"line_number":2188,"context_line":"        zapi_attributes \u003d self._get_rest_attribute_name("},{"line_number":2189,"context_line":"            \u0027snapmirror-get-iter\u0027, \u0027*\u0027)"},{"line_number":2190,"context_line":"        for record in records:"},{"line_number":2191,"context_line":"            for zapi_attribute in zapi_attributes.keys():"},{"line_number":2192,"context_line":"                value \u003d self._get_rest_value("},{"line_number":2193,"context_line":"                    record, \u0027/snapmirror/relationships\u0027, zapi_attribute)"},{"line_number":2194,"context_line":"                if value:"},{"line_number":2195,"context_line":"                    record[zapi_attribute] \u003d value"},{"line_number":2196,"context_line":""},{"line_number":2197,"context_line":"        return records"},{"line_number":2198,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"24f66795_244337ca","line":2195,"range":{"start_line":2187,"start_character":8,"end_line":2195,"end_character":50},"in_reply_to":"0974690d_38fc7faa","updated":"2022-09-08 22:21:47.000000000","message":"See comment above.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2196,"context_line":""},{"line_number":2197,"context_line":"        return records"},{"line_number":2198,"context_line":""},{"line_number":2199,"context_line":"    def _ensure_snapmirror_v2(self):"},{"line_number":2200,"context_line":"        \"\"\"Verify support for SnapMirror control plane v2.\"\"\""},{"line_number":2201,"context_line":"        if not self.features.SNAPMIRROR_V2:"},{"line_number":2202,"context_line":"            msg \u003d _(\u0027SnapMirror features require Data ONTAP 8.2 or later.\u0027)"},{"line_number":2203,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":2204,"context_line":""},{"line_number":2205,"context_line":"    def get_snapmirrors(self, source_vserver, source_volume,"},{"line_number":2206,"context_line":"                        destination_vserver, destination_volume,"}],"source_content_type":"text/x-python","patch_set":7,"id":"0f5dfed0_9cca6d54","line":2203,"range":{"start_line":2199,"start_character":3,"end_line":2203,"end_character":53},"updated":"2022-08-29 00:50:17.000000000","message":"this function is not required. It can be removed, since REST only works with 9.11.1 or later, so the SNAPMIRROR feature is always available. right ?","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2196,"context_line":""},{"line_number":2197,"context_line":"        return records"},{"line_number":2198,"context_line":""},{"line_number":2199,"context_line":"    def _ensure_snapmirror_v2(self):"},{"line_number":2200,"context_line":"        \"\"\"Verify support for SnapMirror control plane v2.\"\"\""},{"line_number":2201,"context_line":"        if not self.features.SNAPMIRROR_V2:"},{"line_number":2202,"context_line":"            msg \u003d _(\u0027SnapMirror features require Data ONTAP 8.2 or later.\u0027)"},{"line_number":2203,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":2204,"context_line":""},{"line_number":2205,"context_line":"    def get_snapmirrors(self, source_vserver, source_volume,"},{"line_number":2206,"context_line":"                        destination_vserver, destination_volume,"}],"source_content_type":"text/x-python","patch_set":7,"id":"baeaa582_3a443b17","line":2203,"range":{"start_line":2199,"start_character":3,"end_line":2203,"end_character":53},"in_reply_to":"0f5dfed0_9cca6d54","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2225,"context_line":"                          destination_vserver, destination_volume,"},{"line_number":2226,"context_line":"                          schedule\u003dNone, policy\u003dNone,"},{"line_number":2227,"context_line":"                          relationship_type\u003d\u0027data_protection\u0027):"},{"line_number":2228,"context_line":"        \"\"\"Creates a SnapMirror relationship (cDOT 8.2 or later only)."},{"line_number":2229,"context_line":""},{"line_number":2230,"context_line":"        The schedule and relationship arguments are kept to avoid breaking"},{"line_number":2231,"context_line":"        the API used by data_motion, but are not used on the REST API."}],"source_content_type":"text/x-python","patch_set":7,"id":"ad77fa3a_4ab62eef","line":2228,"range":{"start_line":2228,"start_character":45,"end_line":2228,"end_character":68},"updated":"2022-08-29 00:50:17.000000000","message":"not required, the REST driver will work only with 9.11.1. This information is implicit.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2225,"context_line":"                          destination_vserver, destination_volume,"},{"line_number":2226,"context_line":"                          schedule\u003dNone, policy\u003dNone,"},{"line_number":2227,"context_line":"                          relationship_type\u003d\u0027data_protection\u0027):"},{"line_number":2228,"context_line":"        \"\"\"Creates a SnapMirror relationship (cDOT 8.2 or later only)."},{"line_number":2229,"context_line":""},{"line_number":2230,"context_line":"        The schedule and relationship arguments are kept to avoid breaking"},{"line_number":2231,"context_line":"        the API used by data_motion, but are not used on the REST API."}],"source_content_type":"text/x-python","patch_set":7,"id":"4b902988_3cdc58dd","line":2228,"range":{"start_line":2228,"start_character":45,"end_line":2228,"end_character":68},"in_reply_to":"ad77fa3a_4ab62eef","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2227,"context_line":"                          relationship_type\u003d\u0027data_protection\u0027):"},{"line_number":2228,"context_line":"        \"\"\"Creates a SnapMirror relationship (cDOT 8.2 or later only)."},{"line_number":2229,"context_line":""},{"line_number":2230,"context_line":"        The schedule and relationship arguments are kept to avoid breaking"},{"line_number":2231,"context_line":"        the API used by data_motion, but are not used on the REST API."},{"line_number":2232,"context_line":""},{"line_number":2233,"context_line":"        The schedule is part of the policy associated the relationship and the"}],"source_content_type":"text/x-python","patch_set":7,"id":"9d94a08e_114e9b23","line":2230,"range":{"start_line":2230,"start_character":25,"end_line":2230,"end_character":47},"updated":"2022-08-29 00:50:17.000000000","message":"relationship type","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2227,"context_line":"                          relationship_type\u003d\u0027data_protection\u0027):"},{"line_number":2228,"context_line":"        \"\"\"Creates a SnapMirror relationship (cDOT 8.2 or later only)."},{"line_number":2229,"context_line":""},{"line_number":2230,"context_line":"        The schedule and relationship arguments are kept to avoid breaking"},{"line_number":2231,"context_line":"        the API used by data_motion, but are not used on the REST API."},{"line_number":2232,"context_line":""},{"line_number":2233,"context_line":"        The schedule is part of the policy associated the relationship and the"}],"source_content_type":"text/x-python","patch_set":7,"id":"ebc13e70_41fd31a9","line":2230,"range":{"start_line":2230,"start_character":25,"end_line":2230,"end_character":47},"in_reply_to":"9d94a08e_114e9b23","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2231,"context_line":"        the API used by data_motion, but are not used on the REST API."},{"line_number":2232,"context_line":""},{"line_number":2233,"context_line":"        The schedule is part of the policy associated the relationship and the"},{"line_number":2234,"context_line":"        relationship_type will be ignored because XDP are the only types"},{"line_number":2235,"context_line":"        supported through REST API."},{"line_number":2236,"context_line":"        \"\"\""},{"line_number":2237,"context_line":"        self._ensure_snapmirror_v2()"}],"source_content_type":"text/x-python","patch_set":7,"id":"eae544de_9df56a87","line":2234,"range":{"start_line":2234,"start_character":26,"end_line":2234,"end_character":33},"updated":"2022-08-29 00:50:17.000000000","message":"is","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2231,"context_line":"        the API used by data_motion, but are not used on the REST API."},{"line_number":2232,"context_line":""},{"line_number":2233,"context_line":"        The schedule is part of the policy associated the relationship and the"},{"line_number":2234,"context_line":"        relationship_type will be ignored because XDP are the only types"},{"line_number":2235,"context_line":"        supported through REST API."},{"line_number":2236,"context_line":"        \"\"\""},{"line_number":2237,"context_line":"        self._ensure_snapmirror_v2()"}],"source_content_type":"text/x-python","patch_set":7,"id":"a92491ea_80377f10","line":2234,"range":{"start_line":2234,"start_character":67,"end_line":2234,"end_character":72},"updated":"2022-08-29 00:50:17.000000000","message":"type","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2231,"context_line":"        the API used by data_motion, but are not used on the REST API."},{"line_number":2232,"context_line":""},{"line_number":2233,"context_line":"        The schedule is part of the policy associated the relationship and the"},{"line_number":2234,"context_line":"        relationship_type will be ignored because XDP are the only types"},{"line_number":2235,"context_line":"        supported through REST API."},{"line_number":2236,"context_line":"        \"\"\""},{"line_number":2237,"context_line":"        self._ensure_snapmirror_v2()"}],"source_content_type":"text/x-python","patch_set":7,"id":"a4751892_beb82901","line":2234,"range":{"start_line":2234,"start_character":67,"end_line":2234,"end_character":72},"in_reply_to":"a92491ea_80377f10","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2231,"context_line":"        the API used by data_motion, but are not used on the REST API."},{"line_number":2232,"context_line":""},{"line_number":2233,"context_line":"        The schedule is part of the policy associated the relationship and the"},{"line_number":2234,"context_line":"        relationship_type will be ignored because XDP are the only types"},{"line_number":2235,"context_line":"        supported through REST API."},{"line_number":2236,"context_line":"        \"\"\""},{"line_number":2237,"context_line":"        self._ensure_snapmirror_v2()"}],"source_content_type":"text/x-python","patch_set":7,"id":"4f460682_8709ea92","line":2234,"range":{"start_line":2234,"start_character":26,"end_line":2234,"end_character":33},"in_reply_to":"eae544de_9df56a87","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2267,"context_line":"                                          desired_attributes\u003d[\u0027uuid\u0027])"},{"line_number":2268,"context_line":""},{"line_number":2269,"context_line":"        if len(snapmirror) !\u003d 1:"},{"line_number":2270,"context_line":"            msg \u003d _(\u0027Failed to get information for relationship.\u0027)"},{"line_number":2271,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":2272,"context_line":""},{"line_number":2273,"context_line":"        uuid \u003d snapmirror[0][\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"8ec302cd_05762c37","line":2270,"range":{"start_line":2270,"start_character":55,"end_line":2270,"end_character":66},"updated":"2022-08-29 00:50:17.000000000","message":"please add the source/destination info, it will help the user to identify which relationship is not present on storage side.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2267,"context_line":"                                          desired_attributes\u003d[\u0027uuid\u0027])"},{"line_number":2268,"context_line":""},{"line_number":2269,"context_line":"        if len(snapmirror) !\u003d 1:"},{"line_number":2270,"context_line":"            msg \u003d _(\u0027Failed to get information for relationship.\u0027)"},{"line_number":2271,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":2272,"context_line":""},{"line_number":2273,"context_line":"        uuid \u003d snapmirror[0][\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"65c0c5dc_b56f88d2","line":2270,"range":{"start_line":2270,"start_character":55,"end_line":2270,"end_character":66},"in_reply_to":"8ec302cd_05762c37","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2290,"context_line":"    def initialize_snapmirror(self, source_vserver, source_volume,"},{"line_number":2291,"context_line":"                              destination_vserver, destination_volume,"},{"line_number":2292,"context_line":"                              source_snapshot\u003dNone, transfer_priority\u003dNone):"},{"line_number":2293,"context_line":"        \"\"\"Initializes a SnapMirror relationship (cDOT 8.2 or later only).\"\"\""},{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":"        # TODO(angiolucci): Trigger a geometry exception to be caught by"},{"line_number":2296,"context_line":"        #       data_motion. This error is raised when using ZAPI with"}],"source_content_type":"text/x-python","patch_set":7,"id":"85a58518_3270e0d6","line":2293,"range":{"start_line":2293,"start_character":50,"end_line":2293,"end_character":71},"updated":"2022-08-29 00:50:17.000000000","message":"not required on RST, it is implicit.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2290,"context_line":"    def initialize_snapmirror(self, source_vserver, source_volume,"},{"line_number":2291,"context_line":"                              destination_vserver, destination_volume,"},{"line_number":2292,"context_line":"                              source_snapshot\u003dNone, transfer_priority\u003dNone):"},{"line_number":2293,"context_line":"        \"\"\"Initializes a SnapMirror relationship (cDOT 8.2 or later only).\"\"\""},{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":"        # TODO(angiolucci): Trigger a geometry exception to be caught by"},{"line_number":2296,"context_line":"        #       data_motion. This error is raised when using ZAPI with"}],"source_content_type":"text/x-python","patch_set":7,"id":"e35f2fa5_5a201282","line":2293,"range":{"start_line":2293,"start_character":50,"end_line":2293,"end_character":71},"in_reply_to":"85a58518_3270e0d6","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2292,"context_line":"                              source_snapshot\u003dNone, transfer_priority\u003dNone):"},{"line_number":2293,"context_line":"        \"\"\"Initializes a SnapMirror relationship (cDOT 8.2 or later only).\"\"\""},{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":"        # TODO(angiolucci): Trigger a geometry exception to be caught by"},{"line_number":2296,"context_line":"        #       data_motion. This error is raised when using ZAPI with"},{"line_number":2297,"context_line":"        #       different volume component numbers, but in REST, the job must"},{"line_number":2298,"context_line":"        #       be checked sometimes before that error occurs."}],"source_content_type":"text/x-python","patch_set":7,"id":"510002f2_989c64db","line":2295,"range":{"start_line":2295,"start_character":27,"end_line":2295,"end_character":60},"updated":"2022-08-29 00:50:17.000000000","message":"Would this TODO affect any driver feature ? Why has it not been done yet ?","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"dda9a4a57e2af6b518844b76381fb4ce0b914242","unresolved":false,"context_lines":[{"line_number":2292,"context_line":"                              source_snapshot\u003dNone, transfer_priority\u003dNone):"},{"line_number":2293,"context_line":"        \"\"\"Initializes a SnapMirror relationship (cDOT 8.2 or later only).\"\"\""},{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":"        # TODO(angiolucci): Trigger a geometry exception to be caught by"},{"line_number":2296,"context_line":"        #       data_motion. This error is raised when using ZAPI with"},{"line_number":2297,"context_line":"        #       different volume component numbers, but in REST, the job must"},{"line_number":2298,"context_line":"        #       be checked sometimes before that error occurs."}],"source_content_type":"text/x-python","patch_set":7,"id":"1cdab292_cc8209d0","line":2295,"range":{"start_line":2295,"start_character":27,"end_line":2295,"end_character":60},"in_reply_to":"510002f2_989c64db","updated":"2022-09-09 00:37:25.000000000","message":"Ack","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2293,"context_line":"        \"\"\"Initializes a SnapMirror relationship (cDOT 8.2 or later only).\"\"\""},{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":"        # TODO(angiolucci): Trigger a geometry exception to be caught by"},{"line_number":2296,"context_line":"        #       data_motion. This error is raised when using ZAPI with"},{"line_number":2297,"context_line":"        #       different volume component numbers, but in REST, the job must"},{"line_number":2298,"context_line":"        #       be checked sometimes before that error occurs."},{"line_number":2299,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"93252035_4f11088d","line":2296,"range":{"start_line":2296,"start_character":10,"end_line":2296,"end_character":16},"updated":"2022-08-29 00:50:17.000000000","message":"remove space","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2293,"context_line":"        \"\"\"Initializes a SnapMirror relationship (cDOT 8.2 or later only).\"\"\""},{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":"        # TODO(angiolucci): Trigger a geometry exception to be caught by"},{"line_number":2296,"context_line":"        #       data_motion. This error is raised when using ZAPI with"},{"line_number":2297,"context_line":"        #       different volume component numbers, but in REST, the job must"},{"line_number":2298,"context_line":"        #       be checked sometimes before that error occurs."},{"line_number":2299,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a81e73e_ce045ff5","line":2296,"range":{"start_line":2296,"start_character":10,"end_line":2296,"end_character":16},"in_reply_to":"93252035_4f11088d","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":"        # TODO(angiolucci): Trigger a geometry exception to be caught by"},{"line_number":2296,"context_line":"        #       data_motion. This error is raised when using ZAPI with"},{"line_number":2297,"context_line":"        #       different volume component numbers, but in REST, the job must"},{"line_number":2298,"context_line":"        #       be checked sometimes before that error occurs."},{"line_number":2299,"context_line":""},{"line_number":2300,"context_line":"        return self._set_snapmirror_state("}],"source_content_type":"text/x-python","patch_set":7,"id":"fed1e3b3_db212b5c","line":2297,"range":{"start_line":2297,"start_character":10,"end_line":2297,"end_character":15},"updated":"2022-08-29 00:50:17.000000000","message":"remove space","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2294,"context_line":""},{"line_number":2295,"context_line":"        # TODO(angiolucci): Trigger a geometry exception to be caught by"},{"line_number":2296,"context_line":"        #       data_motion. This error is raised when using ZAPI with"},{"line_number":2297,"context_line":"        #       different volume component numbers, but in REST, the job must"},{"line_number":2298,"context_line":"        #       be checked sometimes before that error occurs."},{"line_number":2299,"context_line":""},{"line_number":2300,"context_line":"        return self._set_snapmirror_state("}],"source_content_type":"text/x-python","patch_set":7,"id":"69437e50_737e2a1c","line":2297,"range":{"start_line":2297,"start_character":10,"end_line":2297,"end_character":15},"in_reply_to":"fed1e3b3_db212b5c","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2295,"context_line":"        # TODO(angiolucci): Trigger a geometry exception to be caught by"},{"line_number":2296,"context_line":"        #       data_motion. This error is raised when using ZAPI with"},{"line_number":2297,"context_line":"        #       different volume component numbers, but in REST, the job must"},{"line_number":2298,"context_line":"        #       be checked sometimes before that error occurs."},{"line_number":2299,"context_line":""},{"line_number":2300,"context_line":"        return self._set_snapmirror_state("},{"line_number":2301,"context_line":"            \u0027snapmirrored\u0027, source_vserver, source_volume,"}],"source_content_type":"text/x-python","patch_set":7,"id":"8f66bda7_54f44d71","line":2298,"range":{"start_line":2298,"start_character":11,"end_line":2298,"end_character":15},"updated":"2022-08-29 00:50:17.000000000","message":"remove space","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2295,"context_line":"        # TODO(angiolucci): Trigger a geometry exception to be caught by"},{"line_number":2296,"context_line":"        #       data_motion. This error is raised when using ZAPI with"},{"line_number":2297,"context_line":"        #       different volume component numbers, but in REST, the job must"},{"line_number":2298,"context_line":"        #       be checked sometimes before that error occurs."},{"line_number":2299,"context_line":""},{"line_number":2300,"context_line":"        return self._set_snapmirror_state("},{"line_number":2301,"context_line":"            \u0027snapmirrored\u0027, source_vserver, source_volume,"}],"source_content_type":"text/x-python","patch_set":7,"id":"b4a75eb8_50a40b2d","line":2298,"range":{"start_line":2298,"start_character":11,"end_line":2298,"end_character":15},"in_reply_to":"8f66bda7_54f44d71","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2312,"context_line":"                                          destination_volume,"},{"line_number":2313,"context_line":"                                          desired_attributes\u003d[\u0027uuid\u0027])"},{"line_number":2314,"context_line":"        if len(snapmirror) !\u003d 1:"},{"line_number":2315,"context_line":"            msg \u003d _(\u0027Failed to get information for relationship.\u0027)"},{"line_number":2316,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":2317,"context_line":""},{"line_number":2318,"context_line":"        snapmirror_uuid \u003d snapmirror[0][\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"2ada36e4_010a3b9c","line":2315,"range":{"start_line":2315,"start_character":57,"end_line":2315,"end_character":66},"updated":"2022-08-29 00:50:17.000000000","message":"please add the source/destination info, it will help the user to identify which relationship is not present on storage side.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2312,"context_line":"                                          destination_volume,"},{"line_number":2313,"context_line":"                                          desired_attributes\u003d[\u0027uuid\u0027])"},{"line_number":2314,"context_line":"        if len(snapmirror) !\u003d 1:"},{"line_number":2315,"context_line":"            msg \u003d _(\u0027Failed to get information for relationship.\u0027)"},{"line_number":2316,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":2317,"context_line":""},{"line_number":2318,"context_line":"        snapmirror_uuid \u003d snapmirror[0][\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"7556061a_854dc022","line":2315,"range":{"start_line":2315,"start_character":57,"end_line":2315,"end_character":66},"in_reply_to":"2ada36e4_010a3b9c","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2317,"context_line":""},{"line_number":2318,"context_line":"        snapmirror_uuid \u003d snapmirror[0][\u0027uuid\u0027]"},{"line_number":2319,"context_line":""},{"line_number":2320,"context_line":"        transfers \u003d self.send_request(\u0027/snapmirror/relationships/\u0027 +"},{"line_number":2321,"context_line":"                                      snapmirror_uuid + \u0027/transfers/\u0027, \u0027get\u0027)"},{"line_number":2322,"context_line":""},{"line_number":2323,"context_line":"        if not transfers or transfers.get(\u0027num_records\u0027) \u003d\u003d 0:"},{"line_number":2324,"context_line":"            raise netapp_api.NaApiError("}],"source_content_type":"text/x-python","patch_set":7,"id":"61db7438_1c24ff64","line":2321,"range":{"start_line":2320,"start_character":7,"end_line":2321,"end_character":76},"updated":"2022-08-29 00:50:17.000000000","message":"retrieves the transfers with wanted state","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2317,"context_line":""},{"line_number":2318,"context_line":"        snapmirror_uuid \u003d snapmirror[0][\u0027uuid\u0027]"},{"line_number":2319,"context_line":""},{"line_number":2320,"context_line":"        transfers \u003d self.send_request(\u0027/snapmirror/relationships/\u0027 +"},{"line_number":2321,"context_line":"                                      snapmirror_uuid + \u0027/transfers/\u0027, \u0027get\u0027)"},{"line_number":2322,"context_line":""},{"line_number":2323,"context_line":"        if not transfers or transfers.get(\u0027num_records\u0027) \u003d\u003d 0:"},{"line_number":2324,"context_line":"            raise netapp_api.NaApiError("}],"source_content_type":"text/x-python","patch_set":7,"id":"b4d3d0e5_0c61c7c6","line":2321,"range":{"start_line":2320,"start_character":7,"end_line":2321,"end_character":76},"in_reply_to":"61db7438_1c24ff64","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2320,"context_line":"        transfers \u003d self.send_request(\u0027/snapmirror/relationships/\u0027 +"},{"line_number":2321,"context_line":"                                      snapmirror_uuid + \u0027/transfers/\u0027, \u0027get\u0027)"},{"line_number":2322,"context_line":""},{"line_number":2323,"context_line":"        if not transfers or transfers.get(\u0027num_records\u0027) \u003d\u003d 0:"},{"line_number":2324,"context_line":"            raise netapp_api.NaApiError("},{"line_number":2325,"context_line":"                code\u003dnetapp_api.ENOTRANSFER_IN_PROGRESS)"},{"line_number":2326,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"0daaa393_a9ddc6a2","line":2323,"range":{"start_line":2323,"start_character":11,"end_line":2323,"end_character":24},"updated":"2022-08-29 00:50:17.000000000","message":"is it possible to a GET ONTAP REST response to return an empty dict or None data ? If there is no possibility for that, we normally trust on the response API and get its values. We don\u0027t check if the returned response exist before start using it. If the HTTP succeed, we consume the data as the documentation states.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2320,"context_line":"        transfers \u003d self.send_request(\u0027/snapmirror/relationships/\u0027 +"},{"line_number":2321,"context_line":"                                      snapmirror_uuid + \u0027/transfers/\u0027, \u0027get\u0027)"},{"line_number":2322,"context_line":""},{"line_number":2323,"context_line":"        if not transfers or transfers.get(\u0027num_records\u0027) \u003d\u003d 0:"},{"line_number":2324,"context_line":"            raise netapp_api.NaApiError("},{"line_number":2325,"context_line":"                code\u003dnetapp_api.ENOTRANSFER_IN_PROGRESS)"},{"line_number":2326,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"24ab82fd_4e1009ae","line":2323,"range":{"start_line":2323,"start_character":11,"end_line":2323,"end_character":24},"in_reply_to":"0daaa393_a9ddc6a2","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2322,"context_line":""},{"line_number":2323,"context_line":"        if not transfers or transfers.get(\u0027num_records\u0027) \u003d\u003d 0:"},{"line_number":2324,"context_line":"            raise netapp_api.NaApiError("},{"line_number":2325,"context_line":"                code\u003dnetapp_api.ENOTRANSFER_IN_PROGRESS)"},{"line_number":2326,"context_line":""},{"line_number":2327,"context_line":"        body \u003d {\u0027state\u0027: \u0027hard_aborted\u0027 if clear_checkpoint else \u0027aborted\u0027}"},{"line_number":2328,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"b8d08047_91bebd3f","line":2325,"range":{"start_line":2325,"start_character":32,"end_line":2325,"end_character":55},"updated":"2022-08-29 00:50:17.000000000","message":"It is a ZAPI code, I know that the driver is expecting the ZAPI code, but it might lead for some misreporting. Example: If the code raises this error the user would report that the REST code error is something that we cannot identify or even worse, mapping to a different error. That can, eventually, make debugger life harder.\n\nThis approach is used with several functions of REST client code. We need to think about it globally.\n\nHow could we deal with this issue ? Add notes ? Change driver layer ? Case by Case ?","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3ebf316fd0da8eb33ce62a1016245d0642ede152","unresolved":false,"context_lines":[{"line_number":2322,"context_line":""},{"line_number":2323,"context_line":"        if not transfers or transfers.get(\u0027num_records\u0027) \u003d\u003d 0:"},{"line_number":2324,"context_line":"            raise netapp_api.NaApiError("},{"line_number":2325,"context_line":"                code\u003dnetapp_api.ENOTRANSFER_IN_PROGRESS)"},{"line_number":2326,"context_line":""},{"line_number":2327,"context_line":"        body \u003d {\u0027state\u0027: \u0027hard_aborted\u0027 if clear_checkpoint else \u0027aborted\u0027}"},{"line_number":2328,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"335c4d06_8d100841","line":2325,"range":{"start_line":2325,"start_character":32,"end_line":2325,"end_character":55},"in_reply_to":"2e042096_42fd1369","updated":"2022-09-09 00:12:31.000000000","message":"Ack","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"3026b2459a86e1e1e5d1fce6faecd13cc6f2ba8e","unresolved":true,"context_lines":[{"line_number":2322,"context_line":""},{"line_number":2323,"context_line":"        if not transfers or transfers.get(\u0027num_records\u0027) \u003d\u003d 0:"},{"line_number":2324,"context_line":"            raise netapp_api.NaApiError("},{"line_number":2325,"context_line":"                code\u003dnetapp_api.ENOTRANSFER_IN_PROGRESS)"},{"line_number":2326,"context_line":""},{"line_number":2327,"context_line":"        body \u003d {\u0027state\u0027: \u0027hard_aborted\u0027 if clear_checkpoint else \u0027aborted\u0027}"},{"line_number":2328,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"2e042096_42fd1369","line":2325,"range":{"start_line":2325,"start_character":32,"end_line":2325,"end_character":55},"in_reply_to":"b8d08047_91bebd3f","updated":"2022-09-08 22:46:27.000000000","message":"Mainting the driver layer as close as possible to the original while we have ZAPIs is imporant to avoid errors when backporting this code to OpenStack distribuctions. I believe this should be handled in a follow up patch when we finally remove ZAPIs from the driver code base, so we would be able to proper refactor the driver withou the need to make concessions due to the fact ZAPI is still in use and the default api method.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2328,"context_line":""},{"line_number":2329,"context_line":"        transfer_in_progress \u003d False"},{"line_number":2330,"context_line":"        for transfer in transfers[\u0027records\u0027]:"},{"line_number":2331,"context_line":"            if transfer[\u0027state\u0027] \u003d\u003d \u0027transferring\u0027:"},{"line_number":2332,"context_line":"                transfer_in_progress \u003d True"},{"line_number":2333,"context_line":"                transfer_uuid \u003d transfer[\u0027uuid\u0027]"},{"line_number":2334,"context_line":"                self.send_request(\u0027/snapmirror/relationships/\u0027 +"}],"source_content_type":"text/x-python","patch_set":7,"id":"9113fdbc_5ad0d88f","line":2331,"range":{"start_line":2331,"start_character":12,"end_line":2331,"end_character":49},"updated":"2022-08-29 00:50:17.000000000","message":"it can retrieve only the transfers that are with \"transferring\" state, not requiring this conditional check","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2328,"context_line":""},{"line_number":2329,"context_line":"        transfer_in_progress \u003d False"},{"line_number":2330,"context_line":"        for transfer in transfers[\u0027records\u0027]:"},{"line_number":2331,"context_line":"            if transfer[\u0027state\u0027] \u003d\u003d \u0027transferring\u0027:"},{"line_number":2332,"context_line":"                transfer_in_progress \u003d True"},{"line_number":2333,"context_line":"                transfer_uuid \u003d transfer[\u0027uuid\u0027]"},{"line_number":2334,"context_line":"                self.send_request(\u0027/snapmirror/relationships/\u0027 +"}],"source_content_type":"text/x-python","patch_set":7,"id":"92f41947_7f9bc056","line":2331,"range":{"start_line":2331,"start_character":12,"end_line":2331,"end_character":49},"in_reply_to":"9113fdbc_5ad0d88f","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2335,"context_line":"                                  snapmirror_uuid + \u0027/transfers/\u0027 +"},{"line_number":2336,"context_line":"                                  transfer_uuid, \u0027patch\u0027, body\u003dbody)"},{"line_number":2337,"context_line":""},{"line_number":2338,"context_line":"        if not transfer_in_progress:"},{"line_number":2339,"context_line":"            raise netapp_api.NaApiError("},{"line_number":2340,"context_line":"                code\u003dnetapp_api.ENOTRANSFER_IN_PROGRESS)"},{"line_number":2341,"context_line":""},{"line_number":2342,"context_line":"    def delete_snapmirror(self, source_vserver, source_volume,"},{"line_number":2343,"context_line":"                          destination_vserver, destination_volume):"}],"source_content_type":"text/x-python","patch_set":7,"id":"77e36f8e_14d24d82","line":2340,"range":{"start_line":2338,"start_character":8,"end_line":2340,"end_character":56},"updated":"2022-08-29 00:50:17.000000000","message":"not required if the first transfers query looks for the state","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2335,"context_line":"                                  snapmirror_uuid + \u0027/transfers/\u0027 +"},{"line_number":2336,"context_line":"                                  transfer_uuid, \u0027patch\u0027, body\u003dbody)"},{"line_number":2337,"context_line":""},{"line_number":2338,"context_line":"        if not transfer_in_progress:"},{"line_number":2339,"context_line":"            raise netapp_api.NaApiError("},{"line_number":2340,"context_line":"                code\u003dnetapp_api.ENOTRANSFER_IN_PROGRESS)"},{"line_number":2341,"context_line":""},{"line_number":2342,"context_line":"    def delete_snapmirror(self, source_vserver, source_volume,"},{"line_number":2343,"context_line":"                          destination_vserver, destination_volume):"}],"source_content_type":"text/x-python","patch_set":7,"id":"b3640358_47fd5fa0","line":2340,"range":{"start_line":2338,"start_character":8,"end_line":2340,"end_character":56},"in_reply_to":"77e36f8e_14d24d82","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2342,"context_line":"    def delete_snapmirror(self, source_vserver, source_volume,"},{"line_number":2343,"context_line":"                          destination_vserver, destination_volume):"},{"line_number":2344,"context_line":""},{"line_number":2345,"context_line":"        \"\"\"Destroys an SnapMirror relationship.\"\"\""},{"line_number":2346,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2347,"context_line":""},{"line_number":2348,"context_line":"        query_uuid \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"c6c97b03_262d51d8","line":2345,"range":{"start_line":2345,"start_character":9,"end_line":2345,"end_character":49},"updated":"2022-08-29 00:50:17.000000000","message":"adds the information that this function is used for delete snapmirror on destination side. As same as the release on source:\n\n\"\"\"Removes a SnapMirror relationship on the destination endpoint.\"\"\"","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2342,"context_line":"    def delete_snapmirror(self, source_vserver, source_volume,"},{"line_number":2343,"context_line":"                          destination_vserver, destination_volume):"},{"line_number":2344,"context_line":""},{"line_number":2345,"context_line":"        \"\"\"Destroys an SnapMirror relationship.\"\"\""},{"line_number":2346,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2347,"context_line":""},{"line_number":2348,"context_line":"        query_uuid \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"a8eec53b_0e06c3fb","line":2345,"range":{"start_line":2345,"start_character":9,"end_line":2345,"end_character":49},"in_reply_to":"c6c97b03_262d51d8","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2355,"context_line":"                                     query\u003dquery_uuid)"},{"line_number":2356,"context_line":""},{"line_number":2357,"context_line":"        records \u003d response.get(\u0027records\u0027)"},{"line_number":2358,"context_line":"        if not records or len(records) \u003d\u003d 0:"},{"line_number":2359,"context_line":"            raise netapp_api.NaApiError(code\u003dnetapp_api.EOBJECTNOTFOUND)"},{"line_number":2360,"context_line":""},{"line_number":2361,"context_line":"        # \u0027destination_only\u0027 deletes the snapmirror on destination but does not"}],"source_content_type":"text/x-python","patch_set":7,"id":"cd448999_68d41dd5","line":2358,"range":{"start_line":2358,"start_character":11,"end_line":2358,"end_character":43},"updated":"2022-08-29 00:50:17.000000000","message":"len(records) \u003d\u003d 0 is True, the first condition \"not records\" is always true, so it will never reach the len(records) \u003d\u003d 0. As result:\n\nif not records:\n  ...\n  \nor\n\n\n# could be used because we know that the response always contains the records list.\nif len(records) \u003d\u003d 0:\n  ...","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2355,"context_line":"                                     query\u003dquery_uuid)"},{"line_number":2356,"context_line":""},{"line_number":2357,"context_line":"        records \u003d response.get(\u0027records\u0027)"},{"line_number":2358,"context_line":"        if not records or len(records) \u003d\u003d 0:"},{"line_number":2359,"context_line":"            raise netapp_api.NaApiError(code\u003dnetapp_api.EOBJECTNOTFOUND)"},{"line_number":2360,"context_line":""},{"line_number":2361,"context_line":"        # \u0027destination_only\u0027 deletes the snapmirror on destination but does not"}],"source_content_type":"text/x-python","patch_set":7,"id":"d195bc3e_1af16e2a","line":2358,"range":{"start_line":2358,"start_character":11,"end_line":2358,"end_character":43},"in_reply_to":"cd448999_68d41dd5","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2356,"context_line":""},{"line_number":2357,"context_line":"        records \u003d response.get(\u0027records\u0027)"},{"line_number":2358,"context_line":"        if not records or len(records) \u003d\u003d 0:"},{"line_number":2359,"context_line":"            raise netapp_api.NaApiError(code\u003dnetapp_api.EOBJECTNOTFOUND)"},{"line_number":2360,"context_line":""},{"line_number":2361,"context_line":"        # \u0027destination_only\u0027 deletes the snapmirror on destination but does not"},{"line_number":2362,"context_line":"        # release it on source. This is done to mimic the Zapi behavior."}],"source_content_type":"text/x-python","patch_set":7,"id":"5aa3cdb3_c8bbeba0","line":2359,"range":{"start_line":2359,"start_character":56,"end_line":2359,"end_character":71},"updated":"2022-08-29 00:50:17.000000000","message":"same about zapi code","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"3026b2459a86e1e1e5d1fce6faecd13cc6f2ba8e","unresolved":true,"context_lines":[{"line_number":2356,"context_line":""},{"line_number":2357,"context_line":"        records \u003d response.get(\u0027records\u0027)"},{"line_number":2358,"context_line":"        if not records or len(records) \u003d\u003d 0:"},{"line_number":2359,"context_line":"            raise netapp_api.NaApiError(code\u003dnetapp_api.EOBJECTNOTFOUND)"},{"line_number":2360,"context_line":""},{"line_number":2361,"context_line":"        # \u0027destination_only\u0027 deletes the snapmirror on destination but does not"},{"line_number":2362,"context_line":"        # release it on source. This is done to mimic the Zapi behavior."}],"source_content_type":"text/x-python","patch_set":7,"id":"a49179e3_df28c9ae","line":2359,"range":{"start_line":2359,"start_character":56,"end_line":2359,"end_character":71},"in_reply_to":"5aa3cdb3_c8bbeba0","updated":"2022-09-08 22:46:27.000000000","message":"Mainting the driver layer as close as possible to the original while we have ZAPIs is imporant to avoid errors when backporting this code to OpenStack distribuctions. I believe this should be handled in a follow up patch when we finally remove ZAPIs from the driver code base, so we would be able to proper refactor the driver withou the need to make concessions due to the fact ZAPI is still in use and the default api method.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3ebf316fd0da8eb33ce62a1016245d0642ede152","unresolved":false,"context_lines":[{"line_number":2356,"context_line":""},{"line_number":2357,"context_line":"        records \u003d response.get(\u0027records\u0027)"},{"line_number":2358,"context_line":"        if not records or len(records) \u003d\u003d 0:"},{"line_number":2359,"context_line":"            raise netapp_api.NaApiError(code\u003dnetapp_api.EOBJECTNOTFOUND)"},{"line_number":2360,"context_line":""},{"line_number":2361,"context_line":"        # \u0027destination_only\u0027 deletes the snapmirror on destination but does not"},{"line_number":2362,"context_line":"        # release it on source. This is done to mimic the Zapi behavior."}],"source_content_type":"text/x-python","patch_set":7,"id":"04a93d9c_ec86570c","line":2359,"range":{"start_line":2359,"start_character":56,"end_line":2359,"end_character":71},"in_reply_to":"a49179e3_df28c9ae","updated":"2022-09-09 00:12:31.000000000","message":"Ack","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2358,"context_line":"        if not records or len(records) \u003d\u003d 0:"},{"line_number":2359,"context_line":"            raise netapp_api.NaApiError(code\u003dnetapp_api.EOBJECTNOTFOUND)"},{"line_number":2360,"context_line":""},{"line_number":2361,"context_line":"        # \u0027destination_only\u0027 deletes the snapmirror on destination but does not"},{"line_number":2362,"context_line":"        # release it on source. This is done to mimic the Zapi behavior."},{"line_number":2363,"context_line":"        query_delete \u003d {\"destination_only\": \"true\"}"},{"line_number":2364,"context_line":""},{"line_number":2365,"context_line":"        snapmirror_uuid \u003d records[0].get(\u0027uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"59e00e3f_afa857d4","line":2362,"range":{"start_line":2361,"start_character":8,"end_line":2362,"end_character":72},"updated":"2022-08-29 00:50:17.000000000","message":"I think it is not to mimic ZAPI behavior, this function \"delete_snapmirror\" deletes the snapmirror on destionation because the way of driver flow works. That\u0027s enough. So you don\u0027t need to add this comment, it seems that the code is doing this way because of ZAPI. However, the code runs this way because of the driver calls it to delete snapmirror on destination side.\n\nYou can improve the function documentation explaining that is used for deleting destination snapmirror and remove this comment.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2358,"context_line":"        if not records or len(records) \u003d\u003d 0:"},{"line_number":2359,"context_line":"            raise netapp_api.NaApiError(code\u003dnetapp_api.EOBJECTNOTFOUND)"},{"line_number":2360,"context_line":""},{"line_number":2361,"context_line":"        # \u0027destination_only\u0027 deletes the snapmirror on destination but does not"},{"line_number":2362,"context_line":"        # release it on source. This is done to mimic the Zapi behavior."},{"line_number":2363,"context_line":"        query_delete \u003d {\"destination_only\": \"true\"}"},{"line_number":2364,"context_line":""},{"line_number":2365,"context_line":"        snapmirror_uuid \u003d records[0].get(\u0027uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"20ebc0c6_6ce85b6f","line":2362,"range":{"start_line":2361,"start_character":8,"end_line":2362,"end_character":72},"in_reply_to":"59e00e3f_afa857d4","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2383,"context_line":"                                                 \u0027get\u0027, query\u003dquery_uuid)"},{"line_number":2384,"context_line":""},{"line_number":2385,"context_line":"        records \u003d response_snapmirrors.get(\u0027records\u0027)"},{"line_number":2386,"context_line":"        if not records or len(records) \u003d\u003d 0:"},{"line_number":2387,"context_line":"            raise netapp_api.NaApiError(code\u003dnetapp_api.EOBJECTNOTFOUND)"},{"line_number":2388,"context_line":""},{"line_number":2389,"context_line":"        snapmirror_uuid \u003d records[0][\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"5cf4d094_c72b666a","line":2386,"range":{"start_line":2386,"start_character":8,"end_line":2386,"end_character":43},"updated":"2022-08-29 00:50:17.000000000","message":"same about same two conditions","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2383,"context_line":"                                                 \u0027get\u0027, query\u003dquery_uuid)"},{"line_number":2384,"context_line":""},{"line_number":2385,"context_line":"        records \u003d response_snapmirrors.get(\u0027records\u0027)"},{"line_number":2386,"context_line":"        if not records or len(records) \u003d\u003d 0:"},{"line_number":2387,"context_line":"            raise netapp_api.NaApiError(code\u003dnetapp_api.EOBJECTNOTFOUND)"},{"line_number":2388,"context_line":""},{"line_number":2389,"context_line":"        snapmirror_uuid \u003d records[0][\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"1273f8de_731727cb","line":2386,"range":{"start_line":2386,"start_character":8,"end_line":2386,"end_character":43},"in_reply_to":"5cf4d094_c72b666a","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2384,"context_line":""},{"line_number":2385,"context_line":"        records \u003d response_snapmirrors.get(\u0027records\u0027)"},{"line_number":2386,"context_line":"        if not records or len(records) \u003d\u003d 0:"},{"line_number":2387,"context_line":"            raise netapp_api.NaApiError(code\u003dnetapp_api.EOBJECTNOTFOUND)"},{"line_number":2388,"context_line":""},{"line_number":2389,"context_line":"        snapmirror_uuid \u003d records[0][\u0027uuid\u0027]"},{"line_number":2390,"context_line":"        snapmirror_policy \u003d records[0][\u0027policy\u0027][\u0027type\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"5c0377e2_f1e47d88","line":2387,"range":{"start_line":2387,"start_character":56,"end_line":2387,"end_character":71},"updated":"2022-08-29 00:50:17.000000000","message":"same about ZAPI code","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"3026b2459a86e1e1e5d1fce6faecd13cc6f2ba8e","unresolved":true,"context_lines":[{"line_number":2384,"context_line":""},{"line_number":2385,"context_line":"        records \u003d response_snapmirrors.get(\u0027records\u0027)"},{"line_number":2386,"context_line":"        if not records or len(records) \u003d\u003d 0:"},{"line_number":2387,"context_line":"            raise netapp_api.NaApiError(code\u003dnetapp_api.EOBJECTNOTFOUND)"},{"line_number":2388,"context_line":""},{"line_number":2389,"context_line":"        snapmirror_uuid \u003d records[0][\u0027uuid\u0027]"},{"line_number":2390,"context_line":"        snapmirror_policy \u003d records[0][\u0027policy\u0027][\u0027type\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"b8a842e2_9bfc5a09","line":2387,"range":{"start_line":2387,"start_character":56,"end_line":2387,"end_character":71},"in_reply_to":"5c0377e2_f1e47d88","updated":"2022-09-08 22:46:27.000000000","message":"Mainting the driver layer as close as possible to the original while we have ZAPIs is imporant to avoid errors when backporting this code to OpenStack distribuctions. I believe this should be handled in a follow up patch when we finally remove ZAPIs from the driver code base, so we would be able to proper refactor the driver withou the need to make concessions due to the fact ZAPI is still in use and the default api method.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"3ebf316fd0da8eb33ce62a1016245d0642ede152","unresolved":false,"context_lines":[{"line_number":2384,"context_line":""},{"line_number":2385,"context_line":"        records \u003d response_snapmirrors.get(\u0027records\u0027)"},{"line_number":2386,"context_line":"        if not records or len(records) \u003d\u003d 0:"},{"line_number":2387,"context_line":"            raise netapp_api.NaApiError(code\u003dnetapp_api.EOBJECTNOTFOUND)"},{"line_number":2388,"context_line":""},{"line_number":2389,"context_line":"        snapmirror_uuid \u003d records[0][\u0027uuid\u0027]"},{"line_number":2390,"context_line":"        snapmirror_policy \u003d records[0][\u0027policy\u0027][\u0027type\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f85051a_0b20e88a","line":2387,"range":{"start_line":2387,"start_character":56,"end_line":2387,"end_character":71},"in_reply_to":"b8a842e2_9bfc5a09","updated":"2022-09-09 00:12:31.000000000","message":"Ack","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2421,"context_line":""},{"line_number":2422,"context_line":"        query_release \u003d {}"},{"line_number":2423,"context_line":"        if relationship_info_only:"},{"line_number":2424,"context_line":"            # release WITHOUT removing related snapshots"},{"line_number":2425,"context_line":"            query_release[\u0027source_info_only\u0027] \u003d \u0027true\u0027"},{"line_number":2426,"context_line":"        else:"},{"line_number":2427,"context_line":"            # release and REMOVING all related snapshots"}],"source_content_type":"text/x-python","patch_set":7,"id":"a86d88cc_7c9cca4c","line":2424,"range":{"start_line":2424,"start_character":22,"end_line":2424,"end_character":29},"updated":"2022-08-29 00:50:17.000000000","message":"lowercase","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2421,"context_line":""},{"line_number":2422,"context_line":"        query_release \u003d {}"},{"line_number":2423,"context_line":"        if relationship_info_only:"},{"line_number":2424,"context_line":"            # release WITHOUT removing related snapshots"},{"line_number":2425,"context_line":"            query_release[\u0027source_info_only\u0027] \u003d \u0027true\u0027"},{"line_number":2426,"context_line":"        else:"},{"line_number":2427,"context_line":"            # release and REMOVING all related snapshots"}],"source_content_type":"text/x-python","patch_set":7,"id":"9729f8e6_c6539eb3","line":2424,"range":{"start_line":2424,"start_character":47,"end_line":2424,"end_character":56},"updated":"2022-08-29 00:50:17.000000000","message":"snapshots.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2421,"context_line":""},{"line_number":2422,"context_line":"        query_release \u003d {}"},{"line_number":2423,"context_line":"        if relationship_info_only:"},{"line_number":2424,"context_line":"            # release WITHOUT removing related snapshots"},{"line_number":2425,"context_line":"            query_release[\u0027source_info_only\u0027] \u003d \u0027true\u0027"},{"line_number":2426,"context_line":"        else:"},{"line_number":2427,"context_line":"            # release and REMOVING all related snapshots"}],"source_content_type":"text/x-python","patch_set":7,"id":"8c26e4de_c05bd2c9","line":2424,"range":{"start_line":2424,"start_character":47,"end_line":2424,"end_character":56},"in_reply_to":"9729f8e6_c6539eb3","updated":"2022-09-08 22:21:47.000000000","message":"periodic is not really a requirement for single line comments.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2421,"context_line":""},{"line_number":2422,"context_line":"        query_release \u003d {}"},{"line_number":2423,"context_line":"        if relationship_info_only:"},{"line_number":2424,"context_line":"            # release WITHOUT removing related snapshots"},{"line_number":2425,"context_line":"            query_release[\u0027source_info_only\u0027] \u003d \u0027true\u0027"},{"line_number":2426,"context_line":"        else:"},{"line_number":2427,"context_line":"            # release and REMOVING all related snapshots"}],"source_content_type":"text/x-python","patch_set":7,"id":"b8a4bed5_ec197817","line":2424,"range":{"start_line":2424,"start_character":22,"end_line":2424,"end_character":29},"in_reply_to":"a86d88cc_7c9cca4c","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2424,"context_line":"            # release WITHOUT removing related snapshots"},{"line_number":2425,"context_line":"            query_release[\u0027source_info_only\u0027] \u003d \u0027true\u0027"},{"line_number":2426,"context_line":"        else:"},{"line_number":2427,"context_line":"            # release and REMOVING all related snapshots"},{"line_number":2428,"context_line":"            query_release[\u0027source_only\u0027] \u003d \u0027true\u0027"},{"line_number":2429,"context_line":""},{"line_number":2430,"context_line":"        snapmirror_uuid \u003d records[0].get(\u0027uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"51d257c9_86203672","line":2427,"range":{"start_line":2427,"start_character":26,"end_line":2427,"end_character":35},"updated":"2022-08-29 00:50:17.000000000","message":"lowercase","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2424,"context_line":"            # release WITHOUT removing related snapshots"},{"line_number":2425,"context_line":"            query_release[\u0027source_info_only\u0027] \u003d \u0027true\u0027"},{"line_number":2426,"context_line":"        else:"},{"line_number":2427,"context_line":"            # release and REMOVING all related snapshots"},{"line_number":2428,"context_line":"            query_release[\u0027source_only\u0027] \u003d \u0027true\u0027"},{"line_number":2429,"context_line":""},{"line_number":2430,"context_line":"        snapmirror_uuid \u003d records[0].get(\u0027uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"50e817c3_2f0b4fa6","line":2427,"range":{"start_line":2427,"start_character":47,"end_line":2427,"end_character":56},"updated":"2022-08-29 00:50:17.000000000","message":"snapshots.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2424,"context_line":"            # release WITHOUT removing related snapshots"},{"line_number":2425,"context_line":"            query_release[\u0027source_info_only\u0027] \u003d \u0027true\u0027"},{"line_number":2426,"context_line":"        else:"},{"line_number":2427,"context_line":"            # release and REMOVING all related snapshots"},{"line_number":2428,"context_line":"            query_release[\u0027source_only\u0027] \u003d \u0027true\u0027"},{"line_number":2429,"context_line":""},{"line_number":2430,"context_line":"        snapmirror_uuid \u003d records[0].get(\u0027uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"58453035_28039bfe","line":2427,"range":{"start_line":2427,"start_character":47,"end_line":2427,"end_character":56},"in_reply_to":"50e817c3_2f0b4fa6","updated":"2022-09-08 22:21:47.000000000","message":"periodic is not really a requirement for single line comments.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2424,"context_line":"            # release WITHOUT removing related snapshots"},{"line_number":2425,"context_line":"            query_release[\u0027source_info_only\u0027] \u003d \u0027true\u0027"},{"line_number":2426,"context_line":"        else:"},{"line_number":2427,"context_line":"            # release and REMOVING all related snapshots"},{"line_number":2428,"context_line":"            query_release[\u0027source_only\u0027] \u003d \u0027true\u0027"},{"line_number":2429,"context_line":""},{"line_number":2430,"context_line":"        snapmirror_uuid \u003d records[0].get(\u0027uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ade07de3_8da3f310","line":2427,"range":{"start_line":2427,"start_character":26,"end_line":2427,"end_character":35},"in_reply_to":"51d257c9_86203672","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2435,"context_line":"    def resync_snapmirror(self, source_vserver, source_volume,"},{"line_number":2436,"context_line":"                          destination_vserver, destination_volume):"},{"line_number":2437,"context_line":"        \"\"\"Resync a SnapMirror relationship.\"\"\""},{"line_number":2438,"context_line":"        self.resume_snapmirror(source_vserver,"},{"line_number":2439,"context_line":"                               source_volume,"},{"line_number":2440,"context_line":"                               destination_vserver,"},{"line_number":2441,"context_line":"                               destination_volume)"},{"line_number":2442,"context_line":""},{"line_number":2443,"context_line":"    def quiesce_snapmirror(self, source_vserver, source_volume,"},{"line_number":2444,"context_line":"                           destination_vserver, destination_volume):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1280a9e1_c623cfa8","line":2441,"range":{"start_line":2438,"start_character":8,"end_line":2441,"end_character":50},"updated":"2022-08-29 00:50:17.000000000","message":"please, add a note explaining that: based on ONTAP REST documentation, the process to request a resync is the same as to resume: patching the endpoint setting the state to \"snapmirrored\".","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2435,"context_line":"    def resync_snapmirror(self, source_vserver, source_volume,"},{"line_number":2436,"context_line":"                          destination_vserver, destination_volume):"},{"line_number":2437,"context_line":"        \"\"\"Resync a SnapMirror relationship.\"\"\""},{"line_number":2438,"context_line":"        self.resume_snapmirror(source_vserver,"},{"line_number":2439,"context_line":"                               source_volume,"},{"line_number":2440,"context_line":"                               destination_vserver,"},{"line_number":2441,"context_line":"                               destination_volume)"},{"line_number":2442,"context_line":""},{"line_number":2443,"context_line":"    def quiesce_snapmirror(self, source_vserver, source_volume,"},{"line_number":2444,"context_line":"                           destination_vserver, destination_volume):"}],"source_content_type":"text/x-python","patch_set":7,"id":"29535f01_32e9fa0f","line":2441,"range":{"start_line":2438,"start_character":8,"end_line":2441,"end_character":50},"in_reply_to":"1280a9e1_c623cfa8","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2467,"context_line":"                                          destination_volume,"},{"line_number":2468,"context_line":"                                          desired_attributes\u003d[\u0027uuid\u0027])"},{"line_number":2469,"context_line":"        if len(snapmirror) !\u003d 1:"},{"line_number":2470,"context_line":"            msg \u003d _(\u0027Failed to get information for relationship.\u0027)"},{"line_number":2471,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":2472,"context_line":""},{"line_number":2473,"context_line":"        snapmirror_uuid \u003d snapmirror[0][\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"68880120_3c9aceb8","line":2470,"range":{"start_line":2470,"start_character":51,"end_line":2470,"end_character":63},"updated":"2022-08-29 00:50:17.000000000","message":"please, add the relationship name to make the debugger life easier: \"..for relationship \u003csource:destionation\u003e\"","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2467,"context_line":"                                          destination_volume,"},{"line_number":2468,"context_line":"                                          desired_attributes\u003d[\u0027uuid\u0027])"},{"line_number":2469,"context_line":"        if len(snapmirror) !\u003d 1:"},{"line_number":2470,"context_line":"            msg \u003d _(\u0027Failed to get information for relationship.\u0027)"},{"line_number":2471,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":2472,"context_line":""},{"line_number":2473,"context_line":"        snapmirror_uuid \u003d snapmirror[0][\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"1b122a61_83aff32b","line":2470,"range":{"start_line":2470,"start_character":51,"end_line":2470,"end_character":63},"in_reply_to":"68880120_3c9aceb8","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2488,"context_line":"    def mount_flexvol(self, flexvol_name, junction_path\u003dNone):"},{"line_number":2489,"context_line":"        \"\"\"Mounts a volume on a junction path.\"\"\""},{"line_number":2490,"context_line":""},{"line_number":2491,"context_line":"        query \u003d {"},{"line_number":2492,"context_line":"            \u0027name\u0027: flexvol_name,"},{"line_number":2493,"context_line":"            \u0027fields\u0027: \u0027uuid,style\u0027,"},{"line_number":2494,"context_line":"        }"},{"line_number":2495,"context_line":""},{"line_number":2496,"context_line":"        # Get volume UUID"},{"line_number":2497,"context_line":"        response \u003d self.send_request(\u0027/storage/volumes/\u0027, \u0027get\u0027, query\u003dquery)"},{"line_number":2498,"context_line":"        records \u003d response.get(\u0027records\u0027, [])"},{"line_number":2499,"context_line":"        unique_volume \u003d self._get_unique_volume(records)"},{"line_number":2500,"context_line":"        uuid \u003d unique_volume[\u0027uuid\u0027]"},{"line_number":2501,"context_line":""},{"line_number":2502,"context_line":"        body \u003d {"},{"line_number":2503,"context_line":"            \u0027name\u0027: flexvol_name,"},{"line_number":2504,"context_line":"            \u0027nas.path\u0027: ("}],"source_content_type":"text/x-python","patch_set":7,"id":"dcf581cf_dad9afe6","line":2501,"range":{"start_line":2491,"start_character":6,"end_line":2501,"end_character":0},"updated":"2022-08-29 00:50:17.000000000","message":"dont need to retrieve the volume uuid to patch the volume. add a query during patch request as:\n\nquery \u003d {\u0027name\u0027: flexvol_name}","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2488,"context_line":"    def mount_flexvol(self, flexvol_name, junction_path\u003dNone):"},{"line_number":2489,"context_line":"        \"\"\"Mounts a volume on a junction path.\"\"\""},{"line_number":2490,"context_line":""},{"line_number":2491,"context_line":"        query \u003d {"},{"line_number":2492,"context_line":"            \u0027name\u0027: flexvol_name,"},{"line_number":2493,"context_line":"            \u0027fields\u0027: \u0027uuid,style\u0027,"},{"line_number":2494,"context_line":"        }"},{"line_number":2495,"context_line":""},{"line_number":2496,"context_line":"        # Get volume UUID"},{"line_number":2497,"context_line":"        response \u003d self.send_request(\u0027/storage/volumes/\u0027, \u0027get\u0027, query\u003dquery)"},{"line_number":2498,"context_line":"        records \u003d response.get(\u0027records\u0027, [])"},{"line_number":2499,"context_line":"        unique_volume \u003d self._get_unique_volume(records)"},{"line_number":2500,"context_line":"        uuid \u003d unique_volume[\u0027uuid\u0027]"},{"line_number":2501,"context_line":""},{"line_number":2502,"context_line":"        body \u003d {"},{"line_number":2503,"context_line":"            \u0027name\u0027: flexvol_name,"},{"line_number":2504,"context_line":"            \u0027nas.path\u0027: ("}],"source_content_type":"text/x-python","patch_set":7,"id":"57c257c3_f2522c41","line":2501,"range":{"start_line":2491,"start_character":6,"end_line":2501,"end_character":0},"in_reply_to":"dcf581cf_dad9afe6","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":2500,"context_line":"        uuid \u003d unique_volume[\u0027uuid\u0027]"},{"line_number":2501,"context_line":""},{"line_number":2502,"context_line":"        body \u003d {"},{"line_number":2503,"context_line":"            \u0027name\u0027: flexvol_name,"},{"line_number":2504,"context_line":"            \u0027nas.path\u0027: ("},{"line_number":2505,"context_line":"                junction_path if junction_path else \u0027/%s\u0027 % flexvol_name)"},{"line_number":2506,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":7,"id":"11b90bb9_78c816cf","line":2503,"range":{"start_line":2503,"start_character":12,"end_line":2503,"end_character":33},"updated":"2022-08-29 00:50:17.000000000","message":"is it required ? it is not changing the volume name.","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2500,"context_line":"        uuid \u003d unique_volume[\u0027uuid\u0027]"},{"line_number":2501,"context_line":""},{"line_number":2502,"context_line":"        body \u003d {"},{"line_number":2503,"context_line":"            \u0027name\u0027: flexvol_name,"},{"line_number":2504,"context_line":"            \u0027nas.path\u0027: ("},{"line_number":2505,"context_line":"                junction_path if junction_path else \u0027/%s\u0027 % flexvol_name)"},{"line_number":2506,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":7,"id":"24fedf63_5f875c84","line":2503,"range":{"start_line":2503,"start_character":12,"end_line":2503,"end_character":33},"in_reply_to":"11b90bb9_78c816cf","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":1942,"context_line":"                          \u0027patch\u0027, body\u003dbody, wait_on_accepted\u003dFalse)"},{"line_number":1943,"context_line":""},{"line_number":1944,"context_line":"    def _parse_lagtime(self, time_str):"},{"line_number":1945,"context_line":"        \u0027\u0027\u0027Parse lagtime string (ISO 8601) into a number of seconds.\u0027\u0027\u0027"},{"line_number":1946,"context_line":""},{"line_number":1947,"context_line":"        fmt_str \u003d \u0027PT\u0027"},{"line_number":1948,"context_line":"        if \u0027H\u0027 in time_str:"}],"source_content_type":"text/x-python","patch_set":11,"id":"aff37950_e7c72c3e","line":1945,"updated":"2022-09-08 22:21:47.000000000","message":"double quotes is the correct for docstrings","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"b59eb2f3524c8a5cdfa27eb68f21d779aa2053cc","unresolved":true,"context_lines":[{"line_number":2075,"context_line":"        Either the source or destination info may be omitted."},{"line_number":2076,"context_line":"        Desired attributes should be a flat list of attribute names."},{"line_number":2077,"context_line":"        \"\"\""},{"line_number":2078,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2079,"context_line":""},{"line_number":2080,"context_line":"        snapmirrors \u003d self._get_snapmirrors("},{"line_number":2081,"context_line":"            source_vserver\u003dsource_vserver,"}],"source_content_type":"text/x-python","patch_set":11,"id":"6f5aff55_0dbf133d","line":2078,"updated":"2022-09-06 15:11:47.000000000","message":"There is no need to check for snapmirror_v2 in REST since minimum version is 9.11.","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2075,"context_line":"        Either the source or destination info may be omitted."},{"line_number":2076,"context_line":"        Desired attributes should be a flat list of attribute names."},{"line_number":2077,"context_line":"        \"\"\""},{"line_number":2078,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2079,"context_line":""},{"line_number":2080,"context_line":"        snapmirrors \u003d self._get_snapmirrors("},{"line_number":2081,"context_line":"            source_vserver\u003dsource_vserver,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9bd7523a_de1ddc57","line":2078,"in_reply_to":"6f5aff55_0dbf133d","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"b59eb2f3524c8a5cdfa27eb68f21d779aa2053cc","unresolved":true,"context_lines":[{"line_number":2099,"context_line":"        relationship_type will be ignored because XDP are the only types"},{"line_number":2100,"context_line":"        supported through REST API."},{"line_number":2101,"context_line":"        \"\"\""},{"line_number":2102,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2103,"context_line":""},{"line_number":2104,"context_line":"        body \u003d {"},{"line_number":2105,"context_line":"            \u0027source\u0027: {"}],"source_content_type":"text/x-python","patch_set":11,"id":"e4caa839_b2ed9d7e","line":2102,"updated":"2022-09-06 15:11:47.000000000","message":"There is no need to check for snapmirror_v2 in REST since minimum version is 9.11.","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2099,"context_line":"        relationship_type will be ignored because XDP are the only types"},{"line_number":2100,"context_line":"        supported through REST API."},{"line_number":2101,"context_line":"        \"\"\""},{"line_number":2102,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2103,"context_line":""},{"line_number":2104,"context_line":"        body \u003d {"},{"line_number":2105,"context_line":"            \u0027source\u0027: {"}],"source_content_type":"text/x-python","patch_set":11,"id":"efb19a38_8fc33a30","line":2102,"in_reply_to":"e4caa839_b2ed9d7e","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"b59eb2f3524c8a5cdfa27eb68f21d779aa2053cc","unresolved":true,"context_lines":[{"line_number":2124,"context_line":"                              wait_result\u003dTrue):"},{"line_number":2125,"context_line":"        \"\"\"Change the snapmirror state between two volumes.\"\"\""},{"line_number":2126,"context_line":""},{"line_number":2127,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2128,"context_line":""},{"line_number":2129,"context_line":"        snapmirror \u003d self.get_snapmirrors(source_vserver, source_volume,"},{"line_number":2130,"context_line":"                                          destination_vserver,"}],"source_content_type":"text/x-python","patch_set":11,"id":"d80dfe3f_c5927a56","line":2127,"updated":"2022-09-06 15:11:47.000000000","message":"There is no need to check for snapmirror_v2 in REST since minimum version is 9.11.","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2124,"context_line":"                              wait_result\u003dTrue):"},{"line_number":2125,"context_line":"        \"\"\"Change the snapmirror state between two volumes.\"\"\""},{"line_number":2126,"context_line":""},{"line_number":2127,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2128,"context_line":""},{"line_number":2129,"context_line":"        snapmirror \u003d self.get_snapmirrors(source_vserver, source_volume,"},{"line_number":2130,"context_line":"                                          destination_vserver,"}],"source_content_type":"text/x-python","patch_set":11,"id":"20f4480f_0ff3cb3f","line":2127,"in_reply_to":"d80dfe3f_c5927a56","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"b59eb2f3524c8a5cdfa27eb68f21d779aa2053cc","unresolved":true,"context_lines":[{"line_number":2157,"context_line":"                              source_snapshot\u003dNone, transfer_priority\u003dNone):"},{"line_number":2158,"context_line":"        \"\"\"Initializes a SnapMirror relationship (cDOT 8.2 or later only).\"\"\""},{"line_number":2159,"context_line":""},{"line_number":2160,"context_line":"        # TODO(angiolucci): Trigger a geometry exception to be caught by"},{"line_number":2161,"context_line":"        #       data_motion. This error is raised when using ZAPI with"},{"line_number":2162,"context_line":"        #       different volume component numbers, but in REST, the job must"},{"line_number":2163,"context_line":"        #       be checked sometimes before that error occurs."}],"source_content_type":"text/x-python","patch_set":11,"id":"6371aa04_171731b5","line":2160,"updated":"2022-09-06 15:11:47.000000000","message":"-1: do not use names in TODO section.","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2157,"context_line":"                              source_snapshot\u003dNone, transfer_priority\u003dNone):"},{"line_number":2158,"context_line":"        \"\"\"Initializes a SnapMirror relationship (cDOT 8.2 or later only).\"\"\""},{"line_number":2159,"context_line":""},{"line_number":2160,"context_line":"        # TODO(angiolucci): Trigger a geometry exception to be caught by"},{"line_number":2161,"context_line":"        #       data_motion. This error is raised when using ZAPI with"},{"line_number":2162,"context_line":"        #       different volume component numbers, but in REST, the job must"},{"line_number":2163,"context_line":"        #       be checked sometimes before that error occurs."}],"source_content_type":"text/x-python","patch_set":11,"id":"3dabc8c3_e6577a6f","line":2160,"in_reply_to":"6371aa04_171731b5","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"b59eb2f3524c8a5cdfa27eb68f21d779aa2053cc","unresolved":true,"context_lines":[{"line_number":2170,"context_line":"                         destination_vserver, destination_volume,"},{"line_number":2171,"context_line":"                         clear_checkpoint\u003dFalse):"},{"line_number":2172,"context_line":"        \"\"\"Stops ongoing transfers for a SnapMirror relationship.\"\"\""},{"line_number":2173,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2174,"context_line":""},{"line_number":2175,"context_line":"        snapmirror \u003d self.get_snapmirrors(source_vserver, source_volume,"},{"line_number":2176,"context_line":"                                          destination_vserver,"}],"source_content_type":"text/x-python","patch_set":11,"id":"a70dbda5_2dc0baa2","line":2173,"updated":"2022-09-06 15:11:47.000000000","message":"There is no need to check for snapmirror_v2 in REST since minimum version is 9.11 and v2 is ensured.","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2170,"context_line":"                         destination_vserver, destination_volume,"},{"line_number":2171,"context_line":"                         clear_checkpoint\u003dFalse):"},{"line_number":2172,"context_line":"        \"\"\"Stops ongoing transfers for a SnapMirror relationship.\"\"\""},{"line_number":2173,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2174,"context_line":""},{"line_number":2175,"context_line":"        snapmirror \u003d self.get_snapmirrors(source_vserver, source_volume,"},{"line_number":2176,"context_line":"                                          destination_vserver,"}],"source_content_type":"text/x-python","patch_set":11,"id":"a69bd26c_e79fb5b3","line":2173,"in_reply_to":"a70dbda5_2dc0baa2","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"b59eb2f3524c8a5cdfa27eb68f21d779aa2053cc","unresolved":true,"context_lines":[{"line_number":2208,"context_line":"                          destination_vserver, destination_volume):"},{"line_number":2209,"context_line":""},{"line_number":2210,"context_line":"        \"\"\"Destroys an SnapMirror relationship.\"\"\""},{"line_number":2211,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2212,"context_line":""},{"line_number":2213,"context_line":"        query_uuid \u003d {}"},{"line_number":2214,"context_line":"        query_uuid[\u0027source.path\u0027] \u003d source_vserver + \u0027:\u0027 + source_volume"}],"source_content_type":"text/x-python","patch_set":11,"id":"11294c65_2c4817ad","line":2211,"updated":"2022-09-06 15:11:47.000000000","message":"There is no need to check for snapmirror_v2 in REST since minimum version is 9.11.","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2208,"context_line":"                          destination_vserver, destination_volume):"},{"line_number":2209,"context_line":""},{"line_number":2210,"context_line":"        \"\"\"Destroys an SnapMirror relationship.\"\"\""},{"line_number":2211,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2212,"context_line":""},{"line_number":2213,"context_line":"        query_uuid \u003d {}"},{"line_number":2214,"context_line":"        query_uuid[\u0027source.path\u0027] \u003d source_vserver + \u0027:\u0027 + source_volume"}],"source_content_type":"text/x-python","patch_set":11,"id":"037cc86f_ad430dab","line":2211,"in_reply_to":"11294c65_2c4817ad","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2235,"context_line":"    def resume_snapmirror(self, source_vserver, source_volume,"},{"line_number":2236,"context_line":"                          destination_vserver, destination_volume):"},{"line_number":2237,"context_line":""},{"line_number":2238,"context_line":"        \"\"\"Resume a SnapMirror relationship if it is quiesced.\"\"\""},{"line_number":2239,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2240,"context_line":""},{"line_number":2241,"context_line":"        query_uuid \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"1c3822cf_938b44a3","line":2238,"updated":"2022-09-08 22:21:47.000000000","message":"There is no checking if the relationship is in the quiesced state before resuming.","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"b59eb2f3524c8a5cdfa27eb68f21d779aa2053cc","unresolved":true,"context_lines":[{"line_number":2236,"context_line":"                          destination_vserver, destination_volume):"},{"line_number":2237,"context_line":""},{"line_number":2238,"context_line":"        \"\"\"Resume a SnapMirror relationship if it is quiesced.\"\"\""},{"line_number":2239,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2240,"context_line":""},{"line_number":2241,"context_line":"        query_uuid \u003d {}"},{"line_number":2242,"context_line":"        query_uuid[\u0027source.path\u0027] \u003d source_vserver + \u0027:\u0027 + source_volume"}],"source_content_type":"text/x-python","patch_set":11,"id":"a8352cc3_cf05aaba","line":2239,"updated":"2022-09-06 15:11:47.000000000","message":"There is no need to check for snapmirror_v2 in REST since minimum version is 9.11.","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2236,"context_line":"                          destination_vserver, destination_volume):"},{"line_number":2237,"context_line":""},{"line_number":2238,"context_line":"        \"\"\"Resume a SnapMirror relationship if it is quiesced.\"\"\""},{"line_number":2239,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2240,"context_line":""},{"line_number":2241,"context_line":"        query_uuid \u003d {}"},{"line_number":2242,"context_line":"        query_uuid[\u0027source.path\u0027] \u003d source_vserver + \u0027:\u0027 + source_volume"}],"source_content_type":"text/x-python","patch_set":11,"id":"b59bd1fc_9bc792c1","line":2239,"in_reply_to":"a8352cc3_cf05aaba","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"b59eb2f3524c8a5cdfa27eb68f21d779aa2053cc","unresolved":true,"context_lines":[{"line_number":2268,"context_line":"                           destination_vserver, destination_volume,"},{"line_number":2269,"context_line":"                           relationship_info_only\u003dFalse):"},{"line_number":2270,"context_line":"        \"\"\"Removes a SnapMirror relationship on the source endpoint.\"\"\""},{"line_number":2271,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2272,"context_line":""},{"line_number":2273,"context_line":"        query_uuid \u003d {}"},{"line_number":2274,"context_line":"        query_uuid[\u0027list_destinations_only\u0027] \u003d \u0027true\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"693dd093_d4d0063a","line":2271,"updated":"2022-09-06 15:11:47.000000000","message":"There is no need to check for snapmirror_v2 in REST since minimum version is 9.11.","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2268,"context_line":"                           destination_vserver, destination_volume,"},{"line_number":2269,"context_line":"                           relationship_info_only\u003dFalse):"},{"line_number":2270,"context_line":"        \"\"\"Removes a SnapMirror relationship on the source endpoint.\"\"\""},{"line_number":2271,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2272,"context_line":""},{"line_number":2273,"context_line":"        query_uuid \u003d {}"},{"line_number":2274,"context_line":"        query_uuid[\u0027list_destinations_only\u0027] \u003d \u0027true\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"fbe2a277_6483cf42","line":2271,"in_reply_to":"693dd093_d4d0063a","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2281,"context_line":"                                                 \u0027get\u0027, query\u003dquery_uuid)"},{"line_number":2282,"context_line":""},{"line_number":2283,"context_line":"        records \u003d response_snapmirrors.get(\u0027records\u0027)"},{"line_number":2284,"context_line":"        if not records or len(records) \u003d\u003d 0:"},{"line_number":2285,"context_line":"            raise netapp_api.NaApiError(code\u003dnetapp_api.EOBJECTNOTFOUND)"},{"line_number":2286,"context_line":""},{"line_number":2287,"context_line":"        query_release \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"d5d815f4_d6eac432","line":2284,"updated":"2022-09-08 22:21:47.000000000","message":"just \u0027if not records:\u0027 also works.","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"b59eb2f3524c8a5cdfa27eb68f21d779aa2053cc","unresolved":true,"context_lines":[{"line_number":2325,"context_line":"                          destination_vserver, destination_volume):"},{"line_number":2326,"context_line":"        \"\"\"Schedules a SnapMirror update.\"\"\""},{"line_number":2327,"context_line":""},{"line_number":2328,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2329,"context_line":""},{"line_number":2330,"context_line":"        snapmirror \u003d self.get_snapmirrors(source_vserver, source_volume,"},{"line_number":2331,"context_line":"                                          destination_vserver,"}],"source_content_type":"text/x-python","patch_set":11,"id":"728d633b_f84fb726","line":2328,"updated":"2022-09-06 15:11:47.000000000","message":"There is no need to check for snapmirror_v2 in REST since minimum version is 9.11.","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2325,"context_line":"                          destination_vserver, destination_volume):"},{"line_number":2326,"context_line":"        \"\"\"Schedules a SnapMirror update.\"\"\""},{"line_number":2327,"context_line":""},{"line_number":2328,"context_line":"        self._ensure_snapmirror_v2()"},{"line_number":2329,"context_line":""},{"line_number":2330,"context_line":"        snapmirror \u003d self.get_snapmirrors(source_vserver, source_volume,"},{"line_number":2331,"context_line":"                                          destination_vserver,"}],"source_content_type":"text/x-python","patch_set":11,"id":"6783adb8_c08cf45f","line":2328,"in_reply_to":"728d633b_f84fb726","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":2355,"context_line":""},{"line_number":2356,"context_line":"        query \u003d {"},{"line_number":2357,"context_line":"            \u0027name\u0027: flexvol_name,"},{"line_number":2358,"context_line":"            \u0027fields\u0027: \u0027uuid,style\u0027,"},{"line_number":2359,"context_line":"        }"},{"line_number":2360,"context_line":""},{"line_number":2361,"context_line":"        # Get volume UUID"}],"source_content_type":"text/x-python","patch_set":11,"id":"1b83c91c_9620eea2","line":2358,"updated":"2022-09-08 22:21:47.000000000","message":"style field requested but not used.","commit_id":"cd6d85190d9d20a4ca5eb47ebef349da4f888073"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c0d8f725fe524380a9c6df5545f2d2c34e13db76","unresolved":true,"context_lines":[{"line_number":1800,"context_line":""},{"line_number":1801,"context_line":"        provisioning_opts \u003d {"},{"line_number":1802,"context_line":"            \u0027aggregate\u0027: flexvol_info[\u0027aggregate\u0027],"},{"line_number":1803,"context_line":"            # space-guarantee can be \u0027none\u0027, \u0027file\u0027, \u0027volume\u0027"},{"line_number":1804,"context_line":"            \u0027space_guarantee_type\u0027: flexvol_info.get(\u0027space-guarantee\u0027),"},{"line_number":1805,"context_line":"            \u0027snapshot_policy\u0027: flexvol_info[\u0027snapshot-policy\u0027],"},{"line_number":1806,"context_line":"            \u0027language\u0027: flexvol_info[\u0027language\u0027],"}],"source_content_type":"text/x-python","patch_set":16,"id":"c7802bbf_fbeea3c2","line":1803,"range":{"start_line":1803,"start_character":38,"end_line":1803,"end_character":42},"updated":"2022-09-09 11:10:36.000000000","message":"is this a python None value or a string \u0027none\u0027\nI assume it\u0027s the former since we\u0027re using get here","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ab608e2981c8aea028f575ae88293b1647282942","unresolved":false,"context_lines":[{"line_number":1800,"context_line":""},{"line_number":1801,"context_line":"        provisioning_opts \u003d {"},{"line_number":1802,"context_line":"            \u0027aggregate\u0027: flexvol_info[\u0027aggregate\u0027],"},{"line_number":1803,"context_line":"            # space-guarantee can be \u0027none\u0027, \u0027file\u0027, \u0027volume\u0027"},{"line_number":1804,"context_line":"            \u0027space_guarantee_type\u0027: flexvol_info.get(\u0027space-guarantee\u0027),"},{"line_number":1805,"context_line":"            \u0027snapshot_policy\u0027: flexvol_info[\u0027snapshot-policy\u0027],"},{"line_number":1806,"context_line":"            \u0027language\u0027: flexvol_info[\u0027language\u0027],"}],"source_content_type":"text/x-python","patch_set":16,"id":"e1d2b49e_76a0a07a","line":1803,"range":{"start_line":1803,"start_character":38,"end_line":1803,"end_character":42},"in_reply_to":"09f1e5b6_4e87ea1d","updated":"2022-09-09 19:59:54.000000000","message":"Ack","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"64e2e6df4ce4b559e6ab90c0094b8e0843dcbfec","unresolved":true,"context_lines":[{"line_number":1800,"context_line":""},{"line_number":1801,"context_line":"        provisioning_opts \u003d {"},{"line_number":1802,"context_line":"            \u0027aggregate\u0027: flexvol_info[\u0027aggregate\u0027],"},{"line_number":1803,"context_line":"            # space-guarantee can be \u0027none\u0027, \u0027file\u0027, \u0027volume\u0027"},{"line_number":1804,"context_line":"            \u0027space_guarantee_type\u0027: flexvol_info.get(\u0027space-guarantee\u0027),"},{"line_number":1805,"context_line":"            \u0027snapshot_policy\u0027: flexvol_info[\u0027snapshot-policy\u0027],"},{"line_number":1806,"context_line":"            \u0027language\u0027: flexvol_info[\u0027language\u0027],"}],"source_content_type":"text/x-python","patch_set":16,"id":"09f1e5b6_4e87ea1d","line":1803,"range":{"start_line":1803,"start_character":38,"end_line":1803,"end_character":42},"in_reply_to":"c7802bbf_fbeea3c2","updated":"2022-09-09 12:28:38.000000000","message":"It\u0027s a string \u0027none\u0027.","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"228243f2837e4be29e0e4556a8ff8f7a3f73f01b","unresolved":true,"context_lines":[{"line_number":1926,"context_line":"        self.send_request(\u0027/storage/volumes/\u0027, \u0027patch\u0027, body\u003dbody, query\u003dquery,"},{"line_number":1927,"context_line":"                          wait_on_accepted\u003dFalse)"},{"line_number":1928,"context_line":""},{"line_number":1929,"context_line":"    def _parse_lagtime(self, time_str):"},{"line_number":1930,"context_line":"        \"\"\"Parse lagtime string (ISO 8601) into a number of seconds.\"\"\""},{"line_number":1931,"context_line":""},{"line_number":1932,"context_line":"        fmt_str \u003d \u0027PT\u0027"},{"line_number":1933,"context_line":"        if \u0027H\u0027 in time_str:"},{"line_number":1934,"context_line":"            fmt_str +\u003d \u0027%HH\u0027"},{"line_number":1935,"context_line":"        if \u0027M\u0027 in time_str:"},{"line_number":1936,"context_line":"            fmt_str +\u003d \u0027%MM\u0027"},{"line_number":1937,"context_line":"        if \u0027S\u0027 in time_str:"},{"line_number":1938,"context_line":"            fmt_str +\u003d \u0027%SS\u0027"},{"line_number":1939,"context_line":""},{"line_number":1940,"context_line":"        t \u003d None"},{"line_number":1941,"context_line":"        try:"},{"line_number":1942,"context_line":"            t \u003d datetime.strptime(time_str, fmt_str)"},{"line_number":1943,"context_line":"        except Exception:"},{"line_number":1944,"context_line":"            LOG.debug(\"Failed to parse lagtime: %s\", time_str)"},{"line_number":1945,"context_line":"            raise"},{"line_number":1946,"context_line":""},{"line_number":1947,"context_line":"        # convert to timedelta to get the total seconds"},{"line_number":1948,"context_line":"        td \u003d timedelta(hours\u003dt.hour, minutes\u003dt.minute, seconds\u003dt.second)"},{"line_number":1949,"context_line":"        return td.total_seconds()"},{"line_number":1950,"context_line":""},{"line_number":1951,"context_line":"    def _get_snapmirrors(self, source_vserver\u003dNone, source_volume\u003dNone,"},{"line_number":1952,"context_line":"                         destination_vserver\u003dNone, destination_volume\u003dNone):"}],"source_content_type":"text/x-python","patch_set":16,"id":"6eaedf57_28d39237","line":1949,"range":{"start_line":1929,"start_character":0,"end_line":1949,"end_character":33},"updated":"2022-09-09 22:03:49.000000000","message":"This looks correct, but it makes some assumptions about the iso 8601 duration string you\u0027ll be receiving, and it doesn\u0027t have any test coverage.  (Something to think about.)","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c0d8f725fe524380a9c6df5545f2d2c34e13db76","unresolved":true,"context_lines":[{"line_number":1951,"context_line":"    def _get_snapmirrors(self, source_vserver\u003dNone, source_volume\u003dNone,"},{"line_number":1952,"context_line":"                         destination_vserver\u003dNone, destination_volume\u003dNone):"},{"line_number":1953,"context_line":""},{"line_number":1954,"context_line":"        fields \u003d [\u0027state\u0027, \u0027source.svm.name\u0027, \u0027source.path\u0027,"},{"line_number":1955,"context_line":"                  \u0027destination.svm.name\u0027, \u0027destination.path\u0027,"},{"line_number":1956,"context_line":"                  \u0027transfer.end_time\u0027, \u0027lag_time\u0027, \u0027healthy\u0027, \u0027uuid\u0027]"},{"line_number":1957,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3b3625b5_6dc56753","line":1954,"range":{"start_line":1954,"start_character":28,"end_line":1954,"end_character":43},"updated":"2022-09-09 11:10:36.000000000","message":"I\u0027m not sure if they\u0027re defined based on what the backend accepts but seems odd to have a \u0027.\u0027 in a parameter name.\nIn cinder, we usually name it like \u0027source_svm_name\u0027","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"64e2e6df4ce4b559e6ab90c0094b8e0843dcbfec","unresolved":true,"context_lines":[{"line_number":1951,"context_line":"    def _get_snapmirrors(self, source_vserver\u003dNone, source_volume\u003dNone,"},{"line_number":1952,"context_line":"                         destination_vserver\u003dNone, destination_volume\u003dNone):"},{"line_number":1953,"context_line":""},{"line_number":1954,"context_line":"        fields \u003d [\u0027state\u0027, \u0027source.svm.name\u0027, \u0027source.path\u0027,"},{"line_number":1955,"context_line":"                  \u0027destination.svm.name\u0027, \u0027destination.path\u0027,"},{"line_number":1956,"context_line":"                  \u0027transfer.end_time\u0027, \u0027lag_time\u0027, \u0027healthy\u0027, \u0027uuid\u0027]"},{"line_number":1957,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"ce2d0877_cc552bf2","line":1954,"range":{"start_line":1954,"start_character":28,"end_line":1954,"end_character":43},"in_reply_to":"3b3625b5_6dc56753","updated":"2022-09-09 12:28:38.000000000","message":"This is based on ONTAP REST API standard, fields returned in the dict are represented this way, separating the fields by a dot.\n\nFor instance, in this case, the resulting field would be something like: \n\nresult \u003d {\u0027source\u0027: {\u0027svm\u0027: {\u0027name\u0027: \u0027svm-01\u0027}}}","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ab608e2981c8aea028f575ae88293b1647282942","unresolved":false,"context_lines":[{"line_number":1951,"context_line":"    def _get_snapmirrors(self, source_vserver\u003dNone, source_volume\u003dNone,"},{"line_number":1952,"context_line":"                         destination_vserver\u003dNone, destination_volume\u003dNone):"},{"line_number":1953,"context_line":""},{"line_number":1954,"context_line":"        fields \u003d [\u0027state\u0027, \u0027source.svm.name\u0027, \u0027source.path\u0027,"},{"line_number":1955,"context_line":"                  \u0027destination.svm.name\u0027, \u0027destination.path\u0027,"},{"line_number":1956,"context_line":"                  \u0027transfer.end_time\u0027, \u0027lag_time\u0027, \u0027healthy\u0027, \u0027uuid\u0027]"},{"line_number":1957,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"ea639219_687d9a5b","line":1954,"range":{"start_line":1954,"start_character":28,"end_line":1954,"end_character":43},"in_reply_to":"ce2d0877_cc552bf2","updated":"2022-09-09 19:59:54.000000000","message":"Ack","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c0d8f725fe524380a9c6df5545f2d2c34e13db76","unresolved":true,"context_lines":[{"line_number":2152,"context_line":"        query_delete \u003d {\"destination_only\": \"true\"}"},{"line_number":2153,"context_line":""},{"line_number":2154,"context_line":"        snapmirror_uuid \u003d records[0].get(\u0027uuid\u0027)"},{"line_number":2155,"context_line":"        self.send_request(\u0027/snapmirror/relationships/\u0027 +"},{"line_number":2156,"context_line":"                          snapmirror_uuid, \u0027delete\u0027,"},{"line_number":2157,"context_line":"                          query\u003dquery_delete)"},{"line_number":2158,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"123be91f_df7a4682","line":2155,"range":{"start_line":2155,"start_character":27,"end_line":2155,"end_character":53},"updated":"2022-09-09 11:10:36.000000000","message":"this seems to be used quite a lot in the API requests, would be good to define it as a SNAPMIRROR_URL constant globally as a followup","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"},{"author":{"_account_id":33648,"name":"Nahim Alves de Souza","email":"nahimsouza@outlook.com","username":"nahimsouza"},"change_message_id":"64e2e6df4ce4b559e6ab90c0094b8e0843dcbfec","unresolved":true,"context_lines":[{"line_number":2152,"context_line":"        query_delete \u003d {\"destination_only\": \"true\"}"},{"line_number":2153,"context_line":""},{"line_number":2154,"context_line":"        snapmirror_uuid \u003d records[0].get(\u0027uuid\u0027)"},{"line_number":2155,"context_line":"        self.send_request(\u0027/snapmirror/relationships/\u0027 +"},{"line_number":2156,"context_line":"                          snapmirror_uuid, \u0027delete\u0027,"},{"line_number":2157,"context_line":"                          query\u003dquery_delete)"},{"line_number":2158,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"b7012533_f18eba4a","line":2155,"range":{"start_line":2155,"start_character":27,"end_line":2155,"end_character":53},"in_reply_to":"123be91f_df7a4682","updated":"2022-09-09 12:28:38.000000000","message":"Ack","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"}],"cinder/volume/drivers/netapp/dataontap/utils/data_motion.py":[{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"0baf0b0a942202cb6386de7cb545ca698bf5c684","unresolved":true,"context_lines":[{"line_number":552,"context_line":"                wait_call.start(interval\u003d5, timeout\u003dtimeout).wait()"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"            except loopingcall.LoopingCallTimeOut:"},{"line_number":555,"context_line":"                msg \u003d _(\"Timeout waiting destination FlexVol to to come \""},{"line_number":556,"context_line":"                        \"online.\")"},{"line_number":557,"context_line":"                raise na_utils.NetAppDriverException(msg)"},{"line_number":558,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ebdd0dfe_6864029f","line":555,"range":{"start_line":555,"start_character":61,"end_line":555,"end_character":67},"updated":"2022-08-29 00:50:17.000000000","message":"repeated \"to\"","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"1a92e54bcf5f55ee5e1e6bab6c0565283cab065d","unresolved":false,"context_lines":[{"line_number":552,"context_line":"                wait_call.start(interval\u003d5, timeout\u003dtimeout).wait()"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"            except loopingcall.LoopingCallTimeOut:"},{"line_number":555,"context_line":"                msg \u003d _(\"Timeout waiting destination FlexVol to to come \""},{"line_number":556,"context_line":"                        \"online.\")"},{"line_number":557,"context_line":"                raise na_utils.NetAppDriverException(msg)"},{"line_number":558,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ad407f4_59730e60","line":555,"range":{"start_line":555,"start_character":61,"end_line":555,"end_character":67},"in_reply_to":"ebdd0dfe_6864029f","updated":"2022-09-08 22:21:47.000000000","message":"Done","commit_id":"efb85b8c3887f6834a34db7d8558aaa572a60b1c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"228243f2837e4be29e0e4556a8ff8f7a3f73f01b","unresolved":true,"context_lines":[{"line_number":549,"context_line":"                wait_call.start(interval\u003d5, timeout\u003dtimeout).wait()"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"            except loopingcall.LoopingCallTimeOut:"},{"line_number":552,"context_line":"                msg \u003d _(\"Timeout waiting destination FlexVol to to come \""},{"line_number":553,"context_line":"                        \"online.\")"},{"line_number":554,"context_line":"                raise na_utils.NetAppDriverException(msg)"},{"line_number":555,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"38fcbff3_ce9b2578","line":552,"range":{"start_line":552,"start_character":61,"end_line":552,"end_character":66},"updated":"2022-09-09 22:03:49.000000000","message":"nit: this is the same typo you fixed on lines 528-529!","commit_id":"560ae9d66affbfdb84f60016bd73dd65615ffd4c"}]}
