)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"969bbadfc2a928cf653dcc31f8912ca5f6f1ad0f","unresolved":true,"context_lines":[{"line_number":15,"context_line":"fast with a descriptive message when a replication_device is"},{"line_number":16,"context_line":"configured together with any of:"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"* netapp_disaggregated_platform\u003dTrue (ASA r2), which has no"},{"line_number":19,"context_line":"  per-FlexVol pool model for SnapMirror to provision against"},{"line_number":20,"context_line":"* a netapp_replication_policy outside the ONTAP-recognized set"},{"line_number":21,"context_line":"* AutomatedFailOverDuplex without netapp_consistent_replication\u003dTrue"},{"line_number":22,"context_line":"* netapp_consistent_replication\u003dTrue on a pool containing FlexGroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"6f097b1e_8405c70c","line":19,"range":{"start_line":18,"start_character":2,"end_line":19,"end_character":60},"updated":"2026-09-09 06:37:42.000000000","message":"```suggestion\n* netapp_disaggregated_platform\u003dTrue (ASA r2), does not have replication implementation yet.\n```","commit_id":"44218f9aa31d23e73d31a88a337f1f55fa961171"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"760e717029df6ab4754d46d477f5fc309696b819","unresolved":false,"context_lines":[{"line_number":15,"context_line":"fast with a descriptive message when a replication_device is"},{"line_number":16,"context_line":"configured together with any of:"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"* netapp_disaggregated_platform\u003dTrue (ASA r2), which has no"},{"line_number":19,"context_line":"  per-FlexVol pool model for SnapMirror to provision against"},{"line_number":20,"context_line":"* a netapp_replication_policy outside the ONTAP-recognized set"},{"line_number":21,"context_line":"* AutomatedFailOverDuplex without netapp_consistent_replication\u003dTrue"},{"line_number":22,"context_line":"* netapp_consistent_replication\u003dTrue on a pool containing FlexGroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"d659f265_1d073bf8","line":19,"range":{"start_line":18,"start_character":2,"end_line":19,"end_character":60},"in_reply_to":"6f097b1e_8405c70c","updated":"2026-09-09 10:01:27.000000000","message":"Marked as resolved.","commit_id":"44218f9aa31d23e73d31a88a337f1f55fa961171"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"9a4951418ac6b61936e2993dc4eea09aab0e1d3f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d24964f2_73f521f9","updated":"2026-09-06 14:04:04.000000000","message":"run recheck","commit_id":"45a8c7de98e43a85e32469879db02c64bf3ed505"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"2f896679d0d09cd59b49cddad32878bc87502c80","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e67f109d_406430ff","updated":"2026-09-07 04:40:22.000000000","message":"run recheck","commit_id":"a7e5459eea9a611ec7de78b015e20e86ea300160"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"1796a6dd85fa95657f8a967574ebb731f3f235f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"82bfa00d_66029b92","updated":"2026-09-07 05:37:17.000000000","message":"run recheck","commit_id":"08849afbd7e4c32873c27a7a281bbb188cc4417a"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"954dfc0bc262fb531f7e995f5a2cd899b41e895e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"1193eba2_179e3e4e","updated":"2026-09-08 11:53:59.000000000","message":"Thanks Sailaja. Please take a look at the comments below.","commit_id":"44218f9aa31d23e73d31a88a337f1f55fa961171"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"969bbadfc2a928cf653dcc31f8912ca5f6f1ad0f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"adddf82e_1b54b054","updated":"2026-09-09 06:37:42.000000000","message":"LGTM.","commit_id":"5abbb8325765b127e7567b434223da7474816a29"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"842822a34b9974799e81a7d7e04f7ed617823245","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"20785547_d6fc6bed","updated":"2026-09-08 18:53:13.000000000","message":"run recheck","commit_id":"5abbb8325765b127e7567b434223da7474816a29"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"62c76ef56cbffc2a40f764c41f7e6e46a6a4e81e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"6ea42696_eb19061d","updated":"2026-09-09 14:14:05.000000000","message":"LGTM","commit_id":"8d96b6af76f0c4b90328cc4231fdb0c625ea5b6b"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"885430d4bfb9c0cfdbdb24ddaddaf34b87b90d45","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"bc3eb353_691e822c","updated":"2026-09-09 10:44:11.000000000","message":"run-NetApp CI","commit_id":"8d96b6af76f0c4b90328cc4231fdb0c625ea5b6b"}],"cinder/volume/drivers/netapp/dataontap/block_cmode.py":[{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"aad950387d9045e86c87c71c4261352f4aaa18a9","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        \"\"\"Check that the driver is working and can communicate.\"\"\""},{"line_number":156,"context_line":"        if (self.configuration.netapp_disaggregated_platform"},{"line_number":157,"context_line":"                and self.replication_enabled):"},{"line_number":158,"context_line":"            msg \u003d _(\u0027Replication is not supported on ASA r2 \u0027"},{"line_number":159,"context_line":"                    \u0027(disaggregated) platforms. ASA r2 has no per-FlexVol \u0027"},{"line_number":160,"context_line":"                    \u0027pool model and does not support the SnapMirror \u0027"},{"line_number":161,"context_line":"                    \u0027provisioning path that Cinder replication relies on. \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"ac6e21ae_52e350e5","line":158,"updated":"2026-09-07 10:06:39.000000000","message":"Update the message to simplified summary","commit_id":"08849afbd7e4c32873c27a7a281bbb188cc4417a"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"aad950387d9045e86c87c71c4261352f4aaa18a9","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                    \u0027Ensure ASA r2 configuration option is set correctly.\u0027)"},{"line_number":176,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        # Populate the SSC synchronously before any SSC-dependent validation."},{"line_number":179,"context_line":"        # _add_looping_tasks() runs _update_ssc() as its first action so the"},{"line_number":180,"context_line":"        # FlexGroup membership information is available for the checks below."},{"line_number":181,"context_line":"        self._add_looping_tasks()"}],"source_content_type":"text/x-python","patch_set":5,"id":"e0a64a37_2e345c5e","line":178,"updated":"2026-09-07 10:06:39.000000000","message":"Remove the comments which are not required.","commit_id":"08849afbd7e4c32873c27a7a281bbb188cc4417a"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"aad950387d9045e86c87c71c4261352f4aaa18a9","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        # FlexGroup membership information is available for the checks below."},{"line_number":181,"context_line":"        self._add_looping_tasks()"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        # Validate replication configuration (all checks require SSC data)."},{"line_number":184,"context_line":"        # Guards specific to the new Active Sync replication path are scoped"},{"line_number":185,"context_line":"        # under is_active_sync_configured() so that operators using the legacy"},{"line_number":186,"context_line":"        # async SnapMirror path (MirrorAllSnapshots / Asynchronous policy) are"}],"source_content_type":"text/x-python","patch_set":5,"id":"17551eb2_fc825307","line":183,"updated":"2026-09-07 10:06:39.000000000","message":"Remove the comments which are not required.","commit_id":"08849afbd7e4c32873c27a7a281bbb188cc4417a"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"aad950387d9045e86c87c71c4261352f4aaa18a9","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                    }"},{"line_number":207,"context_line":"                    raise na_utils.NetAppDriverException(msg)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"                if (self._is_consistent_replication_enabled(self.configuration)"},{"line_number":210,"context_line":"                        and self.ssc_library.contains_flexgroup_pool()):"},{"line_number":211,"context_line":"                    msg \u003d _("},{"line_number":212,"context_line":"                        \u0027netapp_consistent_replication\u003dTrue is not supported \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"65e9ca34_0afb34e2","line":209,"updated":"2026-09-07 10:06:39.000000000","message":"Remove the flexgroup check from here and add it in the nfs_cmode.py file.","commit_id":"08849afbd7e4c32873c27a7a281bbb188cc4417a"}],"cinder/volume/drivers/netapp/dataontap/nfs_cmode.py":[{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"aad950387d9045e86c87c71c4261352f4aaa18a9","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        # Groups require block (LUN) storage objects; NFS FlexVols cannot be"},{"line_number":135,"context_line":"        # members of a CG.  Reject the configuration at init time rather than"},{"line_number":136,"context_line":"        # letting it reach the first housekeeping run and fail there."},{"line_number":137,"context_line":"        if self.replication_enabled:"},{"line_number":138,"context_line":"            if self.is_active_sync_configured(self.configuration):"},{"line_number":139,"context_line":"                msg \u003d _("},{"line_number":140,"context_line":"                    \u0027Active Sync replication policies (AutomatedFailOver, \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"e17e5498_2174353e","line":137,"updated":"2026-09-07 10:06:39.000000000","message":"if consistency replication is enabled and Active sync is enabled then it has to fail. Its not if replication enabled. Update the condition.  \n\nAdd a separate check for flexgroup support for replication incase of consistent replication (cg async/afd/af) and fail if its flexgroup.\n\nAdd a check for validating the replication policy.","commit_id":"08849afbd7e4c32873c27a7a281bbb188cc4417a"}],"cinder/volume/drivers/netapp/dataontap/nvme_library.py":[{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"aad950387d9045e86c87c71c4261352f4aaa18a9","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        Discovers the namespaces on the NetApp server."},{"line_number":197,"context_line":"        \"\"\""},{"line_number":198,"context_line":"        if self.configuration.safe_get(\u0027replication_device\u0027):"},{"line_number":199,"context_line":"            msg \u003d _(\u0027Replication is not supported for NVMe backends. \u0027"},{"line_number":200,"context_line":"                    \u0027Remove the replication_device option from the \u0027"},{"line_number":201,"context_line":"                    \u0027backend configuration.\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"13ef91e2_79ac679c","line":198,"updated":"2026-09-07 10:06:39.000000000","message":"Check for nvme is not relevant.  Remove this check.  Its no op for nvme.","commit_id":"08849afbd7e4c32873c27a7a281bbb188cc4417a"}],"cinder/volume/drivers/netapp/dataontap/utils/data_motion.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"954dfc0bc262fb531f7e995f5a2cd899b41e895e","unresolved":true,"context_lines":[{"line_number":63,"context_line":"# Minimum ONTAP cluster version required for Active Sync replication"},{"line_number":64,"context_line":"# (AutomatedFailOver / AutomatedFailOverDuplex). Legacy async policies"},{"line_number":65,"context_line":"# are not gated on this value."},{"line_number":66,"context_line":"REPLICATION_MIN_ONTAP_VERSION \u003d (9, 16, 1)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class DataMotionMixin(object):"}],"source_content_type":"text/x-python","patch_set":12,"id":"777eca1d_45ae924b","line":66,"updated":"2026-09-08 11:53:59.000000000","message":"This is not replication min version, but Active Sync min version. May be change the naming of the variable.","commit_id":"44218f9aa31d23e73d31a88a337f1f55fa961171"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"acb1aa2b17477e6dcbdc749e5bc6ca9224288194","unresolved":false,"context_lines":[{"line_number":63,"context_line":"# Minimum ONTAP cluster version required for Active Sync replication"},{"line_number":64,"context_line":"# (AutomatedFailOver / AutomatedFailOverDuplex). Legacy async policies"},{"line_number":65,"context_line":"# are not gated on this value."},{"line_number":66,"context_line":"REPLICATION_MIN_ONTAP_VERSION \u003d (9, 16, 1)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class DataMotionMixin(object):"}],"source_content_type":"text/x-python","patch_set":12,"id":"71360218_8e3ae939","line":66,"in_reply_to":"777eca1d_45ae924b","updated":"2026-09-08 16:37:37.000000000","message":"Fixed.","commit_id":"44218f9aa31d23e73d31a88a337f1f55fa961171"}],"releasenotes/notes/netapp-ontap-validate-replication-init-632ed239937e37ba.yaml":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"954dfc0bc262fb531f7e995f5a2cd899b41e895e","unresolved":true,"context_lines":[{"line_number":20,"context_line":"    * ``netapp_consistent_replication`` on a pool that contains FlexGroup"},{"line_number":21,"context_line":"      volumes (not supported in SnapMirror Consistency Groups)."},{"line_number":22,"context_line":"    * Active Sync replication policies on NFS backends — SnapMirror"},{"line_number":23,"context_line":"      Consistency Groups require block storage (iSCSI or FC)."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"99f731e8_ee74b876","line":23,"range":{"start_line":23,"start_character":48,"end_line":23,"end_character":59},"updated":"2026-09-08 11:53:59.000000000","message":"We dont support Active Sync replication for NVMe either. Can we add that validation and also update the release notes?","commit_id":"44218f9aa31d23e73d31a88a337f1f55fa961171"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"acb1aa2b17477e6dcbdc749e5bc6ca9224288194","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    * ``netapp_consistent_replication`` on a pool that contains FlexGroup"},{"line_number":21,"context_line":"      volumes (not supported in SnapMirror Consistency Groups)."},{"line_number":22,"context_line":"    * Active Sync replication policies on NFS backends — SnapMirror"},{"line_number":23,"context_line":"      Consistency Groups require block storage (iSCSI or FC)."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5dfe35e4_1c0e5df4","line":23,"range":{"start_line":23,"start_character":48,"end_line":23,"end_character":59},"in_reply_to":"99f731e8_ee74b876","updated":"2026-09-08 16:37:37.000000000","message":"NVME, Replication set to false in the code. So its not required to handle.  I had added this earlier and removed based on the review comments.","commit_id":"44218f9aa31d23e73d31a88a337f1f55fa961171"}]}
