)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"ece7e59c0cfe7c355d99e4448908a2d030aca861","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7c4fa9f6_28d2613e","updated":"2026-01-28 09:28:23.000000000","message":"Run-NetApp CI","commit_id":"8ac45e66401cf498514ee7c5eb72b2a2ab28d51a"},{"author":{"_account_id":38373,"name":"Manideep","display_name":"Manideep","email":"manideep.openstack@gmail.com","username":"manideepn","status":"NetApp"},"change_message_id":"0cd40d1b82fd4397a3fe16c0eda61ed4eddb0f55","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b3915544_ff30d4ed","updated":"2026-01-28 11:40:53.000000000","message":"Run-NetApp CI","commit_id":"c6275b9eed49c08cd8c3da01b25318925909387a"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"c1d72eb352990dd715f16f6a8c76d139d56a365e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"6b5d5674_dc1c807e","updated":"2026-02-11 13:45:58.000000000","message":"Run-NetApp CI","commit_id":"5f8ee2fac2ccc8e8e626d68e598e3109fc198333"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"aed9a00579b6ed7cbfdb5b7520a04b13e87b77b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"6bb228f7_7d088f81","updated":"2026-02-04 08:56:25.000000000","message":"Run-NetApp CI","commit_id":"5f8ee2fac2ccc8e8e626d68e598e3109fc198333"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"87d725d13b34d93da4a97511962264980a9392c3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"7d279cd2_bdf1b434","updated":"2026-02-04 04:15:21.000000000","message":"Run-NetApp CI","commit_id":"5f8ee2fac2ccc8e8e626d68e598e3109fc198333"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"601f066e62f792b0e981edbf72a5ce7fc81db1a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"f01b11df_6e617443","updated":"2026-02-12 07:32:46.000000000","message":"run-NetApp CI","commit_id":"97ce998638ab576d0c77a1f1f2e401685a49f431"},{"author":{"_account_id":38373,"name":"Manideep","display_name":"Manideep","email":"manideep.openstack@gmail.com","username":"manideepn","status":"NetApp"},"change_message_id":"14c732d2b03ebf2b808db50c469fbd415f01f8a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"b63c4bbf_954d1510","updated":"2026-02-12 14:55:09.000000000","message":"Run-NetApp CI","commit_id":"c0d3efe1a90080b4b5378813570fee53aa7d71bf"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"48ce8277f793a6462d812ca616411dd3eb36f7cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"b8e7d6e6_4872ce88","updated":"2026-02-12 08:53:18.000000000","message":"Run-NetApp CI","commit_id":"c0d3efe1a90080b4b5378813570fee53aa7d71bf"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"ab445c3b0402c3d62379874e8535e092490d3c57","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"af53bbff_b6f0c842","updated":"2026-02-12 10:40:42.000000000","message":"run-NetApp CI","commit_id":"c0d3efe1a90080b4b5378813570fee53aa7d71bf"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"9acc42e6a2dbe4fc61fb71ab834043c00103e280","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"b3366611_7a0c8443","updated":"2026-02-12 09:41:09.000000000","message":"run-NetApp CI","commit_id":"c0d3efe1a90080b4b5378813570fee53aa7d71bf"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"a8498a61a8c72c9d04b361f3eabd14957c5d5edb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"94be762c_a1ae97a2","updated":"2026-02-16 06:14:41.000000000","message":"Run-NetApp CI","commit_id":"9fee9edba8b2a77a4c9a447eb2e8d5b86ead8dce"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"2a275c2742f80c136705780f7244474b9aa8729a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"d1ce686e_8066dd57","updated":"2026-02-13 05:51:38.000000000","message":"run-NetApp CI","commit_id":"9fee9edba8b2a77a4c9a447eb2e8d5b86ead8dce"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"7c2af812bdf5be2b1a9d6f5c6ad977f208585a71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"10dce26a_53eb4f9a","updated":"2026-02-20 10:52:22.000000000","message":"Please have a look at my inline comments","commit_id":"a263235bdb777b834add6f7d6b2cebde38e0b21e"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"0729c1dea0c962d9ff689c487f384f6396789a99","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"9a5d0851_a87c26b6","updated":"2026-02-23 06:52:31.000000000","message":"Thanks for the explanations.","commit_id":"1d3e62478ef659a8200d17ef5a01309766a87c28"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"a750bfcee014ac242038c936542dfcb3e0693b03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"291f1d8d_cddbad68","updated":"2026-02-23 14:53:20.000000000","message":"Changes already reviewed by my in downstream Gerrit so LGTM..!","commit_id":"54f1c607536fbff19b8e130e754b56bb5e0983b3"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"ae146004b5bafcf1fe3b1d75e2aa580a0c6bc613","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"1bc860ae_5814b74a","updated":"2026-02-23 06:57:33.000000000","message":"Removed the depends on from commit message for now, will add back once 973777 is in good shape w.r.t zuul rebase conflict.\nPlease go ahead and review in the meanwhile.","commit_id":"54f1c607536fbff19b8e130e754b56bb5e0983b3"},{"author":{"_account_id":38479,"name":"Medha Choudhary","display_name":"Medha Choudhary","email":"medhaj06@gmail.com","username":"medhac1403","status":"NetApp"},"change_message_id":"da8dd00816bde19e6a9fd555289764d8f0c03e56","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"120b1f66_75b3578a","updated":"2026-02-25 11:58:38.000000000","message":"Run-NetApp CI","commit_id":"54f1c607536fbff19b8e130e754b56bb5e0983b3"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"8f6fffcbe279e17338ca517790ce727eefc160f2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"79583f00_e871886d","updated":"2026-02-25 06:44:20.000000000","message":"Run-NetApp CI","commit_id":"54f1c607536fbff19b8e130e754b56bb5e0983b3"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"351f917739750fc5c4f148c555056ff31a2b1cb8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"827cff8c_501773c1","updated":"2026-02-23 13:23:24.000000000","message":"Run-NetApp CI","commit_id":"54f1c607536fbff19b8e130e754b56bb5e0983b3"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"81648aa30cd5551b4333fe00c28fd6b0eb90922d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"d993066c_d95f6930","updated":"2026-02-23 08:37:16.000000000","message":"recheck","commit_id":"54f1c607536fbff19b8e130e754b56bb5e0983b3"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"7f5623a857bad7d9c10c5ad372a7f0698cc28017","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"b18beeb8_000c836d","updated":"2026-02-25 14:31:19.000000000","message":"Hey, Kumar! Thanks for working on this, please take a look at requests and questions inline","commit_id":"8015533f9706d2e32e2952948ea488e330f75c96"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4a7ea5652abf75eee8f7542adb7f561801663102","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"19f2a08f_6944a1ff","in_reply_to":"b18beeb8_000c836d","updated":"2026-02-25 17:33:36.000000000","message":"Addressed all the feedback comments, please review.","commit_id":"8015533f9706d2e32e2952948ea488e330f75c96"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4e85e083e2d0fe22da08f69aeab4cd5b198de6a5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"3ce586db_041934b4","updated":"2026-03-03 03:58:51.000000000","message":"@gouthampravi@gmail.com addressed all the comments as part of https://review.opendev.org/c/openstack/manila/+/978604.\nPlease review.","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"eefcf409396b10d6535ff1529ebf59c6b17a10a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"9202f889_0fc46d71","updated":"2026-02-25 17:25:57.000000000","message":"Addressed comments.","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"a9f7080d46d38941dadb2958efe3300ce4e4d2e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"8b2fe293_fdcdfe42","updated":"2026-02-26 08:49:00.000000000","message":"LGTM","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"9c6bd827ed241ec848c781842d34b740e82faf2f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"bdfad692_8619787f","updated":"2026-02-26 05:27:05.000000000","message":"LGTM ..!","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"10a66a1d919dbde072072ea4544718993be116a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"e64d5048_c0bcefc8","updated":"2026-02-25 22:30:12.000000000","message":"Looking good, thanks Kumar!","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4fe6ef27dc8245dfc7f6b245bfe8ff69c9a4c6a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"773d7350_973fa1ba","updated":"2026-02-26 21:19:05.000000000","message":"Thanks, LGTM .. good to see the NetApp CI pass here, although failing a seemingly unrelated test in the job that exercises the rest API.. pLease respond to, or address the comments in a follow up change","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"79b88560ecceffab24d0e57eb82bb336548993c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"a90b1dfe_b955f4fb","updated":"2026-02-26 16:04:48.000000000","message":"Will merge once replica metadata will be merged.","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"}],"manila/share/drivers/netapp/dataontap/client/client_cmode.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"7f5623a857bad7d9c10c5ad372a7f0698cc28017","unresolved":true,"context_lines":[{"line_number":5186,"context_line":"                   \"List returned: %s.\" % snapmirror_destinations_list)"},{"line_number":5187,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":5188,"context_line":""},{"line_number":5189,"context_line":"        source_path \u003d f\"{source_vserver}:{source_volume}\""},{"line_number":5190,"context_line":"        dest_path \u003d f\"{dest_vserver}:{dest_volume}\""},{"line_number":5191,"context_line":""},{"line_number":5192,"context_line":"        api_args \u003d self._build_snapmirror_request("},{"line_number":5193,"context_line":"            source_path\u003dsource_path, dest_path\u003ddest_path)"}],"source_content_type":"text/x-python","patch_set":20,"id":"4b585647_9fd2ca61","line":5190,"range":{"start_line":5189,"start_character":8,"end_line":5190,"end_character":51},"updated":"2026-02-25 14:31:19.000000000","message":"this is being repeated a couple of times, please extract this into a private method and call this where this is being repeated","commit_id":"8015533f9706d2e32e2952948ea488e330f75c96"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"eefcf409396b10d6535ff1529ebf59c6b17a10a9","unresolved":false,"context_lines":[{"line_number":5186,"context_line":"                   \"List returned: %s.\" % snapmirror_destinations_list)"},{"line_number":5187,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":5188,"context_line":""},{"line_number":5189,"context_line":"        source_path \u003d f\"{source_vserver}:{source_volume}\""},{"line_number":5190,"context_line":"        dest_path \u003d f\"{dest_vserver}:{dest_volume}\""},{"line_number":5191,"context_line":""},{"line_number":5192,"context_line":"        api_args \u003d self._build_snapmirror_request("},{"line_number":5193,"context_line":"            source_path\u003dsource_path, dest_path\u003ddest_path)"}],"source_content_type":"text/x-python","patch_set":20,"id":"1139260e_94f880a3","line":5190,"range":{"start_line":5189,"start_character":8,"end_line":5190,"end_character":51},"in_reply_to":"4b585647_9fd2ca61","updated":"2026-02-25 17:25:57.000000000","message":"Done","commit_id":"8015533f9706d2e32e2952948ea488e330f75c96"}],"manila/share/drivers/netapp/dataontap/cluster_mode/data_motion.py":[{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"7c2af812bdf5be2b1a9d6f5c6ad977f208585a71","unresolved":true,"context_lines":[{"line_number":518,"context_line":""},{"line_number":519,"context_line":"            # deletes all snapmirror relationships involving this replica to"},{"line_number":520,"context_line":"            # ensure new relation can be set. For efficient snapmirror, it"},{"line_number":521,"context_line":"            # does not remove the snapshots, only releasing the relationship"},{"line_number":522,"context_line":"            # info if FlexGroup volume."},{"line_number":523,"context_line":"            self.delete_snapmirror(other_replica, replica,"},{"line_number":524,"context_line":"                                   release\u003dis_flexgroup,"},{"line_number":525,"context_line":"                                   relationship_info_only\u003dis_flexgroup)"}],"source_content_type":"text/x-python","patch_set":16,"id":"cd4e5120_23d1d551","side":"PARENT","line":522,"range":{"start_line":521,"start_character":12,"end_line":522,"end_character":39},"updated":"2026-02-20 10:52:22.000000000","message":"There is no more special handling for flexgroup volumes now? Is this intended? Can you explain this, please","commit_id":"9e631a614aae0a1d77a65e63d28ab33dc0c02343"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"d1d31c8456de7e7d145bca1cfd116759455dd66a","unresolved":false,"context_lines":[{"line_number":518,"context_line":""},{"line_number":519,"context_line":"            # deletes all snapmirror relationships involving this replica to"},{"line_number":520,"context_line":"            # ensure new relation can be set. For efficient snapmirror, it"},{"line_number":521,"context_line":"            # does not remove the snapshots, only releasing the relationship"},{"line_number":522,"context_line":"            # info if FlexGroup volume."},{"line_number":523,"context_line":"            self.delete_snapmirror(other_replica, replica,"},{"line_number":524,"context_line":"                                   release\u003dis_flexgroup,"},{"line_number":525,"context_line":"                                   relationship_info_only\u003dis_flexgroup)"}],"source_content_type":"text/x-python","patch_set":16,"id":"877077dc_a7215254","side":"PARENT","line":522,"range":{"start_line":521,"start_character":12,"end_line":522,"end_character":39},"in_reply_to":"cd4e5120_23d1d551","updated":"2026-02-23 05:20:14.000000000","message":"As per ONTAP best practice(async/sync), we are retaining snapshots and attempting to releasing the source and snapmirror metadata only, which is a mandatory for sync snapmirror case to create reverse relationship.\n\nWe are following same for FlexVol as the current FlexGroup code, nothing changes for flexgroup case.","commit_id":"9e631a614aae0a1d77a65e63d28ab33dc0c02343"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"7c2af812bdf5be2b1a9d6f5c6ad977f208585a71","unresolved":true,"context_lines":[{"line_number":615,"context_line":"        # 3. create"},{"line_number":616,"context_line":"        if is_sync_policy:"},{"line_number":617,"context_line":"            \"\"\"skip the schedule setting incase of sync policy type"},{"line_number":618,"context_line":"            as per NetApp design\"\"\""},{"line_number":619,"context_line":"            schedule \u003d None"},{"line_number":620,"context_line":"        else:"},{"line_number":621,"context_line":"            schedule \u003d replica_config.netapp_snapmirror_schedule"}],"source_content_type":"text/x-python","patch_set":16,"id":"4978ac2d_ea61eb69","line":618,"updated":"2026-02-20 10:52:22.000000000","message":"Shouldn\u0027t we also check here if there are snapshots existing?","commit_id":"a263235bdb777b834add6f7d6b2cebde38e0b21e"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"d1d31c8456de7e7d145bca1cfd116759455dd66a","unresolved":false,"context_lines":[{"line_number":615,"context_line":"        # 3. create"},{"line_number":616,"context_line":"        if is_sync_policy:"},{"line_number":617,"context_line":"            \"\"\"skip the schedule setting incase of sync policy type"},{"line_number":618,"context_line":"            as per NetApp design\"\"\""},{"line_number":619,"context_line":"            schedule \u003d None"},{"line_number":620,"context_line":"        else:"},{"line_number":621,"context_line":"            schedule \u003d replica_config.netapp_snapmirror_schedule"}],"source_content_type":"text/x-python","patch_set":16,"id":"ef19f449_fc61bb04","line":618,"in_reply_to":"4978ac2d_ea61eb69","updated":"2026-02-23 05:20:14.000000000","message":"No. Ideally all snapshots should be replicated to all replicas and as part of Failover/promote we want to break the relationship and attempt to create the reverse relationship given that old active active site is up.","commit_id":"a263235bdb777b834add6f7d6b2cebde38e0b21e"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"7f5623a857bad7d9c10c5ad372a7f0698cc28017","unresolved":true,"context_lines":[{"line_number":192,"context_line":"                              na_utils.MIRROR_ALL_SNAP_POLICY))"},{"line_number":193,"context_line":"        # Determine if the policy is synchronous. We need to change"},{"line_number":194,"context_line":"        # to call ONTAP when we support custom policies."},{"line_number":195,"context_line":"        is_sync_policy \u003d replication_policy in (\u0027Sync\u0027, \u0027StrictSync\u0027)"},{"line_number":196,"context_line":"        LOG.debug(\"is_sync_policy: %s\", is_sync_policy)"},{"line_number":197,"context_line":"        return replication_policy, is_sync_policy"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"b132871b_3d2cfa27","line":195,"range":{"start_line":195,"start_character":48,"end_line":195,"end_character":68},"updated":"2026-02-25 14:31:19.000000000","message":"these should be constants in the driver code, so that we avoid typos if we need to write code somewhere else","commit_id":"8015533f9706d2e32e2952948ea488e330f75c96"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"eefcf409396b10d6535ff1529ebf59c6b17a10a9","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                              na_utils.MIRROR_ALL_SNAP_POLICY))"},{"line_number":193,"context_line":"        # Determine if the policy is synchronous. We need to change"},{"line_number":194,"context_line":"        # to call ONTAP when we support custom policies."},{"line_number":195,"context_line":"        is_sync_policy \u003d replication_policy in (\u0027Sync\u0027, \u0027StrictSync\u0027)"},{"line_number":196,"context_line":"        LOG.debug(\"is_sync_policy: %s\", is_sync_policy)"},{"line_number":197,"context_line":"        return replication_policy, is_sync_policy"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"826c234c_895c5ab2","line":195,"range":{"start_line":195,"start_character":48,"end_line":195,"end_character":68},"in_reply_to":"b132871b_3d2cfa27","updated":"2026-02-25 17:25:57.000000000","message":"Done","commit_id":"8015533f9706d2e32e2952948ea488e330f75c96"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"7f5623a857bad7d9c10c5ad372a7f0698cc28017","unresolved":true,"context_lines":[{"line_number":556,"context_line":"            self.get_backend_info_for_share(new_source_replica))"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"        if replica[\u0027id\u0027] \u003d\u003d orig_source_replica[\u0027id\u0027]:"},{"line_number":559,"context_line":"            \"\"\"Take the policy from the existing snapmirror relationship"},{"line_number":560,"context_line":"            if the replica is the original active replica. This is to ensure"},{"line_number":561,"context_line":"            the same policy is used when the replica is resynced with the new"},{"line_number":562,"context_line":"            source.\"\"\""},{"line_number":563,"context_line":"            try:"},{"line_number":564,"context_line":"                snapmirrors \u003d self.get_snapmirrors("},{"line_number":565,"context_line":"                    orig_source_replica, new_source_replica)"}],"source_content_type":"text/x-python","patch_set":20,"id":"c75399a2_e3e0a721","line":562,"range":{"start_line":559,"start_character":12,"end_line":562,"end_character":22},"updated":"2026-02-25 14:31:19.000000000","message":"```suggestion\n            # Take the policy from the existing snapmirror relationship\n            # if the replica is the original active replica. This is to ensure\n            # the same policy is used when the replica is resynced with the new\n            # source.\n```","commit_id":"8015533f9706d2e32e2952948ea488e330f75c96"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"eefcf409396b10d6535ff1529ebf59c6b17a10a9","unresolved":false,"context_lines":[{"line_number":556,"context_line":"            self.get_backend_info_for_share(new_source_replica))"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"        if replica[\u0027id\u0027] \u003d\u003d orig_source_replica[\u0027id\u0027]:"},{"line_number":559,"context_line":"            \"\"\"Take the policy from the existing snapmirror relationship"},{"line_number":560,"context_line":"            if the replica is the original active replica. This is to ensure"},{"line_number":561,"context_line":"            the same policy is used when the replica is resynced with the new"},{"line_number":562,"context_line":"            source.\"\"\""},{"line_number":563,"context_line":"            try:"},{"line_number":564,"context_line":"                snapmirrors \u003d self.get_snapmirrors("},{"line_number":565,"context_line":"                    orig_source_replica, new_source_replica)"}],"source_content_type":"text/x-python","patch_set":20,"id":"dcb3a826_8d113130","line":562,"range":{"start_line":559,"start_character":12,"end_line":562,"end_character":22},"in_reply_to":"c75399a2_e3e0a721","updated":"2026-02-25 17:25:57.000000000","message":"Done","commit_id":"8015533f9706d2e32e2952948ea488e330f75c96"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"7f5623a857bad7d9c10c5ad372a7f0698cc28017","unresolved":true,"context_lines":[{"line_number":563,"context_line":"            try:"},{"line_number":564,"context_line":"                snapmirrors \u003d self.get_snapmirrors("},{"line_number":565,"context_line":"                    orig_source_replica, new_source_replica)"},{"line_number":566,"context_line":"                policy \u003d snapmirrors[0].get(\"policy\") if snapmirrors else None"},{"line_number":567,"context_line":"                is_sync_policy \u003d policy in (\u0027Sync\u0027, \u0027StrictSync\u0027)"},{"line_number":568,"context_line":"            except netapp_api.NaApiError:"},{"line_number":569,"context_line":"                LOG.exception(\"Could not get snapmirrors for replica %s.\","}],"source_content_type":"text/x-python","patch_set":20,"id":"6db71aa9_d5babc88","line":566,"range":{"start_line":566,"start_character":16,"end_line":566,"end_character":39},"updated":"2026-02-25 14:31:19.000000000","message":"if no snapmirrors are found and it returns an empty list, this will throw an exception for trying to access an element that doesn\u0027t exist and that exception won\u0027t be captured by the except statement down there. Please check if it is a list first and/or wrap this with a try/catch","commit_id":"8015533f9706d2e32e2952948ea488e330f75c96"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"eefcf409396b10d6535ff1529ebf59c6b17a10a9","unresolved":false,"context_lines":[{"line_number":563,"context_line":"            try:"},{"line_number":564,"context_line":"                snapmirrors \u003d self.get_snapmirrors("},{"line_number":565,"context_line":"                    orig_source_replica, new_source_replica)"},{"line_number":566,"context_line":"                policy \u003d snapmirrors[0].get(\"policy\") if snapmirrors else None"},{"line_number":567,"context_line":"                is_sync_policy \u003d policy in (\u0027Sync\u0027, \u0027StrictSync\u0027)"},{"line_number":568,"context_line":"            except netapp_api.NaApiError:"},{"line_number":569,"context_line":"                LOG.exception(\"Could not get snapmirrors for replica %s.\","}],"source_content_type":"text/x-python","patch_set":20,"id":"f5c1c71e_66ac2d82","line":566,"range":{"start_line":566,"start_character":16,"end_line":566,"end_character":39},"in_reply_to":"6db71aa9_d5babc88","updated":"2026-02-25 17:25:57.000000000","message":"Done","commit_id":"8015533f9706d2e32e2952948ea488e330f75c96"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4fe6ef27dc8245dfc7f6b245bfe8ff69c9a4c6a1","unresolved":true,"context_lines":[{"line_number":251,"context_line":"        # 1. Create SnapMirror relationship"},{"line_number":252,"context_line":"        config \u003d get_backend_configuration(dest_backend)"},{"line_number":253,"context_line":"        if is_sync_policy:"},{"line_number":254,"context_line":"            \"\"\"skip the schedule setting incase of sync policy type"},{"line_number":255,"context_line":"            as per NetApp design\"\"\""},{"line_number":256,"context_line":"            schedule \u003d None"},{"line_number":257,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":21,"id":"00e65436_2cd17b16","line":254,"range":{"start_line":254,"start_character":41,"end_line":254,"end_character":47},"updated":"2026-02-26 21:19:05.000000000","message":"in case\n\nalso fix docstring style to regular multi line comment","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4e85e083e2d0fe22da08f69aeab4cd5b198de6a5","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        # 1. Create SnapMirror relationship"},{"line_number":252,"context_line":"        config \u003d get_backend_configuration(dest_backend)"},{"line_number":253,"context_line":"        if is_sync_policy:"},{"line_number":254,"context_line":"            \"\"\"skip the schedule setting incase of sync policy type"},{"line_number":255,"context_line":"            as per NetApp design\"\"\""},{"line_number":256,"context_line":"            schedule \u003d None"},{"line_number":257,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":21,"id":"9b5196d9_56fa0dae","line":254,"range":{"start_line":254,"start_character":41,"end_line":254,"end_character":47},"in_reply_to":"00e65436_2cd17b16","updated":"2026-03-03 03:58:51.000000000","message":"Done","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4fe6ef27dc8245dfc7f6b245bfe8ff69c9a4c6a1","unresolved":true,"context_lines":[{"line_number":291,"context_line":"        1. Abort snapmirror"},{"line_number":292,"context_line":"        2. Quiesce snapmirror"},{"line_number":293,"context_line":"        3. Delete the snapmirror"},{"line_number":294,"context_line":"        3. Release snapmirror to clean up snapmirror metadata and snapshots"},{"line_number":295,"context_line":"        \"\"\""},{"line_number":296,"context_line":"        dest_volume_name, dest_vserver, dest_backend \u003d ("},{"line_number":297,"context_line":"            self.get_backend_info_for_share(dest_share_obj))"}],"source_content_type":"text/x-python","patch_set":21,"id":"9e07b7d4_c6e7975d","line":294,"range":{"start_line":294,"start_character":8,"end_line":294,"end_character":9},"updated":"2026-02-26 21:19:05.000000000","message":"4.?","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4e85e083e2d0fe22da08f69aeab4cd5b198de6a5","unresolved":false,"context_lines":[{"line_number":291,"context_line":"        1. Abort snapmirror"},{"line_number":292,"context_line":"        2. Quiesce snapmirror"},{"line_number":293,"context_line":"        3. Delete the snapmirror"},{"line_number":294,"context_line":"        3. Release snapmirror to clean up snapmirror metadata and snapshots"},{"line_number":295,"context_line":"        \"\"\""},{"line_number":296,"context_line":"        dest_volume_name, dest_vserver, dest_backend \u003d ("},{"line_number":297,"context_line":"            self.get_backend_info_for_share(dest_share_obj))"}],"source_content_type":"text/x-python","patch_set":21,"id":"54d066a0_9eaa372d","line":294,"range":{"start_line":294,"start_character":8,"end_line":294,"end_character":9},"in_reply_to":"9e07b7d4_c6e7975d","updated":"2026-03-03 03:58:51.000000000","message":"Done","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4fe6ef27dc8245dfc7f6b245bfe8ff69c9a4c6a1","unresolved":true,"context_lines":[{"line_number":564,"context_line":"                snapmirrors \u003d self.get_snapmirrors("},{"line_number":565,"context_line":"                    orig_source_replica, new_source_replica)"},{"line_number":566,"context_line":"                policy \u003d (snapmirrors[0].get(\"policy\")"},{"line_number":567,"context_line":"                          if snapmirrors and len(snapmirrors) \u003e 0"},{"line_number":568,"context_line":"                          else None)"},{"line_number":569,"context_line":"                is_sync_policy \u003d policy in na_utils.SUPPORTED_SYNC_POLICIES"},{"line_number":570,"context_line":"            except netapp_api.NaApiError:"}],"source_content_type":"text/x-python","patch_set":21,"id":"4d07f2a3_a6ba948c","line":567,"range":{"start_line":567,"start_character":26,"end_line":567,"end_character":44},"updated":"2026-02-26 21:19:05.000000000","message":"seems redundant","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4e85e083e2d0fe22da08f69aeab4cd5b198de6a5","unresolved":false,"context_lines":[{"line_number":564,"context_line":"                snapmirrors \u003d self.get_snapmirrors("},{"line_number":565,"context_line":"                    orig_source_replica, new_source_replica)"},{"line_number":566,"context_line":"                policy \u003d (snapmirrors[0].get(\"policy\")"},{"line_number":567,"context_line":"                          if snapmirrors and len(snapmirrors) \u003e 0"},{"line_number":568,"context_line":"                          else None)"},{"line_number":569,"context_line":"                is_sync_policy \u003d policy in na_utils.SUPPORTED_SYNC_POLICIES"},{"line_number":570,"context_line":"            except netapp_api.NaApiError:"}],"source_content_type":"text/x-python","patch_set":21,"id":"e238c616_ab5ec5d5","line":567,"range":{"start_line":567,"start_character":26,"end_line":567,"end_character":44},"in_reply_to":"4d07f2a3_a6ba948c","updated":"2026-03-03 03:58:51.000000000","message":"Done","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4fe6ef27dc8245dfc7f6b245bfe8ff69c9a4c6a1","unresolved":true,"context_lines":[{"line_number":574,"context_line":"                       % replica[\u0027id\u0027])"},{"line_number":575,"context_line":"                raise exception.NetAppException(message\u003dmsg)"},{"line_number":576,"context_line":"        else:"},{"line_number":577,"context_line":"            \"\"\"If the replica is not the original active replica then"},{"line_number":578,"context_line":"            get the policy from the replica\u0027s metadata.\"\"\""},{"line_number":579,"context_line":"            policy, is_sync_policy \u003d ("},{"line_number":580,"context_line":"                self.get_policy_from_share_replica_metadata(replica))"},{"line_number":581,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"abcb8d5f_f78d592f","line":578,"range":{"start_line":577,"start_character":12,"end_line":578,"end_character":58},"updated":"2026-02-26 21:19:05.000000000","message":"see comment below regarding usage of docstrings","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4e85e083e2d0fe22da08f69aeab4cd5b198de6a5","unresolved":false,"context_lines":[{"line_number":574,"context_line":"                       % replica[\u0027id\u0027])"},{"line_number":575,"context_line":"                raise exception.NetAppException(message\u003dmsg)"},{"line_number":576,"context_line":"        else:"},{"line_number":577,"context_line":"            \"\"\"If the replica is not the original active replica then"},{"line_number":578,"context_line":"            get the policy from the replica\u0027s metadata.\"\"\""},{"line_number":579,"context_line":"            policy, is_sync_policy \u003d ("},{"line_number":580,"context_line":"                self.get_policy_from_share_replica_metadata(replica))"},{"line_number":581,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5b5122d2_1eae8ebd","line":578,"range":{"start_line":577,"start_character":12,"end_line":578,"end_character":58},"in_reply_to":"abcb8d5f_f78d592f","updated":"2026-03-03 03:58:51.000000000","message":"Done","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4fe6ef27dc8245dfc7f6b245bfe8ff69c9a4c6a1","unresolved":true,"context_lines":[{"line_number":588,"context_line":"            # ensure new relation can be set. For efficient snapmirror, it"},{"line_number":589,"context_line":"            # does not remove the snapshots, always releasing the relationship."},{"line_number":590,"context_line":"            self.delete_snapmirror(other_replica, replica,"},{"line_number":591,"context_line":"                                   release\u003dTrue,"},{"line_number":592,"context_line":"                                   relationship_info_only\u003dTrue)"},{"line_number":593,"context_line":"            self.delete_snapmirror(replica, other_replica,"},{"line_number":594,"context_line":"                                   release\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":21,"id":"265ad1d8_e8d15966","line":591,"range":{"start_line":591,"start_character":35,"end_line":591,"end_character":48},"updated":"2026-02-26 21:19:05.000000000","message":"This change is worth calling out in the release notes.. This has an upgrade impact, albeit invisible through the Manila API.","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4e85e083e2d0fe22da08f69aeab4cd5b198de6a5","unresolved":false,"context_lines":[{"line_number":588,"context_line":"            # ensure new relation can be set. For efficient snapmirror, it"},{"line_number":589,"context_line":"            # does not remove the snapshots, always releasing the relationship."},{"line_number":590,"context_line":"            self.delete_snapmirror(other_replica, replica,"},{"line_number":591,"context_line":"                                   release\u003dTrue,"},{"line_number":592,"context_line":"                                   relationship_info_only\u003dTrue)"},{"line_number":593,"context_line":"            self.delete_snapmirror(replica, other_replica,"},{"line_number":594,"context_line":"                                   release\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":21,"id":"ea8198ad_99a0a35b","line":591,"range":{"start_line":591,"start_character":35,"end_line":591,"end_character":48},"in_reply_to":"265ad1d8_e8d15966","updated":"2026-03-03 03:58:51.000000000","message":"Done","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4fe6ef27dc8245dfc7f6b245bfe8ff69c9a4c6a1","unresolved":true,"context_lines":[{"line_number":616,"context_line":""},{"line_number":617,"context_line":"        # 3. create"},{"line_number":618,"context_line":"        if is_sync_policy:"},{"line_number":619,"context_line":"            \"\"\"skip the schedule setting incase of sync policy type"},{"line_number":620,"context_line":"            as per NetApp design\"\"\""},{"line_number":621,"context_line":"            schedule \u003d None"},{"line_number":622,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":21,"id":"6f52fc05_f18c2ff1","line":619,"range":{"start_line":619,"start_character":41,"end_line":619,"end_character":47},"updated":"2026-02-26 21:19:05.000000000","message":"in case","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4e85e083e2d0fe22da08f69aeab4cd5b198de6a5","unresolved":false,"context_lines":[{"line_number":616,"context_line":""},{"line_number":617,"context_line":"        # 3. create"},{"line_number":618,"context_line":"        if is_sync_policy:"},{"line_number":619,"context_line":"            \"\"\"skip the schedule setting incase of sync policy type"},{"line_number":620,"context_line":"            as per NetApp design\"\"\""},{"line_number":621,"context_line":"            schedule \u003d None"},{"line_number":622,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":21,"id":"d948dd43_8c3d8606","line":619,"range":{"start_line":619,"start_character":41,"end_line":619,"end_character":47},"in_reply_to":"6f52fc05_f18c2ff1","updated":"2026-03-03 03:58:51.000000000","message":"Done","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4fe6ef27dc8245dfc7f6b245bfe8ff69c9a4c6a1","unresolved":true,"context_lines":[{"line_number":616,"context_line":""},{"line_number":617,"context_line":"        # 3. create"},{"line_number":618,"context_line":"        if is_sync_policy:"},{"line_number":619,"context_line":"            \"\"\"skip the schedule setting incase of sync policy type"},{"line_number":620,"context_line":"            as per NetApp design\"\"\""},{"line_number":621,"context_line":"            schedule \u003d None"},{"line_number":622,"context_line":"        else:"},{"line_number":623,"context_line":"            schedule \u003d replica_config.netapp_snapmirror_schedule"}],"source_content_type":"text/x-python","patch_set":21,"id":"e2e52226_41c13c22","line":620,"range":{"start_line":619,"start_character":12,"end_line":620,"end_character":35},"updated":"2026-02-26 21:19:05.000000000","message":"please use regular comments, docstring style comments are meant to be used with classes/modules/methods: https://peps.python.org/pep-0257/ \n\nThey mean something to python documentation tooling.. and doing that inline would be inappropriate even if we\u0027re not generating a module documentation right now with this module.","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4e85e083e2d0fe22da08f69aeab4cd5b198de6a5","unresolved":false,"context_lines":[{"line_number":616,"context_line":""},{"line_number":617,"context_line":"        # 3. create"},{"line_number":618,"context_line":"        if is_sync_policy:"},{"line_number":619,"context_line":"            \"\"\"skip the schedule setting incase of sync policy type"},{"line_number":620,"context_line":"            as per NetApp design\"\"\""},{"line_number":621,"context_line":"            schedule \u003d None"},{"line_number":622,"context_line":"        else:"},{"line_number":623,"context_line":"            schedule \u003d replica_config.netapp_snapmirror_schedule"}],"source_content_type":"text/x-python","patch_set":21,"id":"63a4ebe1_f9b8d70c","line":620,"range":{"start_line":619,"start_character":12,"end_line":620,"end_character":35},"in_reply_to":"e2e52226_41c13c22","updated":"2026-03-03 03:58:51.000000000","message":"Done","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4fe6ef27dc8245dfc7f6b245bfe8ff69c9a4c6a1","unresolved":true,"context_lines":[{"line_number":621,"context_line":"            schedule \u003d None"},{"line_number":622,"context_line":"        else:"},{"line_number":623,"context_line":"            schedule \u003d replica_config.netapp_snapmirror_schedule"},{"line_number":624,"context_line":"        relationship_type \u003d na_utils.EXTENDED_DATA_PROTECTION_TYPE"},{"line_number":625,"context_line":"        replica_client.create_snapmirror_vol(new_src_vserver,"},{"line_number":626,"context_line":"                                             new_src_volume_name,"},{"line_number":627,"context_line":"                                             replica_vserver,"}],"source_content_type":"text/x-python","patch_set":21,"id":"02337ec6_72526b53","line":624,"range":{"start_line":624,"start_character":8,"end_line":624,"end_character":66},"updated":"2026-02-26 21:19:05.000000000","message":"Can you explain this change? \"get_relationship_type\" seems to set FlexVols to \"dp\" and FlexGroups to \"xdp\".. but, you\u0027re now hardcoding everything to use xdp on promotion. How does this affect existing replicas?","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4e85e083e2d0fe22da08f69aeab4cd5b198de6a5","unresolved":false,"context_lines":[{"line_number":621,"context_line":"            schedule \u003d None"},{"line_number":622,"context_line":"        else:"},{"line_number":623,"context_line":"            schedule \u003d replica_config.netapp_snapmirror_schedule"},{"line_number":624,"context_line":"        relationship_type \u003d na_utils.EXTENDED_DATA_PROTECTION_TYPE"},{"line_number":625,"context_line":"        replica_client.create_snapmirror_vol(new_src_vserver,"},{"line_number":626,"context_line":"                                             new_src_volume_name,"},{"line_number":627,"context_line":"                                             replica_vserver,"}],"source_content_type":"text/x-python","patch_set":21,"id":"77bb0378_1f19ea9f","line":624,"range":{"start_line":624,"start_character":8,"end_line":624,"end_character":66},"in_reply_to":"02337ec6_72526b53","updated":"2026-03-03 03:58:51.000000000","message":"XDP is the defaulted option by ONTAP from 9.3 onwards.\nExisting relationships are not affected. If a relationship is already of type DP, it will continue to be of type DP. ONTAP recommends to use XDP for all snapmirror relationships.\n\nFor more details please refer \n\"Additional information about DP-type relationships\" section at https://docs.netapp.com/us-en/ontap/data-protection/convert-snapmirror-version-flexible-task.html","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_base.py":[{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"7c2af812bdf5be2b1a9d6f5c6ad977f208585a71","unresolved":true,"context_lines":[{"line_number":2987,"context_line":"                                 set_qos\u003dis_readable)"},{"line_number":2988,"context_line":""},{"line_number":2989,"context_line":"        # 2. Setup SnapMirror with mounting replica whether \u0027readable\u0027 type."},{"line_number":2990,"context_line":"        relationship_type \u003d na_utils.EXTENDED_DATA_PROTECTION_TYPE"},{"line_number":2991,"context_line":"        dm_session.create_snapmirror(active_replica, new_replica,"},{"line_number":2992,"context_line":"                                     relationship_type, mount\u003dis_readable)"},{"line_number":2993,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"5af79a32_2113eb95","line":2990,"range":{"start_line":2990,"start_character":8,"end_line":2990,"end_character":66},"updated":"2026-02-20 10:52:22.000000000","message":"Are all relationships now always XDP?\n\nCan we get rid of the na_utils.get_relationship_type() helper completely?\nI think there is only one other place where this is consumed (create_share_from_snapshot()) - or maybe put it into a follow-up patch?\nIf we anyhow always have the same relationship type, we could simplify this further and set it in the client method only and don\u0027t have to pass it every time","commit_id":"a263235bdb777b834add6f7d6b2cebde38e0b21e"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"d1d31c8456de7e7d145bca1cfd116759455dd66a","unresolved":false,"context_lines":[{"line_number":2987,"context_line":"                                 set_qos\u003dis_readable)"},{"line_number":2988,"context_line":""},{"line_number":2989,"context_line":"        # 2. Setup SnapMirror with mounting replica whether \u0027readable\u0027 type."},{"line_number":2990,"context_line":"        relationship_type \u003d na_utils.EXTENDED_DATA_PROTECTION_TYPE"},{"line_number":2991,"context_line":"        dm_session.create_snapmirror(active_replica, new_replica,"},{"line_number":2992,"context_line":"                                     relationship_type, mount\u003dis_readable)"},{"line_number":2993,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"990338aa_da9a3b9a","line":2990,"range":{"start_line":2990,"start_character":8,"end_line":2990,"end_character":66},"in_reply_to":"5af79a32_2113eb95","updated":"2026-02-23 05:20:14.000000000","message":"Yes. XDP is the defaulted option by ONTAP from 9.3 onwards.\nRegd. removal of function, I would like to take that refactor in one of the upcoming patch as it requires extra testing/validation efforts.","commit_id":"a263235bdb777b834add6f7d6b2cebde38e0b21e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4fe6ef27dc8245dfc7f6b245bfe8ff69c9a4c6a1","unresolved":true,"context_lines":[{"line_number":2897,"context_line":"            }"},{"line_number":2898,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":2899,"context_line":""},{"line_number":2900,"context_line":"        if is_sync_policy and len(share_snapshots) \u003e 0:"},{"line_number":2901,"context_line":"            msg \u003d _(\u0027Could not create replica %(replica_id)s from share \u0027"},{"line_number":2902,"context_line":"                    \u0027%(share_id)s in the destination host %(dest_host)s. \u0027"},{"line_number":2903,"context_line":"                    \u0027Synchronous replication is not supported for shares \u0027"},{"line_number":2904,"context_line":"                    \u0027that have snapshots. Either use asynchronous replication \u0027"},{"line_number":2905,"context_line":"                    \u0027(MirrorAllSnapshots) or \u0027"},{"line_number":2906,"context_line":"                    \u0027delete existing snapshots on the share.\u0027)"},{"line_number":2907,"context_line":"            msg_args \u003d {"},{"line_number":2908,"context_line":"                **base_msg_args,"},{"line_number":2909,"context_line":"                \u0027dest_host\u0027: new_replica_host,"},{"line_number":2910,"context_line":"            }"},{"line_number":2911,"context_line":"            self.message_api.create("},{"line_number":2912,"context_line":"                context,"},{"line_number":2913,"context_line":"                message_field.Action.CREATE,"},{"line_number":2914,"context_line":"                context.project_id,"},{"line_number":2915,"context_line":"                resource_type\u003dmessage_field.Resource.SHARE_REPLICA,"},{"line_number":2916,"context_line":"                resource_id\u003dnew_replica_id,"},{"line_number":2917,"context_line":"                detail\u003d(message_field.Detail"},{"line_number":2918,"context_line":"                        .UNSUPPORTED_REPLICA_CREATE_CONFIG)"},{"line_number":2919,"context_line":"            )"},{"line_number":2920,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":2921,"context_line":""},{"line_number":2922,"context_line":"        # Ensure source and destination are the same pool type"},{"line_number":2923,"context_line":"        if src_is_flexgroup !\u003d dest_is_flexgroup:"},{"line_number":2924,"context_line":"            src_type \u003d \u0027FlexGroup\u0027 if src_is_flexgroup else \u0027FlexVol\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"6a53b815_d3e2af42","line":2921,"range":{"start_line":2900,"start_character":8,"end_line":2921,"end_character":0},"updated":"2026-02-26 21:19:05.000000000","message":"would like to see some unit test/s for this code..","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4e85e083e2d0fe22da08f69aeab4cd5b198de6a5","unresolved":false,"context_lines":[{"line_number":2897,"context_line":"            }"},{"line_number":2898,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":2899,"context_line":""},{"line_number":2900,"context_line":"        if is_sync_policy and len(share_snapshots) \u003e 0:"},{"line_number":2901,"context_line":"            msg \u003d _(\u0027Could not create replica %(replica_id)s from share \u0027"},{"line_number":2902,"context_line":"                    \u0027%(share_id)s in the destination host %(dest_host)s. \u0027"},{"line_number":2903,"context_line":"                    \u0027Synchronous replication is not supported for shares \u0027"},{"line_number":2904,"context_line":"                    \u0027that have snapshots. Either use asynchronous replication \u0027"},{"line_number":2905,"context_line":"                    \u0027(MirrorAllSnapshots) or \u0027"},{"line_number":2906,"context_line":"                    \u0027delete existing snapshots on the share.\u0027)"},{"line_number":2907,"context_line":"            msg_args \u003d {"},{"line_number":2908,"context_line":"                **base_msg_args,"},{"line_number":2909,"context_line":"                \u0027dest_host\u0027: new_replica_host,"},{"line_number":2910,"context_line":"            }"},{"line_number":2911,"context_line":"            self.message_api.create("},{"line_number":2912,"context_line":"                context,"},{"line_number":2913,"context_line":"                message_field.Action.CREATE,"},{"line_number":2914,"context_line":"                context.project_id,"},{"line_number":2915,"context_line":"                resource_type\u003dmessage_field.Resource.SHARE_REPLICA,"},{"line_number":2916,"context_line":"                resource_id\u003dnew_replica_id,"},{"line_number":2917,"context_line":"                detail\u003d(message_field.Detail"},{"line_number":2918,"context_line":"                        .UNSUPPORTED_REPLICA_CREATE_CONFIG)"},{"line_number":2919,"context_line":"            )"},{"line_number":2920,"context_line":"            raise exception.NetAppException(msg % msg_args)"},{"line_number":2921,"context_line":""},{"line_number":2922,"context_line":"        # Ensure source and destination are the same pool type"},{"line_number":2923,"context_line":"        if src_is_flexgroup !\u003d dest_is_flexgroup:"},{"line_number":2924,"context_line":"            src_type \u003d \u0027FlexGroup\u0027 if src_is_flexgroup else \u0027FlexVol\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"0a178318_85fcd828","line":2921,"range":{"start_line":2900,"start_character":8,"end_line":2921,"end_character":0},"in_reply_to":"6a53b815_d3e2af42","updated":"2026-03-03 03:58:51.000000000","message":"Done","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4fe6ef27dc8245dfc7f6b245bfe8ff69c9a4c6a1","unresolved":true,"context_lines":[{"line_number":3215,"context_line":"            if (not snapshot_name or"},{"line_number":3216,"context_line":"                    not vserver_client.snapshot_exists(snapshot_name,"},{"line_number":3217,"context_line":"                                                       share_name)):"},{"line_number":3218,"context_line":"                LOG.debug(\u0027Could not find the share snapshot \u0027 +"},{"line_number":3219,"context_line":"                          \u0027%(snap)s on destination site or \u0027 +"},{"line_number":3220,"context_line":"                          \u0027provider_location is not set for \u0027 +"},{"line_number":3221,"context_line":"                          \u0027replica %(replica)s.\u0027, {"},{"line_number":3222,"context_line":"                              \u0027snap\u0027: snapshot_name,"},{"line_number":3223,"context_line":"                              \u0027replica\u0027: replica[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":21,"id":"f126723a_3527235f","line":3220,"range":{"start_line":3218,"start_character":26,"end_line":3220,"end_character":63},"updated":"2026-02-26 21:19:05.000000000","message":"Please don\u0027t concatenate.. \n```suggestion\n                LOG.debug(\u0027Could not find the share snapshot \u0027\n                          \u0027%(snap)s on destination site or \u0027\n                          \u0027provider_location is not set for \u0027\n```","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4e85e083e2d0fe22da08f69aeab4cd5b198de6a5","unresolved":false,"context_lines":[{"line_number":3215,"context_line":"            if (not snapshot_name or"},{"line_number":3216,"context_line":"                    not vserver_client.snapshot_exists(snapshot_name,"},{"line_number":3217,"context_line":"                                                       share_name)):"},{"line_number":3218,"context_line":"                LOG.debug(\u0027Could not find the share snapshot \u0027 +"},{"line_number":3219,"context_line":"                          \u0027%(snap)s on destination site or \u0027 +"},{"line_number":3220,"context_line":"                          \u0027provider_location is not set for \u0027 +"},{"line_number":3221,"context_line":"                          \u0027replica %(replica)s.\u0027, {"},{"line_number":3222,"context_line":"                              \u0027snap\u0027: snapshot_name,"},{"line_number":3223,"context_line":"                              \u0027replica\u0027: replica[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":21,"id":"29e4706f_786d2801","line":3220,"range":{"start_line":3218,"start_character":26,"end_line":3220,"end_character":63},"in_reply_to":"f126723a_3527235f","updated":"2026-03-03 03:58:51.000000000","message":"Done","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"}],"manila/tests/share/drivers/netapp/dataontap/cluster_mode/test_data_motion.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4fe6ef27dc8245dfc7f6b245bfe8ff69c9a4c6a1","unresolved":true,"context_lines":[{"line_number":1381,"context_line":"    def test_get_policy_from_share_replica_metadata_with_sync_policy(self):"},{"line_number":1382,"context_line":"        share \u003d copy.deepcopy(fake.SHARE)"},{"line_number":1383,"context_line":"        share[\u0027metadata\u0027] \u003d {\u0027replication_policy\u0027: \u0027Sync\u0027}"},{"line_number":1384,"context_line":"        policy, is_async_policy \u003d ("},{"line_number":1385,"context_line":"            self.dm_session.get_policy_from_share_replica_metadata(share))"},{"line_number":1386,"context_line":"        self.assertEqual(\u0027Sync\u0027, policy)"},{"line_number":1387,"context_line":"        self.assertTrue(is_async_policy)"}],"source_content_type":"text/x-python","patch_set":21,"id":"daa98968_8c049694","line":1384,"range":{"start_line":1384,"start_character":16,"end_line":1384,"end_character":31},"updated":"2026-02-26 21:19:05.000000000","message":"shouldn\u0027t this be \"is_sync_policy\"?","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4e85e083e2d0fe22da08f69aeab4cd5b198de6a5","unresolved":false,"context_lines":[{"line_number":1381,"context_line":"    def test_get_policy_from_share_replica_metadata_with_sync_policy(self):"},{"line_number":1382,"context_line":"        share \u003d copy.deepcopy(fake.SHARE)"},{"line_number":1383,"context_line":"        share[\u0027metadata\u0027] \u003d {\u0027replication_policy\u0027: \u0027Sync\u0027}"},{"line_number":1384,"context_line":"        policy, is_async_policy \u003d ("},{"line_number":1385,"context_line":"            self.dm_session.get_policy_from_share_replica_metadata(share))"},{"line_number":1386,"context_line":"        self.assertEqual(\u0027Sync\u0027, policy)"},{"line_number":1387,"context_line":"        self.assertTrue(is_async_policy)"}],"source_content_type":"text/x-python","patch_set":21,"id":"c35ba03d_1561e22e","line":1384,"range":{"start_line":1384,"start_character":16,"end_line":1384,"end_character":31},"in_reply_to":"daa98968_8c049694","updated":"2026-03-03 03:58:51.000000000","message":"Done","commit_id":"7d85b89c4195332085c3e167db8b04f79ee03d63"}],"releasenotes/notes/netapp-add-support-for-sync-replication-cd1b50f409816647.yaml":[{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"7c2af812bdf5be2b1a9d6f5c6ad977f208585a71","unresolved":true,"context_lines":[{"line_number":26,"context_line":"      \"StrictSync\" policies will result in the shares being out-of-sync."},{"line_number":27,"context_line":"    - \"MirrorAllSnapshots\" policy can mirror all snapshots, including those"},{"line_number":28,"context_line":"      created before replica setup, to the secondary site."},{"line_number":29,"context_line":"    - Changing replication policy of an existing share replica is"},{"line_number":30,"context_line":"      not supported."},{"line_number":31,"context_line":"    - Metadata set on destination share replica will be used during failover"},{"line_number":32,"context_line":"      and failback operations."},{"line_number":33,"context_line":"    - Sync/StrictSync replication policies are supported only for FlexVols."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"5ee768fb_5883927a","line":30,"range":{"start_line":29,"start_character":4,"end_line":30,"end_character":20},"updated":"2026-02-20 10:52:22.000000000","message":"If that is intended, then the metadata should be protected as admin only metadata","commit_id":"a263235bdb777b834add6f7d6b2cebde38e0b21e"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"d1d31c8456de7e7d145bca1cfd116759455dd66a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"      \"StrictSync\" policies will result in the shares being out-of-sync."},{"line_number":27,"context_line":"    - \"MirrorAllSnapshots\" policy can mirror all snapshots, including those"},{"line_number":28,"context_line":"      created before replica setup, to the secondary site."},{"line_number":29,"context_line":"    - Changing replication policy of an existing share replica is"},{"line_number":30,"context_line":"      not supported."},{"line_number":31,"context_line":"    - Metadata set on destination share replica will be used during failover"},{"line_number":32,"context_line":"      and failback operations."},{"line_number":33,"context_line":"    - Sync/StrictSync replication policies are supported only for FlexVols."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"e7968a9e_4eaa3867","line":30,"range":{"start_line":29,"start_character":4,"end_line":30,"end_character":20},"in_reply_to":"5ee768fb_5883927a","updated":"2026-02-23 05:20:14.000000000","message":"ONTAP does not support changing the replication policy or mode of an existing SnapMirror relationship, as documented by NetApp [1]. While a proposal to restrict this to administrative users was discussed during the PTG call, implementation will be treated as a stretch goal, with the Gazpacho release addressing this limitation through documentation [2].\n[1] https://docs.netapp.com/us-en/ontap/data-protection/convert-type-snapmirror-task.html\n[2] https://etherpad.opendev.org/p/share-replication-sync-snapmirror-support\n\ncc: @saikumar1016@gmail.com","commit_id":"a263235bdb777b834add6f7d6b2cebde38e0b21e"}]}
