)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36178,"name":"Saravanan Manickam","display_name":"msaravan","email":"manicsaran@gmail.com","username":"msaravan"},"change_message_id":"8cb942867cbe7aad1a7352a097b174ffb736b8e9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6dcb7aa8_47a8a377","updated":"2025-02-17 09:27:19.000000000","message":"recheck","commit_id":"bd2b6a0035a54784a52ce5e6001db7fb802666e3"},{"author":{"_account_id":36179,"name":"Saikumar Pulluri","display_name":"Saikumar Pulluri","email":"saikumar1016@gmail.com","username":"pulluri"},"change_message_id":"0db208f9a892da43f06d090a3721502bb2bb4d95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e228c702_d3f4e100","updated":"2025-02-24 08:22:03.000000000","message":"Implementation looks good to me.","commit_id":"2023101ac870aae2e554975ad45ef21505745d6c"},{"author":{"_account_id":36178,"name":"Saravanan Manickam","display_name":"msaravan","email":"manicsaran@gmail.com","username":"msaravan"},"change_message_id":"a8c4bb4216d6321f8be07f8a69ab664d5a3ba506","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f7828bc8_5fdbb537","updated":"2025-02-19 14:26:03.000000000","message":"recheck","commit_id":"2023101ac870aae2e554975ad45ef21505745d6c"},{"author":{"_account_id":36178,"name":"Saravanan Manickam","display_name":"msaravan","email":"manicsaran@gmail.com","username":"msaravan"},"change_message_id":"67a023e7cd3d6cebabffb453d57963b1d4e9fe06","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"cf991165_ee5cf1cf","updated":"2025-02-25 11:47:30.000000000","message":"run-NetApp CI","commit_id":"2023101ac870aae2e554975ad45ef21505745d6c"},{"author":{"_account_id":36178,"name":"Saravanan Manickam","display_name":"msaravan","email":"manicsaran@gmail.com","username":"msaravan"},"change_message_id":"9b5167bac7c2b5727d44a5f20186dcf73e53359a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"2905f9ad_bc28f5bd","updated":"2025-02-25 18:40:32.000000000","message":"Addressed the comments","commit_id":"38295ee44198859771cb0be1afa65055d6d5cab3"},{"author":{"_account_id":36178,"name":"Saravanan Manickam","display_name":"msaravan","email":"manicsaran@gmail.com","username":"msaravan"},"change_message_id":"29c6f886dc57947dac460604d56b163076c1a42c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"587f934d_e4692d9c","updated":"2025-02-27 15:13:54.000000000","message":"run-NetApp CI","commit_id":"38295ee44198859771cb0be1afa65055d6d5cab3"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"067715a58923761aa2673d63aae5ec3fb75d0abd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"096935b7_8edb74cf","updated":"2025-03-05 23:22:50.000000000","message":"LGTM.  A few nits noted inline to keep in mind for future patches, and one suggestion in netapp/options.py that you can do as a follow up.  I think you should really do it, because string config values that are case sensitive are very easy for operators to mis-type.  (But I think it\u0027s easy to fix; see comment inline.) So I\u0027m leaving a -1 to get your attention; ping me in IRC to let me know you\u0027ve seen the comment, and I will upgrade this to a +2.","commit_id":"3e2184584f1b7e8b1324b1366ef3ac85dd7d822a"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"fa0416d251cee67646d509083e9051ac4d152fd6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"640ed3e1_f789e081","updated":"2025-03-01 00:32:02.000000000","message":"Ok by me, msaravan reports that internal CI is passing and contains adequate coverage.","commit_id":"3e2184584f1b7e8b1324b1366ef3ac85dd7d822a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a293daff48706e33abb8cfc97111383d8c5f0af4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"bb0d2ba0_25f6ae76","updated":"2025-03-06 01:39:00.000000000","message":"Spoke with msaravan in IRC; he acknowledged that he saw my comments, so this is good to go now.","commit_id":"3e2184584f1b7e8b1324b1366ef3ac85dd7d822a"},{"author":{"_account_id":36179,"name":"Saikumar Pulluri","display_name":"Saikumar Pulluri","email":"saikumar1016@gmail.com","username":"pulluri"},"change_message_id":"2a2d6cf1d3aeb1b1fdf89ba20b00101a0de4d7ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"77621caf_98823990","updated":"2025-03-01 07:13:46.000000000","message":"The implementation looks good to me. Thanks Saravanan.","commit_id":"3e2184584f1b7e8b1324b1366ef3ac85dd7d822a"},{"author":{"_account_id":36178,"name":"Saravanan Manickam","display_name":"msaravan","email":"manicsaran@gmail.com","username":"msaravan"},"change_message_id":"16569a127c203c5f40d4cbf1f6c35b37659f4c0a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"922108e8_03c6f86f","updated":"2025-02-28 16:35:24.000000000","message":"recheck","commit_id":"3e2184584f1b7e8b1324b1366ef3ac85dd7d822a"},{"author":{"_account_id":36178,"name":"Saravanan Manickam","display_name":"msaravan","email":"manicsaran@gmail.com","username":"msaravan"},"change_message_id":"f8e8d028db7e2f3ea2f8ef5ac89511732ef8467f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"92551060_ea31989b","updated":"2025-02-28 13:10:36.000000000","message":"recheck","commit_id":"3e2184584f1b7e8b1324b1366ef3ac85dd7d822a"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/utils/test_data_motion.py":[{"author":{"_account_id":36179,"name":"Saikumar Pulluri","display_name":"Saikumar Pulluri","email":"saikumar1016@gmail.com","username":"pulluri"},"change_message_id":"0db208f9a892da43f06d090a3721502bb2bb4d95","unresolved":true,"context_lines":[{"line_number":1036,"context_line":"        self.assertEqual(\u0027fallback2\u0027, target)"},{"line_number":1037,"context_line":"        self.assertFalse(mock_debug_log.called)"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"    def test__failover_host_to_same_host(self):"},{"line_number":1040,"context_line":"        # Mock the required attributes"},{"line_number":1041,"context_line":"        self.dm_mixin.backend_name \u003d \"backend1\""},{"line_number":1042,"context_line":"        secondary_id \u003d \"backend1\""}],"source_content_type":"text/x-python","patch_set":6,"id":"72c527cb_6531853a","line":1039,"updated":"2025-02-24 08:22:03.000000000","message":"nit: Would be nice to have test description this and also for all the newly added tests.","commit_id":"2023101ac870aae2e554975ad45ef21505745d6c"},{"author":{"_account_id":36178,"name":"Saravanan Manickam","display_name":"msaravan","email":"manicsaran@gmail.com","username":"msaravan"},"change_message_id":"9b5167bac7c2b5727d44a5f20186dcf73e53359a","unresolved":false,"context_lines":[{"line_number":1036,"context_line":"        self.assertEqual(\u0027fallback2\u0027, target)"},{"line_number":1037,"context_line":"        self.assertFalse(mock_debug_log.called)"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"    def test__failover_host_to_same_host(self):"},{"line_number":1040,"context_line":"        # Mock the required attributes"},{"line_number":1041,"context_line":"        self.dm_mixin.backend_name \u003d \"backend1\""},{"line_number":1042,"context_line":"        secondary_id \u003d \"backend1\""}],"source_content_type":"text/x-python","patch_set":6,"id":"b375de87_f7dea2ad","line":1039,"in_reply_to":"72c527cb_6531853a","updated":"2025-02-25 18:40:32.000000000","message":"Addressed","commit_id":"2023101ac870aae2e554975ad45ef21505745d6c"}],"cinder/volume/drivers/netapp/dataontap/block_cmode.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"067715a58923761aa2673d63aae5ec3fb75d0abd","unresolved":true,"context_lines":[{"line_number":76,"context_line":"                                                             **kwargs)"},{"line_number":77,"context_line":"        self.configuration.append_config_values(na_opts.netapp_cluster_opts)"},{"line_number":78,"context_line":"        self.driver_mode \u003d \u0027cluster\u0027"},{"line_number":79,"context_line":"        self.failed_over_backend_name \u003d kwargs.get(\u0027active_backend_id\u0027).\\"},{"line_number":80,"context_line":"            strip() if kwargs.get(\u0027active_backend_id\u0027) is not None else None"},{"line_number":81,"context_line":"        self.failed_over \u003d bool(self.failed_over_backend_name)"},{"line_number":82,"context_line":"        self.replication_enabled \u003d ("},{"line_number":83,"context_line":"            True if self.get_replication_backend_names("}],"source_content_type":"text/x-python","patch_set":10,"id":"6e4cb757_fc194896","line":80,"range":{"start_line":79,"start_character":8,"end_line":80,"end_character":76},"updated":"2025-03-05 23:22:50.000000000","message":"nit: this is another place where using parentheses could make this more readable","commit_id":"3e2184584f1b7e8b1324b1366ef3ac85dd7d822a"}],"cinder/volume/drivers/netapp/dataontap/utils/data_motion.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"067715a58923761aa2673d63aae5ec3fb75d0abd","unresolved":true,"context_lines":[{"line_number":112,"context_line":"        if replication_enabled:"},{"line_number":113,"context_line":"            return self.get_replication_policy(configuration) \u003d\u003d \\"},{"line_number":114,"context_line":"                \"AutomatedFailOver\""},{"line_number":115,"context_line":"        return False"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def get_snapmirrors(self, src_backend_name, dest_backend_name,"},{"line_number":118,"context_line":"                        src_flexvol_name\u003dNone, dest_flexvol_name\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"68e267d6_4577ca08","line":115,"updated":"2025-03-05 23:22:50.000000000","message":"nit: you can avoid having to use the line continuation character by enclosing the expression to return in parentheses","commit_id":"3e2184584f1b7e8b1324b1366ef3ac85dd7d822a"}],"cinder/volume/drivers/netapp/options.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"067715a58923761aa2673d63aae5ec3fb75d0abd","unresolved":true,"context_lines":[{"line_number":221,"context_line":"                    \u0027MirrorAllSnapshots which is based on async-mirror.\u0027"},{"line_number":222,"context_line":"                    \u0027User can pass values like Sync, StrictSync for \u0027"},{"line_number":223,"context_line":"                    \u0027synchronous snapmirror relationship (SM-S) to achieve \u0027"},{"line_number":224,"context_line":"                    \u0027zero RPO\u0027)]"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"netapp_support_opts \u003d ["},{"line_number":227,"context_line":"    cfg.StrOpt(\u0027netapp_api_trace_pattern\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fbd0ee2a_4843a795","line":224,"updated":"2025-03-05 23:22:50.000000000","message":"This can be a follow up (but do it soon): It would be good to use the \u0027choices\u0027 property here so that oslo.config will raise an error if an operator misspells an option name (like \"MirrorAllSnpshots\") and then wonders why the mirroring isn\u0027t happening.  An example of doing this is here:\n\nhttps://opendev.org/openstack/cinder/src/commit/64bf9fc0bb2bb39773fdd0feef5be9398243f90a/cinder/backup/chunkeddriver.py#L53-L64","commit_id":"3e2184584f1b7e8b1324b1366ef3ac85dd7d822a"}],"releasenotes/notes/synchronous-mirror-support-for-netapp-backends-3cece6d56fec332c.yaml":[{"author":{"_account_id":36179,"name":"Saikumar Pulluri","display_name":"Saikumar Pulluri","email":"saikumar1016@gmail.com","username":"pulluri"},"change_message_id":"6a0460f74ca7177be2bad851e8531421154cab54","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Synchronous mirror support for NetApp Backends. Providing an option "},{"line_number":5,"context_line":"    netapp_replication_policy for the replication of netapp backends, to"},{"line_number":6,"context_line":"    enable the user to apply synchronous mirror and other relevant policies. "},{"line_number":7,"context_line":"    Code also has been added to fail back from secondary to primary"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"59bb960e_c7b0e9ee","line":4,"updated":"2025-02-24 08:32:21.000000000","message":"nit: Remove the extra spaces in line 4 and 6.","commit_id":"2023101ac870aae2e554975ad45ef21505745d6c"},{"author":{"_account_id":36178,"name":"Saravanan Manickam","display_name":"msaravan","email":"manicsaran@gmail.com","username":"msaravan"},"change_message_id":"9b5167bac7c2b5727d44a5f20186dcf73e53359a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Synchronous mirror support for NetApp Backends. Providing an option "},{"line_number":5,"context_line":"    netapp_replication_policy for the replication of netapp backends, to"},{"line_number":6,"context_line":"    enable the user to apply synchronous mirror and other relevant policies. "},{"line_number":7,"context_line":"    Code also has been added to fail back from secondary to primary"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3e77a7f2_3282835b","line":4,"in_reply_to":"59bb960e_c7b0e9ee","updated":"2025-02-25 18:40:32.000000000","message":"Addressed.","commit_id":"2023101ac870aae2e554975ad45ef21505745d6c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"3d09ed53599cfb602ef4c9ec811d456115f85a62","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"f69d4aac_0c75f636","line":9,"updated":"2025-03-05 23:26:15.000000000","message":"I assume you\u0027re planning to add some documentation about this feature and how to configure it?","commit_id":"3e2184584f1b7e8b1324b1366ef3ac85dd7d822a"}]}
