)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"c258d8ab63214a5e603ab64fee0e91aff2755431","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6435e37c_a35e3ee3","updated":"2026-10-28 17:52:30.000000000","message":"run-NetApp CI","commit_id":"3fe3a733157fe958ff668c09603f114859d1eac4"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"564d307e8160f00eb0ad77efbcc98ecde91b7eeb","unresolved":true,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        self._init_features()"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def _configure_svm_tunneling(self):"},{"line_number":143,"context_line":"        \"\"\"Disable X-Dot-SVM tunneling when the login is already SVM-scoped."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        Only REST unauthorized (code 6) implies vsadmin / SVM mgmt LIF."}],"source_content_type":"text/x-python","patch_set":2,"id":"af450df3_3aaf0c64","line":142,"updated":"2026-11-02 08:54:37.000000000","message":"Remove SVM scoping code.   Check once on svm tunneling.","commit_id":"3fe3a733157fe958ff668c09603f114859d1eac4"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"564d307e8160f00eb0ad77efbcc98ecde91b7eeb","unresolved":false,"context_lines":[{"line_number":2714,"context_line":"                return vserver_peer.get(\u0027peer-cluster\u0027)"},{"line_number":2715,"context_line":"        return None"},{"line_number":2716,"context_line":""},{"line_number":2717,"context_line":"    def check_fc_replication_available(self, local_vserver, remote_vserver):"},{"line_number":2718,"context_line":"        \"\"\"Validate FC SnapMirror readiness on this cluster."},{"line_number":2719,"context_line":""},{"line_number":2720,"context_line":"        Checks ONTAP version, FC LIFs on the admin SVM (name matches the"}],"source_content_type":"text/x-python","patch_set":2,"id":"0840e9b5_b993aad7","line":2717,"updated":"2026-11-02 08:54:37.000000000","message":"Validations need to be moved data_motion.py.","commit_id":"3fe3a733157fe958ff668c09603f114859d1eac4"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"564d307e8160f00eb0ad77efbcc98ecde91b7eeb","unresolved":true,"context_lines":[{"line_number":2726,"context_line":"        is skipped with a warning."},{"line_number":2727,"context_line":"        \"\"\""},{"line_number":2728,"context_line":"        # ``is True`` avoids MagicMock connections looking SVM-scoped."},{"line_number":2729,"context_line":"        if getattr(self.connection, \u0027_disable_svm_tunneling\u0027,"},{"line_number":2730,"context_line":"                   False) is True:"},{"line_number":2731,"context_line":"            LOG.warning(\u0027Skipping FC replication checks for SVM-scoped \u0027"},{"line_number":2732,"context_line":"                        \u0027credentials\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"2f0ec3f4_aae3b267","line":2729,"updated":"2026-11-02 08:54:37.000000000","message":"use using_cluster_credentials instead of svm tunneling option. Check ?","commit_id":"3fe3a733157fe958ff668c09603f114859d1eac4"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"564d307e8160f00eb0ad77efbcc98ecde91b7eeb","unresolved":true,"context_lines":[{"line_number":2762,"context_line":"                    \u0027%(peer)s.\u0027) % {\u0027peer\u0027: peer_cluster_name}"},{"line_number":2763,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":2764,"context_line":""},{"line_number":2765,"context_line":"        cluster_peer \u003d cluster_peers[0]"},{"line_number":2766,"context_line":"        if not cluster_peer.get(\u0027monitor-fc-status\u0027):"},{"line_number":2767,"context_line":"            msg \u003d _(\u0027FC SnapMirror transport requires FC monitoring on \u0027"},{"line_number":2768,"context_line":"                    \u0027cluster peer %(peer)s \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"a802dbe9_1c971612","line":2765,"updated":"2026-11-02 08:54:37.000000000","message":"Get the destination backend from cinder configuration which has fc transport and do the check.  Modularize the code.","commit_id":"3fe3a733157fe958ff668c09603f114859d1eac4"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode_rest_asar2.py":[{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"564d307e8160f00eb0ad77efbcc98ecde91b7eeb","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        msg \u003d _(\u0027Performance counter APIs are not supported on ASA r2.\u0027)"},{"line_number":90,"context_line":"        raise netapp_utils.NetAppDriverException(msg)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def check_fc_replication_available(self, local_vserver, remote_vserver):"},{"line_number":93,"context_line":"        \"\"\"ASA r2 does not support SnapMirror (including FC transport).\"\"\""},{"line_number":94,"context_line":"        msg \u003d _(\u0027SnapMirror replication, and therefore FC transport for \u0027"},{"line_number":95,"context_line":"                \u0027replication, is not supported on ASA r2.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"cf919690_3bdc9841","line":92,"updated":"2026-11-02 08:54:37.000000000","message":"This check need to be moved to data_motion.py","commit_id":"3fe3a733157fe958ff668c09603f114859d1eac4"}],"cinder/volume/drivers/netapp/dataontap/utils/data_motion.py":[{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"564d307e8160f00eb0ad77efbcc98ecde91b7eeb","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                \u0027replication_count\u0027: len(backend_names),"},{"line_number":83,"context_line":"                \u0027replication_targets\u0027: backend_names,"},{"line_number":84,"context_line":"                \u0027replication_type\u0027: replication_type,"},{"line_number":85,"context_line":"                \u0027replication_transport\u0027: self.get_replication_transports("},{"line_number":86,"context_line":"                    config),"},{"line_number":87,"context_line":"            }"},{"line_number":88,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"4b1d0e86_2d0eac53","line":85,"updated":"2026-11-02 08:54:37.000000000","message":"update the key to \u0027replication_transports\u0027","commit_id":"3fe3a733157fe958ff668c09603f114859d1eac4"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"564d307e8160f00eb0ad77efbcc98ecde91b7eeb","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                    break"},{"line_number":110,"context_line":"        return aggregate_map"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def get_replication_backend_transport(self, config, backend_name):"},{"line_number":113,"context_line":"        \"\"\"Return ``fc`` or ``ip`` (default) for a replication target.\"\"\""},{"line_number":114,"context_line":"        replication_devices \u003d config.safe_get(\u0027replication_device\u0027)"},{"line_number":115,"context_line":"        if replication_devices:"}],"source_content_type":"text/x-python","patch_set":2,"id":"6fb523e1_80b28bf3","line":112,"updated":"2026-11-02 08:54:37.000000000","message":"Marked as resolved.","commit_id":"3fe3a733157fe958ff668c09603f114859d1eac4"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"564d307e8160f00eb0ad77efbcc98ecde91b7eeb","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                    break"},{"line_number":110,"context_line":"        return aggregate_map"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def get_replication_backend_transport(self, config, backend_name):"},{"line_number":113,"context_line":"        \"\"\"Return ``fc`` or ``ip`` (default) for a replication target.\"\"\""},{"line_number":114,"context_line":"        replication_devices \u003d config.safe_get(\u0027replication_device\u0027)"},{"line_number":115,"context_line":"        if replication_devices:"}],"source_content_type":"text/x-python","patch_set":2,"id":"acec1cfa_b856d6ce","line":112,"updated":"2026-11-02 08:54:37.000000000","message":"Validate multiple replication devices with both fc,ip .  Make sure no regression. this works only for async.","commit_id":"3fe3a733157fe958ff668c09603f114859d1eac4"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"564d307e8160f00eb0ad77efbcc98ecde91b7eeb","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        if replication_policy in ("},{"line_number":404,"context_line":"                REPLICATION_POLICY_AUTOMATED_FAILOVER,"},{"line_number":405,"context_line":"                REPLICATION_POLICY_AUTOMATED_FAILOVER_DUPLEX) or ("},{"line_number":406,"context_line":"                transport \u003d\u003d \u0027fc\u0027):"},{"line_number":407,"context_line":"            dest_client \u003d config_utils.get_client_for_backend("},{"line_number":408,"context_line":"                dest_backend_name, vserver_name\u003ddest_vserver, force_rest\u003dTrue)"},{"line_number":409,"context_line":"            src_client \u003d config_utils.get_client_for_backend("}],"source_content_type":"text/x-python","patch_set":2,"id":"54ba6868_dcd0e6f3","line":406,"updated":"2026-11-02 08:54:37.000000000","message":"check if this transport condition is needed ?","commit_id":"3fe3a733157fe958ff668c09603f114859d1eac4"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"564d307e8160f00eb0ad77efbcc98ecde91b7eeb","unresolved":false,"context_lines":[{"line_number":462,"context_line":"            LOG.debug(msg, msg_payload)"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"            try:"},{"line_number":465,"context_line":"                if transport \u003d\u003d \u0027fc\u0027:"},{"line_number":466,"context_line":"                    src_client.check_fc_replication_available("},{"line_number":467,"context_line":"                        src_vserver, dest_vserver)"},{"line_number":468,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1bf25569_562f05ed","line":465,"updated":"2026-11-02 08:54:37.000000000","message":"Check if it we can fail fast for fc specific conditions.","commit_id":"3fe3a733157fe958ff668c09603f114859d1eac4"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"564d307e8160f00eb0ad77efbcc98ecde91b7eeb","unresolved":false,"context_lines":[{"line_number":482,"context_line":"                    else \u0027hourly\u0027,"},{"line_number":483,"context_line":"                    policy\u003dreplication_policy,"},{"line_number":484,"context_line":"                    relationship_type\u003d\u0027extended_data_protection\u0027,"},{"line_number":485,"context_line":"                    transport\u003dtransport)"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"                # Initialize async transfer of the initial data"},{"line_number":488,"context_line":"                if active_sync_asymmetric_policy:"}],"source_content_type":"text/x-python","patch_set":2,"id":"6d107873_11403426","line":485,"updated":"2026-11-02 08:54:37.000000000","message":"Check for legacy async replication if it works for replication over FC.","commit_id":"3fe3a733157fe958ff668c09603f114859d1eac4"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"564d307e8160f00eb0ad77efbcc98ecde91b7eeb","unresolved":false,"context_lines":[{"line_number":600,"context_line":"                src_cg_name, dest_cg_name, dest_backend_name,"},{"line_number":601,"context_line":"                storage_object_names, replication_policy)"},{"line_number":602,"context_line":"            try:"},{"line_number":603,"context_line":"                if transport \u003d\u003d \u0027fc\u0027:"},{"line_number":604,"context_line":"                    src_client \u003d config_utils.get_client_for_backend("},{"line_number":605,"context_line":"                        src_backend_name, vserver_name\u003dsrc_vserver,"},{"line_number":606,"context_line":"                        force_rest\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"8044f45f_3b040ee0","line":603,"updated":"2026-11-02 08:54:37.000000000","message":"It need not be here. Please check","commit_id":"3fe3a733157fe958ff668c09603f114859d1eac4"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"564d307e8160f00eb0ad77efbcc98ecde91b7eeb","unresolved":false,"context_lines":[{"line_number":1075,"context_line":"            if not new_cg_created:"},{"line_number":1076,"context_line":"                self._expand_flexvols_not_in_cg(src_client, src_vserver,"},{"line_number":1077,"context_line":"                                                src_cg_name, cg_info)"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"        if replication_policy \u003d\u003d \"AutomatedFailOver\":"},{"line_number":1080,"context_line":"            (self."},{"line_number":1081,"context_line":"                _consistent_replication_precheck_for_af_policy("}],"source_content_type":"text/x-python","patch_set":2,"id":"6271becf_b5598be4","line":1078,"updated":"2026-11-02 08:54:37.000000000","message":"Add if transport\u003d\u003d\"fc\" then add fc availability and fc state check.  Add this before even policy check.","commit_id":"3fe3a733157fe958ff668c09603f114859d1eac4"}]}
