)]}'
{"/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":"49dbefb5755f37edb3b9d43af7c2bfb5922c17b6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"ca4886fa_4bebd306","updated":"2026-07-10 05:12:08.000000000","message":"@sanketh.shetty@netapp.com Please address these comments.","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"9bc4f8af_58518251","updated":"2026-07-19 13:15:30.000000000","message":"Updated review comments.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"d2c21c51_9eeb1a92","updated":"2026-08-03 11:03:01.000000000","message":"Please take a look at the comments. Need to see how we can optimize and use the existing volume snapmirror methods to handle share server replication.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"7a19f60fc3b9b7c6cd903f9be24ce3ff2a536b24","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"93f68000_04c8ca58","updated":"2026-08-06 08:17:27.000000000","message":"Addressed review comments.","commit_id":"14ac590bf25b21c323566bd0c0839c378aa33389"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"50bb41fcdb70dd03d85a22cbbeabc411a8ce2cd4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"909ed9e1_b7b6f625","updated":"2026-08-07 11:08:52.000000000","message":"recheck","commit_id":"e5f93e3623afcc7776f9a22be165b7b4d1257975"}],"manila/share/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"26d217eef60a6bfb665b6d38ec947e798bbb68f3","unresolved":true,"context_lines":[{"line_number":3936,"context_line":"                               dest_volume\u003ddest_volume)"},{"line_number":3937,"context_line":""},{"line_number":3938,"context_line":"    @na_utils.trace"},{"line_number":3939,"context_line":"    def break_snapmirror_svm(self, source_vserver\u003dNone, dest_vserver\u003dNone):"},{"line_number":3940,"context_line":"        \"\"\"Break an SVM-scoped SnapMirror relationship."},{"line_number":3941,"context_line":""},{"line_number":3942,"context_line":"        Uses POST /private/cli/snapmirror/break to break SVM-DR on the"}],"source_content_type":"text/x-python","patch_set":7,"id":"9b881a99_1aa0fa34","line":3939,"updated":"2026-06-24 15:19:23.000000000","message":"@sanketh.shetty@netapp.com Lets rename this as break_svm_snapmirror to avoid regression(refer line #6905 falling back to ZAPI)","commit_id":"ef63f052eb8eb7d66b0babde93f0bb533505037f"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":3936,"context_line":"                               dest_volume\u003ddest_volume)"},{"line_number":3937,"context_line":""},{"line_number":3938,"context_line":"    @na_utils.trace"},{"line_number":3939,"context_line":"    def break_snapmirror_svm(self, source_vserver\u003dNone, dest_vserver\u003dNone):"},{"line_number":3940,"context_line":"        \"\"\"Break an SVM-scoped SnapMirror relationship."},{"line_number":3941,"context_line":""},{"line_number":3942,"context_line":"        Uses POST /private/cli/snapmirror/break to break SVM-DR on the"}],"source_content_type":"text/x-python","patch_set":7,"id":"1988708e_07d9b241","line":3939,"in_reply_to":"9b881a99_1aa0fa34","updated":"2026-07-19 13:15:30.000000000","message":"Done","commit_id":"ef63f052eb8eb7d66b0babde93f0bb533505037f"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"3a60c146ff814a83962347f8cc92fbc11500d6af","unresolved":false,"context_lines":[{"line_number":3936,"context_line":"                               dest_volume\u003ddest_volume)"},{"line_number":3937,"context_line":""},{"line_number":3938,"context_line":"    @na_utils.trace"},{"line_number":3939,"context_line":"    def break_snapmirror_svm(self, source_vserver\u003dNone, dest_vserver\u003dNone):"},{"line_number":3940,"context_line":"        \"\"\"Break an SVM-scoped SnapMirror relationship."},{"line_number":3941,"context_line":""},{"line_number":3942,"context_line":"        Uses POST /private/cli/snapmirror/break to break SVM-DR on the"}],"source_content_type":"text/x-python","patch_set":7,"id":"58905cd5_1ec6d18e","line":3939,"in_reply_to":"9b881a99_1aa0fa34","updated":"2026-07-09 12:46:21.000000000","message":"Done","commit_id":"ef63f052eb8eb7d66b0babde93f0bb533505037f"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":174,"context_line":"                    \"exhausted. Aborting.\") % job_url"},{"line_number":175,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _poll_job_preserve_code(self, job_url):"},{"line_number":178,"context_line":"        \"\"\"Poll a job to terminal state, preserving its error code."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        Behaves like `_wait_job_result` but raises the original"}],"source_content_type":"text/x-python","patch_set":22,"id":"001b4882_9a767004","line":177,"updated":"2026-08-03 11:03:01.000000000","message":"Instead, why dont we pass a param to _wait_job_result to throw error on terminal state? This seems like","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"3432a191996d56aa1e047d46142d8cb9157ecc4c","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                    \"exhausted. Aborting.\") % job_url"},{"line_number":175,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def _poll_job_preserve_code(self, job_url):"},{"line_number":178,"context_line":"        \"\"\"Poll a job to terminal state, preserving its error code."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        Behaves like `_wait_job_result` but raises the original"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a6a3367_d0152661","line":177,"in_reply_to":"001b4882_9a767004","updated":"2026-08-03 12:56:25.000000000","message":"Purposes are different, hence different methods. Below are the differences for context:\n\n1. On terminal \u0027failure\u0027, _wait_job_result raises the generic NetAppDriverException (losing code/message), while _poll_job_preserve_code raises the original NaApiError(code, message).\n\n2. _wait_job_result uses @utils.retry on NaRetryableError, wrapping a NaRetryableError around every non-success state — including \u0027failure\u0027. Since that\u0027s the retried exception type, a job that has definitively failed still gets re-polled for the entire timeout budget before finally converting to NetAppDriverException. _poll_job_preserve_code instead uses a plain loop and returns immediately on \u0027failure\u0027 — it\u0027s fail-fast.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":5923,"context_line":"        if not cluster_peers:"},{"line_number":5924,"context_line":"            msg \u003d _(\"Cluster peering with \u0027%(peer)s\u0027 not found.\")"},{"line_number":5925,"context_line":"            raise exception.NetAppException(msg % {\u0027peer\u0027: peer_cluster_name})"},{"line_number":5926,"context_line":"        availability \u003d cluster_peers[0].get(\u0027availability\u0027)"},{"line_number":5927,"context_line":"        if availability !\u003d \u0027available\u0027:"},{"line_number":5928,"context_line":"            msg \u003d _(\"Cluster peer \u0027%(peer)s\u0027 exists but is not in \""},{"line_number":5929,"context_line":"                    \"\u0027available\u0027 state. Current state: %(state)s.\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"2a4434c8_5c984fed","line":5926,"updated":"2026-08-03 11:03:01.000000000","message":"Instead of hardcoding cluster_peers[0], we need to filter the get_cluster_peers request using source and destination cluster name. A single cluster can be peered to multiple clusters. This can turn into false positive if the first peer returned is not the one we are looking for.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6a184ef689433c7cd657278d49668d3fe557b8c2","unresolved":false,"context_lines":[{"line_number":5923,"context_line":"        if not cluster_peers:"},{"line_number":5924,"context_line":"            msg \u003d _(\"Cluster peering with \u0027%(peer)s\u0027 not found.\")"},{"line_number":5925,"context_line":"            raise exception.NetAppException(msg % {\u0027peer\u0027: peer_cluster_name})"},{"line_number":5926,"context_line":"        availability \u003d cluster_peers[0].get(\u0027availability\u0027)"},{"line_number":5927,"context_line":"        if availability !\u003d \u0027available\u0027:"},{"line_number":5928,"context_line":"            msg \u003d _(\"Cluster peer \u0027%(peer)s\u0027 exists but is not in \""},{"line_number":5929,"context_line":"                    \"\u0027available\u0027 state. Current state: %(state)s.\")"}],"source_content_type":"text/x-python","patch_set":22,"id":"30f08fc7_dd1892d2","line":5926,"in_reply_to":"2a4434c8_5c984fed","updated":"2026-08-03 12:19:47.000000000","message":"Here peer_cluster_name is destination cluster name only. \nwe are calling to get the peers clusters(destination clusters) for the source cluster(client instance) by passing destination cluster name already as query param filter.\nONTAP allows only once for peering for each peer cluster(A to B).\n\nOnly one record would exists if it is peered. No false positive here.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":5953,"context_line":"        return response.get(\u0027records\u0027, [])"},{"line_number":5954,"context_line":""},{"line_number":5955,"context_line":"    @na_utils.trace"},{"line_number":5956,"context_line":"    def validate_mediator_reachable(self, peer_cluster_name):"},{"line_number":5957,"context_line":"        \"\"\"Validate that a mediator is reachable and connected."},{"line_number":5958,"context_line":""},{"line_number":5959,"context_line":"        :param peer_cluster_name: name of the peer cluster."}],"source_content_type":"text/x-python","patch_set":22,"id":"218bd326_a19e92ca","line":5956,"updated":"2026-08-03 11:03:01.000000000","message":"Should this method be in client_cmode_rest? It should be partof the orchestration code, not in the client.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"8fbbbf3a4d7a1571be4bc01cf5b484c9059f4bea","unresolved":false,"context_lines":[{"line_number":5953,"context_line":"        return response.get(\u0027records\u0027, [])"},{"line_number":5954,"context_line":""},{"line_number":5955,"context_line":"    @na_utils.trace"},{"line_number":5956,"context_line":"    def validate_mediator_reachable(self, peer_cluster_name):"},{"line_number":5957,"context_line":"        \"\"\"Validate that a mediator is reachable and connected."},{"line_number":5958,"context_line":""},{"line_number":5959,"context_line":"        :param peer_cluster_name: name of the peer cluster."}],"source_content_type":"text/x-python","patch_set":22,"id":"2758bb5e_f578cd52","line":5956,"in_reply_to":"218bd326_a19e92ca","updated":"2026-08-05 10:54:53.000000000","message":"Done","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6022,"context_line":"                enable_tunneling\u003dFalse)"},{"line_number":6023,"context_line":""},{"line_number":6024,"context_line":"    @na_utils.trace"},{"line_number":6025,"context_line":"    def get_volume_details(self, svm_name, volume_name, fields\u003dNone):"},{"line_number":6026,"context_line":"        \"\"\"Get volume details by SVM and volume name."},{"line_number":6027,"context_line":""},{"line_number":6028,"context_line":"        :param svm_name: name of the SVM."}],"source_content_type":"text/x-python","patch_set":22,"id":"2ac72b54_d1b897c7","line":6025,"updated":"2026-08-03 11:03:01.000000000","message":"Why cant we use _get_volume_by_args instead? Introducing a new wrapper method is futile here.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6a184ef689433c7cd657278d49668d3fe557b8c2","unresolved":false,"context_lines":[{"line_number":6022,"context_line":"                enable_tunneling\u003dFalse)"},{"line_number":6023,"context_line":""},{"line_number":6024,"context_line":"    @na_utils.trace"},{"line_number":6025,"context_line":"    def get_volume_details(self, svm_name, volume_name, fields\u003dNone):"},{"line_number":6026,"context_line":"        \"\"\"Get volume details by SVM and volume name."},{"line_number":6027,"context_line":""},{"line_number":6028,"context_line":"        :param svm_name: name of the SVM."}],"source_content_type":"text/x-python","patch_set":22,"id":"ae5af2e7_57e056d8","line":6025,"in_reply_to":"2ac72b54_d1b897c7","updated":"2026-08-03 12:19:47.000000000","message":"_get_volume_by_args() is marked as non public method by python conventions. There is no public method available/not need so far, hence added one now.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6063,"context_line":"            body[\u0027policy\u0027] \u003d policy_name"},{"line_number":6064,"context_line":"        if create_destination_enabled:"},{"line_number":6065,"context_line":"            body[\u0027create_destination\u0027] \u003d {\u0027enabled\u0027: True}"},{"line_number":6066,"context_line":"        return self.send_request(\u0027/snapmirror/relationships/\u0027, \u0027post\u0027,"},{"line_number":6067,"context_line":"                                 body\u003dbody)"},{"line_number":6068,"context_line":""},{"line_number":6069,"context_line":"    @na_utils.trace"}],"source_content_type":"text/x-python","patch_set":22,"id":"37587b21_92136c88","line":6066,"updated":"2026-08-03 11:03:01.000000000","message":"Why can we not use the _create_snapmirror() method instead? The method can locally be used and source and destination volume attributes can be renamed to make it more generic?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5319319038149e98b650c5e074b642b8fc7e02d4","unresolved":false,"context_lines":[{"line_number":6063,"context_line":"            body[\u0027policy\u0027] \u003d policy_name"},{"line_number":6064,"context_line":"        if create_destination_enabled:"},{"line_number":6065,"context_line":"            body[\u0027create_destination\u0027] \u003d {\u0027enabled\u0027: True}"},{"line_number":6066,"context_line":"        return self.send_request(\u0027/snapmirror/relationships/\u0027, \u0027post\u0027,"},{"line_number":6067,"context_line":"                                 body\u003dbody)"},{"line_number":6068,"context_line":""},{"line_number":6069,"context_line":"    @na_utils.trace"}],"source_content_type":"text/x-python","patch_set":22,"id":"8f3da419_3ff2e791","line":6066,"in_reply_to":"37587b21_92136c88","updated":"2026-08-05 15:38:22.000000000","message":"We hit the same REST endpoint, but _create_snapmirror is volume-centric and can\u0027t be reused by just renaming attributes. It builds paths as vserver + \u0027:\u0027 + volume, maps only ZAPI-compat properties (relationship-type, identity-preserve — the latter isn\u0027t even valid on REST and is kept only for signature parity), and swallows relation-exists as success.\n\nSVM SMAS create needs a different shape: SVM paths (svm:), both source/destination.cluster names, create_destination.enabled, and destination.ipspace — none of which exist in that ZAPI-derived mapping. So create_svm_snapmirror is intentionally separate, mirroring the existing *_vol vs SVM split. Will rename this method (e.g. create_snapmirror_relationship) to be more generic, in line with ONTAP REST API reusability.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6067,"context_line":"                                 body\u003dbody)"},{"line_number":6068,"context_line":""},{"line_number":6069,"context_line":"    @na_utils.trace"},{"line_number":6070,"context_line":"    def update_svm_snapmirror_state(self, relationship_uuid, state\u003dNone):"},{"line_number":6071,"context_line":"        \"\"\"Updates the state of an SVM-level SnapMirror relationship."},{"line_number":6072,"context_line":""},{"line_number":6073,"context_line":"        :param relationship_uuid: uuid of the SnapMirror relationship."}],"source_content_type":"text/x-python","patch_set":22,"id":"1bd02998_ed15a7ed","line":6070,"range":{"start_line":6070,"start_character":8,"end_line":6070,"end_character":35},"updated":"2026-08-03 11:03:01.000000000","message":"existing _set_snapmirror_state method can be reused with minor refactoring?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6a184ef689433c7cd657278d49668d3fe557b8c2","unresolved":false,"context_lines":[{"line_number":6067,"context_line":"                                 body\u003dbody)"},{"line_number":6068,"context_line":""},{"line_number":6069,"context_line":"    @na_utils.trace"},{"line_number":6070,"context_line":"    def update_svm_snapmirror_state(self, relationship_uuid, state\u003dNone):"},{"line_number":6071,"context_line":"        \"\"\"Updates the state of an SVM-level SnapMirror relationship."},{"line_number":6072,"context_line":""},{"line_number":6073,"context_line":"        :param relationship_uuid: uuid of the SnapMirror relationship."}],"source_content_type":"text/x-python","patch_set":22,"id":"a3549d1a_0673fce7","line":6070,"range":{"start_line":6070,"start_character":8,"end_line":6070,"end_character":35},"in_reply_to":"1bd02998_ed15a7ed","updated":"2026-08-03 12:19:47.000000000","message":"_set_snapmirror_state() includes business logic to get the relationship and validate other state which is not aligning ONTAP rest api generic method. We do some of the steps like getting snapmirror relationship in workflow already.\n\nHence, dedicated patch call for state for reuse and do job of what it is responsible for (patch only).","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6079,"context_line":"            body\u003dbody)"},{"line_number":6080,"context_line":""},{"line_number":6081,"context_line":"    @na_utils.trace"},{"line_number":6082,"context_line":"    def failover_svm_snapmirror(self, rel_id, source_path, destination_path,"},{"line_number":6083,"context_line":"                                state\u003d\u0027in_sync\u0027):"},{"line_number":6084,"context_line":"        \"\"\"Failover SVM snapmirror relationship by swapping endpoints."},{"line_number":6085,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"4af18a9a_e7a6701f","line":6082,"range":{"start_line":6082,"start_character":8,"end_line":6082,"end_character":31},"updated":"2026-08-03 11:03:01.000000000","message":"this isnt failover - its reverse resync? Failover only breaks the snapmirror.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"1e25328f38b59e64e6d90242471f4037bdf2f985","unresolved":false,"context_lines":[{"line_number":6079,"context_line":"            body\u003dbody)"},{"line_number":6080,"context_line":""},{"line_number":6081,"context_line":"    @na_utils.trace"},{"line_number":6082,"context_line":"    def failover_svm_snapmirror(self, rel_id, source_path, destination_path,"},{"line_number":6083,"context_line":"                                state\u003d\u0027in_sync\u0027):"},{"line_number":6084,"context_line":"        \"\"\"Failover SVM snapmirror relationship by swapping endpoints."},{"line_number":6085,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"296a66bf_83bd69a2","line":6082,"range":{"start_line":6082,"start_character":8,"end_line":6082,"end_character":31},"in_reply_to":"4af18a9a_e7a6701f","updated":"2026-08-05 14:11:17.000000000","message":"we are aligning with smas terminology in ontap where they call it failover.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6104,"context_line":"            f\u0027/snapmirror/relationships/{rel_id}\u0027, \u0027patch\u0027, body\u003dbody)"},{"line_number":6105,"context_line":""},{"line_number":6106,"context_line":"    @na_utils.trace"},{"line_number":6107,"context_line":"    def get_smas_protected_volumes(self, svm_name):"},{"line_number":6108,"context_line":"        \"\"\"Return names of SMAS-protected data volumes on an SVM."},{"line_number":6109,"context_line":""},{"line_number":6110,"context_line":"        GET /storage/volumes?svm.name\u003d\u003csvm\u003e\u0026smas_protection\u003dprotected"}],"source_content_type":"text/x-python","patch_set":22,"id":"3ca09587_4cf141f0","line":6107,"range":{"start_line":6107,"start_character":8,"end_line":6107,"end_character":34},"updated":"2026-08-03 11:03:01.000000000","message":"Why cannot we reuse _get_volume_by_args instead?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6a184ef689433c7cd657278d49668d3fe557b8c2","unresolved":false,"context_lines":[{"line_number":6104,"context_line":"            f\u0027/snapmirror/relationships/{rel_id}\u0027, \u0027patch\u0027, body\u003dbody)"},{"line_number":6105,"context_line":""},{"line_number":6106,"context_line":"    @na_utils.trace"},{"line_number":6107,"context_line":"    def get_smas_protected_volumes(self, svm_name):"},{"line_number":6108,"context_line":"        \"\"\"Return names of SMAS-protected data volumes on an SVM."},{"line_number":6109,"context_line":""},{"line_number":6110,"context_line":"        GET /storage/volumes?svm.name\u003d\u003csvm\u003e\u0026smas_protection\u003dprotected"}],"source_content_type":"text/x-python","patch_set":22,"id":"0cfe4d62_1cb63398","line":6107,"range":{"start_line":6107,"start_character":8,"end_line":6107,"end_character":34},"in_reply_to":"3ca09587_4cf141f0","updated":"2026-08-03 12:19:47.000000000","message":"_get_volume_by_args is single volume record method. We need to list of volumes.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6140,"context_line":"            query\u003dquery)"},{"line_number":6141,"context_line":""},{"line_number":6142,"context_line":"    @na_utils.trace"},{"line_number":6143,"context_line":"    def get_svm_snapmirror_relationships(self, source_path, dest_path,"},{"line_number":6144,"context_line":"                                         fields\u003dNone,"},{"line_number":6145,"context_line":"                                         list_destinations_only\u003dNone):"},{"line_number":6146,"context_line":"        \"\"\"Gets SVM-level SnapMirror relationships matching the given paths."}],"source_content_type":"text/x-python","patch_set":22,"id":"3a33dba9_71a87f8a","line":6143,"range":{"start_line":6143,"start_character":8,"end_line":6143,"end_character":40},"updated":"2026-08-03 11:03:01.000000000","message":"Please use get_snapmirrors() method instead","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"1e25328f38b59e64e6d90242471f4037bdf2f985","unresolved":true,"context_lines":[{"line_number":6140,"context_line":"            query\u003dquery)"},{"line_number":6141,"context_line":""},{"line_number":6142,"context_line":"    @na_utils.trace"},{"line_number":6143,"context_line":"    def get_svm_snapmirror_relationships(self, source_path, dest_path,"},{"line_number":6144,"context_line":"                                         fields\u003dNone,"},{"line_number":6145,"context_line":"                                         list_destinations_only\u003dNone):"},{"line_number":6146,"context_line":"        \"\"\"Gets SVM-level SnapMirror relationships matching the given paths."}],"source_content_type":"text/x-python","patch_set":22,"id":"abf3e2a1_a2fc55d2","line":6143,"range":{"start_line":6143,"start_character":8,"end_line":6143,"end_character":40},"in_reply_to":"3a33dba9_71a87f8a","updated":"2026-08-05 14:11:17.000000000","message":"good point. @Kumar you will handle this ?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"5319319038149e98b650c5e074b642b8fc7e02d4","unresolved":false,"context_lines":[{"line_number":6140,"context_line":"            query\u003dquery)"},{"line_number":6141,"context_line":""},{"line_number":6142,"context_line":"    @na_utils.trace"},{"line_number":6143,"context_line":"    def get_svm_snapmirror_relationships(self, source_path, dest_path,"},{"line_number":6144,"context_line":"                                         fields\u003dNone,"},{"line_number":6145,"context_line":"                                         list_destinations_only\u003dNone):"},{"line_number":6146,"context_line":"        \"\"\"Gets SVM-level SnapMirror relationships matching the given paths."}],"source_content_type":"text/x-python","patch_set":22,"id":"97075241_8333ddaf","line":6143,"range":{"start_line":6143,"start_character":8,"end_line":6143,"end_character":40},"in_reply_to":"abf3e2a1_a2fc55d2","updated":"2026-08-05 15:38:22.000000000","message":"get_snapmirrors() hits the same endpoint, but it remaps records into the ZAPI-compat shape (mirror-state, source-vserver, is-healthy as \u0027true\u0027/\u0027false\u0027, etc.) and uses a fixed field list. SMAS needs native REST records (state, healthy, unhealthy_reason, uuid) with caller-selected fields, so we kept get_svm_snapmirror_relationships as a thin REST query. Will rename it (e.g. get_snapmirror_relationships) for generic ONTAP REST reusability if preferred.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6951,"context_line":"        return response.get(\u0027records\u0027, [])"},{"line_number":6952,"context_line":""},{"line_number":6953,"context_line":"    @na_utils.trace"},{"line_number":6954,"context_line":"    def get_svm_volumes_with_aggregates(self, svm_name):"},{"line_number":6955,"context_line":"        \"\"\"Return a name-keyed dict of non-root volumes with aggregate info."},{"line_number":6956,"context_line":""},{"line_number":6957,"context_line":"        Issues a single bulk GET against the volumes collection, filtered to"}],"source_content_type":"text/x-python","patch_set":22,"id":"1020b31c_63123ec4","line":6954,"range":{"start_line":6954,"start_character":8,"end_line":6954,"end_character":39},"updated":"2026-08-03 11:03:01.000000000","message":"_get_volume_by_args can be used here.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6a184ef689433c7cd657278d49668d3fe557b8c2","unresolved":false,"context_lines":[{"line_number":6951,"context_line":"        return response.get(\u0027records\u0027, [])"},{"line_number":6952,"context_line":""},{"line_number":6953,"context_line":"    @na_utils.trace"},{"line_number":6954,"context_line":"    def get_svm_volumes_with_aggregates(self, svm_name):"},{"line_number":6955,"context_line":"        \"\"\"Return a name-keyed dict of non-root volumes with aggregate info."},{"line_number":6956,"context_line":""},{"line_number":6957,"context_line":"        Issues a single bulk GET against the volumes collection, filtered to"}],"source_content_type":"text/x-python","patch_set":22,"id":"3879f90f_5eab9b54","line":6954,"range":{"start_line":6954,"start_character":8,"end_line":6954,"end_character":39},"in_reply_to":"1020b31c_63123ec4","updated":"2026-08-03 12:19:47.000000000","message":"_get_volume_by_args is single volume record method. We need to list of volumes.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":6996,"context_line":"        self.send_request("},{"line_number":6997,"context_line":"            \u0027/storage/volumes\u0027, \u0027delete\u0027,"},{"line_number":6998,"context_line":"            query\u003d{\u0027uuid\u0027: \u0027|\u0027.join(volume_uuids),"},{"line_number":6999,"context_line":"                   \u0027return_timeout\u0027: 120})"},{"line_number":7000,"context_line":""},{"line_number":7001,"context_line":"    @na_utils.trace"},{"line_number":7002,"context_line":"    def snapmirror_break_dest_svm(self, dest_vserver):"}],"source_content_type":"text/x-python","patch_set":22,"id":"13b84e3c_7c2d72d3","line":6999,"updated":"2026-08-03 11:03:01.000000000","message":"Any particular reason for setting the return_timeout value on this API call?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"1e25328f38b59e64e6d90242471f4037bdf2f985","unresolved":true,"context_lines":[{"line_number":6996,"context_line":"        self.send_request("},{"line_number":6997,"context_line":"            \u0027/storage/volumes\u0027, \u0027delete\u0027,"},{"line_number":6998,"context_line":"            query\u003d{\u0027uuid\u0027: \u0027|\u0027.join(volume_uuids),"},{"line_number":6999,"context_line":"                   \u0027return_timeout\u0027: 120})"},{"line_number":7000,"context_line":""},{"line_number":7001,"context_line":"    @na_utils.trace"},{"line_number":7002,"context_line":"    def snapmirror_break_dest_svm(self, dest_vserver):"}],"source_content_type":"text/x-python","patch_set":22,"id":"e6568f8e_bb8b5eda","line":6999,"in_reply_to":"13b84e3c_7c2d72d3","updated":"2026-08-05 14:11:17.000000000","message":"Will be updating this to pass uuid is json body. Timeout will be removed","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"7a19f60fc3b9b7c6cd903f9be24ce3ff2a536b24","unresolved":false,"context_lines":[{"line_number":6996,"context_line":"        self.send_request("},{"line_number":6997,"context_line":"            \u0027/storage/volumes\u0027, \u0027delete\u0027,"},{"line_number":6998,"context_line":"            query\u003d{\u0027uuid\u0027: \u0027|\u0027.join(volume_uuids),"},{"line_number":6999,"context_line":"                   \u0027return_timeout\u0027: 120})"},{"line_number":7000,"context_line":""},{"line_number":7001,"context_line":"    @na_utils.trace"},{"line_number":7002,"context_line":"    def snapmirror_break_dest_svm(self, dest_vserver):"}],"source_content_type":"text/x-python","patch_set":22,"id":"262233a6_6f4877de","line":6999,"in_reply_to":"e6568f8e_bb8b5eda","updated":"2026-08-06 08:17:27.000000000","message":"Done","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":7024,"context_line":"                body\u003dbody)"},{"line_number":7025,"context_line":"        except netapp_api.api.NaApiError as e:"},{"line_number":7026,"context_line":"            if e.code \u003d\u003d netapp_api.EREST_ENTRY_NOT_FOUND:"},{"line_number":7027,"context_line":"                LOG.info(\u0027No CIFS service to delete on SVM %s.\u0027,"},{"line_number":7028,"context_line":"                         vserver_name)"},{"line_number":7029,"context_line":"            else:"},{"line_number":7030,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":22,"id":"dca3dc15_701f1b2b","line":7027,"range":{"start_line":7027,"start_character":20,"end_line":7027,"end_character":24},"updated":"2026-08-03 11:03:01.000000000","message":"Please log error or warning.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"8fbbbf3a4d7a1571be4bc01cf5b484c9059f4bea","unresolved":false,"context_lines":[{"line_number":7024,"context_line":"                body\u003dbody)"},{"line_number":7025,"context_line":"        except netapp_api.api.NaApiError as e:"},{"line_number":7026,"context_line":"            if e.code \u003d\u003d netapp_api.EREST_ENTRY_NOT_FOUND:"},{"line_number":7027,"context_line":"                LOG.info(\u0027No CIFS service to delete on SVM %s.\u0027,"},{"line_number":7028,"context_line":"                         vserver_name)"},{"line_number":7029,"context_line":"            else:"},{"line_number":7030,"context_line":"                raise"}],"source_content_type":"text/x-python","patch_set":22,"id":"14f4d789_46f46335","line":7027,"range":{"start_line":7027,"start_character":20,"end_line":7027,"end_character":24},"in_reply_to":"dca3dc15_701f1b2b","updated":"2026-08-05 10:54:53.000000000","message":"This is delete_share_server_replica_workflow which follows idempotency.\nInfo make sense.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"}],"manila/share/drivers/netapp/dataontap/client/rest_api.py":[{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":59,"context_line":"EREST_CANNOT_MODITY_SPECIFIED_FIELD \u003d \u0027917628\u0027"},{"line_number":60,"context_line":"EREST_VOLDEL_NOT_ALLOW_BY_CLONE \u003d \u0027524615\u0027"},{"line_number":61,"context_line":"EREST_SNAPSHOT_NOT_FOUND \u003d \u0027542797\u0027"},{"line_number":62,"context_line":"EREST_SVM_DR_OPERATION_NOT_PERMITTED \u003d \u00272621570\u0027"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class NaRetryableError(api.NaApiError):"}],"source_content_type":"text/x-python","patch_set":13,"id":"667b1422_f12e509f","line":62,"updated":"2026-07-19 13:15:30.000000000","message":"Delete this.","commit_id":"31866206181f199363314ac02a3db63031c10b35"}],"manila/share/drivers/netapp/dataontap/cluster_mode/data_motion.py":[{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":987,"context_line":"                return"},{"line_number":988,"context_line":"            if vserver_info.get(\u0027subtype\u0027) !\u003d \u0027default\u0027:"},{"line_number":989,"context_line":"                if is_dest_path:"},{"line_number":990,"context_line":"                    client.break_svm_snapmirror(dest_vserver\u003dvserver_name)"},{"line_number":991,"context_line":"                else:"},{"line_number":992,"context_line":"                    client.break_svm_snapmirror(source_vserver\u003dvserver_name)"},{"line_number":993,"context_line":"                raise exception.VserverNotReady(vserver\u003dvserver_name)"}],"source_content_type":"text/x-python","patch_set":13,"id":"915febb0_ffed3b40","line":990,"updated":"2026-07-19 13:15:30.000000000","message":"@Sanketh recheck this. This might break svm dr.","commit_id":"31866206181f199363314ac02a3db63031c10b35"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":787,"context_line":""},{"line_number":788,"context_line":"        # Step 5: return without waiting for baseline transfer."},{"line_number":789,"context_line":"        backend_details \u003d {\u0027vserver_name\u0027: dp_dest_svm_name}"},{"line_number":790,"context_line":"        if replication_policy \u003d\u003d na_utils.SMAS_POLICY_NAME:"},{"line_number":791,"context_line":"            source_backend_details \u003d source_share_server.get("},{"line_number":792,"context_line":"                \u0027backend_details\u0027) or {}"},{"line_number":793,"context_line":"            source_ports \u003d source_backend_details.get(\u0027ports\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"baa2c9af_20096fd1","line":790,"updated":"2026-08-03 11:03:01.000000000","message":"Do we need to handle else block?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6a184ef689433c7cd657278d49668d3fe557b8c2","unresolved":false,"context_lines":[{"line_number":787,"context_line":""},{"line_number":788,"context_line":"        # Step 5: return without waiting for baseline transfer."},{"line_number":789,"context_line":"        backend_details \u003d {\u0027vserver_name\u0027: dp_dest_svm_name}"},{"line_number":790,"context_line":"        if replication_policy \u003d\u003d na_utils.SMAS_POLICY_NAME:"},{"line_number":791,"context_line":"            source_backend_details \u003d source_share_server.get("},{"line_number":792,"context_line":"                \u0027backend_details\u0027) or {}"},{"line_number":793,"context_line":"            source_ports \u003d source_backend_details.get(\u0027ports\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"8403a4c4_8c4ce0bb","line":790,"in_reply_to":"baa2c9af_20096fd1","updated":"2026-08-03 12:19:47.000000000","message":"Not required. The else part can be extended when SVM-DR is implemented accordingly.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":1315,"context_line":"                               \u0027dest\u0027: dest_vserver})"},{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":"    @na_utils.trace"},{"line_number":1318,"context_line":"    def release_svm_snapmirror_relationship(self, src_share_server,"},{"line_number":1319,"context_line":"                                            dest_share_server):"},{"line_number":1320,"context_line":"        \"\"\"Release source-side SVM SnapMirror metadata and snapshots."},{"line_number":1321,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9fb15eb1_d9f9e117","line":1318,"updated":"2026-08-03 11:03:01.000000000","message":"We do not need to release the snapmirror if delete is successful. IMO, we can remove this method.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"7a19f60fc3b9b7c6cd903f9be24ce3ff2a536b24","unresolved":false,"context_lines":[{"line_number":1315,"context_line":"                               \u0027dest\u0027: dest_vserver})"},{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":"    @na_utils.trace"},{"line_number":1318,"context_line":"    def release_svm_snapmirror_relationship(self, src_share_server,"},{"line_number":1319,"context_line":"                                            dest_share_server):"},{"line_number":1320,"context_line":"        \"\"\"Release source-side SVM SnapMirror metadata and snapshots."},{"line_number":1321,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"1733b215_2d317d47","line":1318,"in_reply_to":"9fb15eb1_d9f9e117","updated":"2026-08-06 08:17:27.000000000","message":"Done","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_base.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":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":3295,"context_line":"        properties \u003d properties or {}"},{"line_number":3296,"context_line":"        replication_type \u003d properties.get(\u0027replication_type\u0027, \u0027sync\u0027)"},{"line_number":3297,"context_line":"        if replication_type \u003d\u003d \u0027async\u0027:"},{"line_number":3298,"context_line":"            msg \u003d _(\"Async replication (SVM-DR) is not supported in this \""},{"line_number":3299,"context_line":"                    \"release. Use \u0027sync\u0027 for SM-as NAS replication.\")"},{"line_number":3300,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":3301,"context_line":""},{"line_number":3302,"context_line":"        if replication_type !\u003d \u0027sync\u0027:"}],"source_content_type":"text/x-python","patch_set":22,"id":"868bf324_2a4742b6","line":3299,"range":{"start_line":3298,"start_character":21,"end_line":3299,"end_character":67},"updated":"2026-08-03 11:03:01.000000000","message":"This is an open ended message. We should keep the message generic to releases. May be something like: \"Async replication (SVM-DR) is not yet supported for share server replication. Please use \u0027sync\u0027 policy (AutomatedFailover) instead.\"","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"8fbbbf3a4d7a1571be4bc01cf5b484c9059f4bea","unresolved":false,"context_lines":[{"line_number":3295,"context_line":"        properties \u003d properties or {}"},{"line_number":3296,"context_line":"        replication_type \u003d properties.get(\u0027replication_type\u0027, \u0027sync\u0027)"},{"line_number":3297,"context_line":"        if replication_type \u003d\u003d \u0027async\u0027:"},{"line_number":3298,"context_line":"            msg \u003d _(\"Async replication (SVM-DR) is not supported in this \""},{"line_number":3299,"context_line":"                    \"release. Use \u0027sync\u0027 for SM-as NAS replication.\")"},{"line_number":3300,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":3301,"context_line":""},{"line_number":3302,"context_line":"        if replication_type !\u003d \u0027sync\u0027:"}],"source_content_type":"text/x-python","patch_set":22,"id":"e8df42c9_4a5a1867","line":3299,"range":{"start_line":3298,"start_character":21,"end_line":3299,"end_character":67},"in_reply_to":"868bf324_2a4742b6","updated":"2026-08-05 10:54:53.000000000","message":"Done","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":3299,"context_line":"                    \"release. Use \u0027sync\u0027 for SM-as NAS replication.\")"},{"line_number":3300,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":3301,"context_line":""},{"line_number":3302,"context_line":"        if replication_type !\u003d \u0027sync\u0027:"},{"line_number":3303,"context_line":"            msg \u003d _(\"Unsupported share server replication type: \""},{"line_number":3304,"context_line":"                    \"\u0027%(type)s\u0027. Supported types: \u0027sync\u0027.\")"},{"line_number":3305,"context_line":"            raise exception.NetAppException("}],"source_content_type":"text/x-python","patch_set":22,"id":"5bd141af_8688c48d","line":3302,"updated":"2026-08-03 11:03:01.000000000","message":"Shouldnt this check be enough to fail the support? if !sync \u003d\u003d if async?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"6a184ef689433c7cd657278d49668d3fe557b8c2","unresolved":false,"context_lines":[{"line_number":3299,"context_line":"                    \"release. Use \u0027sync\u0027 for SM-as NAS replication.\")"},{"line_number":3300,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":3301,"context_line":""},{"line_number":3302,"context_line":"        if replication_type !\u003d \u0027sync\u0027:"},{"line_number":3303,"context_line":"            msg \u003d _(\"Unsupported share server replication type: \""},{"line_number":3304,"context_line":"                    \"\u0027%(type)s\u0027. Supported types: \u0027sync\u0027.\")"},{"line_number":3305,"context_line":"            raise exception.NetAppException("}],"source_content_type":"text/x-python","patch_set":22,"id":"416d7957_96b198d8","line":3302,"in_reply_to":"5bd141af_8688c48d","updated":"2026-08-03 12:19:47.000000000","message":"This is to catch any typo/gibberish value.\nex: replication_type\u003drandom","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"76f9d08477e75077f1982b07e1f77a0e7ea29504","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"            replication_policy)"},{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":""},{"line_number":1063,"context_line":"    @na_utils.trace"},{"line_number":1064,"context_line":"    def create_replica(self, context, replica_list, new_replica,"},{"line_number":1065,"context_line":"                       access_rules, share_snapshots, share_server\u003dNone):"},{"line_number":1066,"context_line":"        \"\"\"Creates the new replica on this backend and sets up SnapMirror."}],"source_content_type":"text/x-python","patch_set":3,"id":"2ade5d0d_7205c140","line":1063,"updated":"2026-06-22 14:05:12.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"45e6d3b756753e153776ad244791f13bc4658c12"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"9af936903967c2ad5164ba7500b2dcd86f17ac6e","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"            replication_policy)"},{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":""},{"line_number":1063,"context_line":"    @na_utils.trace"},{"line_number":1064,"context_line":"    def create_replica(self, context, replica_list, new_replica,"},{"line_number":1065,"context_line":"                       access_rules, share_snapshots, share_server\u003dNone):"},{"line_number":1066,"context_line":"        \"\"\"Creates the new replica on this backend and sets up SnapMirror."}],"source_content_type":"text/x-python","patch_set":3,"id":"37329f36_bb0bf0e3","line":1063,"in_reply_to":"2ade5d0d_7205c140","updated":"2026-06-23 04:16:13.000000000","message":"Done","commit_id":"45e6d3b756753e153776ad244791f13bc4658c12"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"49dbefb5755f37edb3b9d43af7c2bfb5922c17b6","unresolved":true,"context_lines":[{"line_number":3180,"context_line":"    def _check_svm_smas_snapmirror_state_allows_delete("},{"line_number":3181,"context_line":"            self, src_vserver, dest_vserver, dest_client):"},{"line_number":3182,"context_line":"        \"\"\"SMAS pre-check: block delete if transfer or failover in progress.\"\"\""},{"line_number":3183,"context_line":"        snapmirrors \u003d dest_client.get_snapmirrors_svm("},{"line_number":3184,"context_line":"            source_vserver\u003dsrc_vserver, dest_vserver\u003ddest_vserver)"},{"line_number":3185,"context_line":"        if not snapmirrors:"},{"line_number":3186,"context_line":"            LOG.debug(\u0027No SnapMirror relationship found between source \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"199d151f_c942dba1","line":3183,"updated":"2026-07-10 05:12:08.000000000","message":"@sanketh.shetty@netapp.com As discussed we need to use get_svm_snapmirror_relationships() for all share server replica and avoid dependency on ZAPI-rest contract based API.","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":3180,"context_line":"    def _check_svm_smas_snapmirror_state_allows_delete("},{"line_number":3181,"context_line":"            self, src_vserver, dest_vserver, dest_client):"},{"line_number":3182,"context_line":"        \"\"\"SMAS pre-check: block delete if transfer or failover in progress.\"\"\""},{"line_number":3183,"context_line":"        snapmirrors \u003d dest_client.get_snapmirrors_svm("},{"line_number":3184,"context_line":"            source_vserver\u003dsrc_vserver, dest_vserver\u003ddest_vserver)"},{"line_number":3185,"context_line":"        if not snapmirrors:"},{"line_number":3186,"context_line":"            LOG.debug(\u0027No SnapMirror relationship found between source \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"adb59849_1cb685e4","line":3183,"in_reply_to":"199d151f_c942dba1","updated":"2026-07-19 13:15:30.000000000","message":"Done","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"287a09ee0b85dbe6dfa0882085566f4f61c7b065","unresolved":true,"context_lines":[{"line_number":3214,"context_line":"    @na_utils.trace"},{"line_number":3215,"context_line":"    def _cleanup_flexclones_on_svm(self, vserver_name, client):"},{"line_number":3216,"context_line":"        \"\"\"Delete all FlexClone volumes on the SVM.\"\"\""},{"line_number":3217,"context_line":"        flexclones \u003d client.get_flexclones_on_svm(vserver_name)"},{"line_number":3218,"context_line":"        if not flexclones:"},{"line_number":3219,"context_line":"            LOG.debug(\u0027No FlexClone volumes found on SVM %(svm)s.\u0027,"},{"line_number":3220,"context_line":"                      {\u0027svm\u0027: vserver_name})"}],"source_content_type":"text/x-python","patch_set":14,"id":"1c4c6dff_04446407","line":3217,"updated":"2026-07-10 05:25:04.000000000","message":"@sanketh.shetty@netapp.com We can directly use self._get_volumes_on_svm(svm_name, is_root\u003dFalse, is_flexclone\u003dTrue) and remove additional function.","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":3214,"context_line":"    @na_utils.trace"},{"line_number":3215,"context_line":"    def _cleanup_flexclones_on_svm(self, vserver_name, client):"},{"line_number":3216,"context_line":"        \"\"\"Delete all FlexClone volumes on the SVM.\"\"\""},{"line_number":3217,"context_line":"        flexclones \u003d client.get_flexclones_on_svm(vserver_name)"},{"line_number":3218,"context_line":"        if not flexclones:"},{"line_number":3219,"context_line":"            LOG.debug(\u0027No FlexClone volumes found on SVM %(svm)s.\u0027,"},{"line_number":3220,"context_line":"                      {\u0027svm\u0027: vserver_name})"}],"source_content_type":"text/x-python","patch_set":14,"id":"5500a4c9_66c1a8dd","line":3217,"in_reply_to":"1c4c6dff_04446407","updated":"2026-07-19 13:15:30.000000000","message":"Done","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"287a09ee0b85dbe6dfa0882085566f4f61c7b065","unresolved":true,"context_lines":[{"line_number":3228,"context_line":"    @na_utils.trace"},{"line_number":3229,"context_line":"    def _cleanup_data_volumes_on_svm(self, vserver_name, client):"},{"line_number":3230,"context_line":"        \"\"\"Delete all non-root data volumes on the destination SVM.\"\"\""},{"line_number":3231,"context_line":"        volumes \u003d client.get_non_root_volumes_on_svm(vserver_name)"},{"line_number":3232,"context_line":"        if not volumes:"},{"line_number":3233,"context_line":"            LOG.debug(\u0027No data volumes found on SVM %(svm)s.\u0027,"},{"line_number":3234,"context_line":"                      {\u0027svm\u0027: vserver_name})"}],"source_content_type":"text/x-python","patch_set":14,"id":"7afd1381_b917fc06","line":3231,"updated":"2026-07-10 05:25:04.000000000","message":"@sanketh.shetty@netapp.com We can directly use self._get_volumes_on_svm(svm_name, is_root\u003dFalse) and remove additional function.","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":3228,"context_line":"    @na_utils.trace"},{"line_number":3229,"context_line":"    def _cleanup_data_volumes_on_svm(self, vserver_name, client):"},{"line_number":3230,"context_line":"        \"\"\"Delete all non-root data volumes on the destination SVM.\"\"\""},{"line_number":3231,"context_line":"        volumes \u003d client.get_non_root_volumes_on_svm(vserver_name)"},{"line_number":3232,"context_line":"        if not volumes:"},{"line_number":3233,"context_line":"            LOG.debug(\u0027No data volumes found on SVM %(svm)s.\u0027,"},{"line_number":3234,"context_line":"                      {\u0027svm\u0027: vserver_name})"}],"source_content_type":"text/x-python","patch_set":14,"id":"4cd0499b_4ec41974","line":3231,"in_reply_to":"7afd1381_b917fc06","updated":"2026-07-19 13:15:30.000000000","message":"Done","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3075,"context_line":"                 \u0027to destination SVM %(dest)s.\u0027,"},{"line_number":3076,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"},{"line_number":3077,"context_line":""},{"line_number":3078,"context_line":"        # Step 1: SMAS pre-check - block if transfer/failover in progress."},{"line_number":3079,"context_line":"        LOG.info(\u0027Checking SVM SnapMirror state before deleting share \u0027"},{"line_number":3080,"context_line":"                 \u0027server replica (source %(src)s, destination %(dest)s).\u0027,"},{"line_number":3081,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"}],"source_content_type":"text/x-python","patch_set":18,"id":"11bbdd0d_437f2056","line":3078,"updated":"2026-07-23 11:26:58.000000000","message":"we can remove this check. Let it fail on ontap.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"aed2c9af63009a72a0263ca2c72c130294fc1964","unresolved":false,"context_lines":[{"line_number":3075,"context_line":"                 \u0027to destination SVM %(dest)s.\u0027,"},{"line_number":3076,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"},{"line_number":3077,"context_line":""},{"line_number":3078,"context_line":"        # Step 1: SMAS pre-check - block if transfer/failover in progress."},{"line_number":3079,"context_line":"        LOG.info(\u0027Checking SVM SnapMirror state before deleting share \u0027"},{"line_number":3080,"context_line":"                 \u0027server replica (source %(src)s, destination %(dest)s).\u0027,"},{"line_number":3081,"context_line":"                 {\u0027src\u0027: src_vserver, \u0027dest\u0027: dest_vserver})"}],"source_content_type":"text/x-python","patch_set":18,"id":"34234f2d_6873577a","line":3078,"in_reply_to":"11bbdd0d_437f2056","updated":"2026-07-27 09:22:56.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3094,"context_line":"            LOG.exception(msg)"},{"line_number":3095,"context_line":"            raise"},{"line_number":3096,"context_line":""},{"line_number":3097,"context_line":"        # Step 3: Source-side SVM SnapMirror release."},{"line_number":3098,"context_line":"        LOG.info(\u0027Releasing source-side SVM SnapMirror metadata for \u0027"},{"line_number":3099,"context_line":"                 \u0027vserver %(src)s.\u0027, {\u0027src\u0027: src_vserver})"},{"line_number":3100,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"4d1330d3_d17beb98","line":3097,"updated":"2026-07-23 11:26:58.000000000","message":"Confirm with ONTAP team if job fails when relationship is not release from source during delete relationship.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"7a19f60fc3b9b7c6cd903f9be24ce3ff2a536b24","unresolved":false,"context_lines":[{"line_number":3094,"context_line":"            LOG.exception(msg)"},{"line_number":3095,"context_line":"            raise"},{"line_number":3096,"context_line":""},{"line_number":3097,"context_line":"        # Step 3: Source-side SVM SnapMirror release."},{"line_number":3098,"context_line":"        LOG.info(\u0027Releasing source-side SVM SnapMirror metadata for \u0027"},{"line_number":3099,"context_line":"                 \u0027vserver %(src)s.\u0027, {\u0027src\u0027: src_vserver})"},{"line_number":3100,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":18,"id":"f7739a4d_ff545175","line":3097,"in_reply_to":"4d1330d3_d17beb98","updated":"2026-08-06 08:17:27.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3133,"context_line":"        LOG.info(\u0027Cleaning up FlexVol volumes on destination SVM %(dest)s.\u0027,"},{"line_number":3134,"context_line":"                 {\u0027dest\u0027: dest_vserver})"},{"line_number":3135,"context_line":"        try:"},{"line_number":3136,"context_line":"            self._cleanup_data_volumes_on_svm(dest_vserver, dest_client)"},{"line_number":3137,"context_line":"            LOG.info(\u0027Completed data volume cleanup on destination SVM \u0027"},{"line_number":3138,"context_line":"                     \u0027%(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3139,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":18,"id":"aea11687_420beb8f","line":3136,"updated":"2026-07-23 11:26:58.000000000","message":"Talk to Sriram on how error is handled during bulk update.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"1e25328f38b59e64e6d90242471f4037bdf2f985","unresolved":false,"context_lines":[{"line_number":3133,"context_line":"        LOG.info(\u0027Cleaning up FlexVol volumes on destination SVM %(dest)s.\u0027,"},{"line_number":3134,"context_line":"                 {\u0027dest\u0027: dest_vserver})"},{"line_number":3135,"context_line":"        try:"},{"line_number":3136,"context_line":"            self._cleanup_data_volumes_on_svm(dest_vserver, dest_client)"},{"line_number":3137,"context_line":"            LOG.info(\u0027Completed data volume cleanup on destination SVM \u0027"},{"line_number":3138,"context_line":"                     \u0027%(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3139,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":18,"id":"989e2720_ed57c8af","line":3136,"in_reply_to":"3b57c1be_d91a6eb7","updated":"2026-08-05 14:11:17.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"4feff4b136ca7e47f08fe6d2b17c9be410894042","unresolved":true,"context_lines":[{"line_number":3133,"context_line":"        LOG.info(\u0027Cleaning up FlexVol volumes on destination SVM %(dest)s.\u0027,"},{"line_number":3134,"context_line":"                 {\u0027dest\u0027: dest_vserver})"},{"line_number":3135,"context_line":"        try:"},{"line_number":3136,"context_line":"            self._cleanup_data_volumes_on_svm(dest_vserver, dest_client)"},{"line_number":3137,"context_line":"            LOG.info(\u0027Completed data volume cleanup on destination SVM \u0027"},{"line_number":3138,"context_line":"                     \u0027%(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3139,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":18,"id":"3b57c1be_d91a6eb7","line":3136,"in_reply_to":"aea11687_420beb8f","updated":"2026-07-27 09:24:06.000000000","message":"Discussed it. We will be getting the error in the job response itself which can be propogated.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3141,"context_line":"                          dest_vserver)"},{"line_number":3142,"context_line":""},{"line_number":3143,"context_line":"        # Step 7: CIFS force-delete on destination SVM."},{"line_number":3144,"context_line":"        LOG.info(\u0027Force-deleting CIFS service on destination SVM \u0027"},{"line_number":3145,"context_line":"                 \u0027%(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3146,"context_line":"        try:"},{"line_number":3147,"context_line":"            self._delete_cifs_service_force(dest_vserver, dest_client)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ec052b10_467bb24e","line":3144,"updated":"2026-07-23 11:26:58.000000000","message":"Check with CIFS service enabled.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"7a19f60fc3b9b7c6cd903f9be24ce3ff2a536b24","unresolved":true,"context_lines":[{"line_number":3141,"context_line":"                          dest_vserver)"},{"line_number":3142,"context_line":""},{"line_number":3143,"context_line":"        # Step 7: CIFS force-delete on destination SVM."},{"line_number":3144,"context_line":"        LOG.info(\u0027Force-deleting CIFS service on destination SVM \u0027"},{"line_number":3145,"context_line":"                 \u0027%(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3146,"context_line":"        try:"},{"line_number":3147,"context_line":"            self._delete_cifs_service_force(dest_vserver, dest_client)"}],"source_content_type":"text/x-python","patch_set":18,"id":"75c49eb0_311eeff5","line":3144,"in_reply_to":"1fa770bd_4ed0ed8c","updated":"2026-08-06 08:17:27.000000000","message":"This will be validated as part of peer testing.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"4feff4b136ca7e47f08fe6d2b17c9be410894042","unresolved":true,"context_lines":[{"line_number":3141,"context_line":"                          dest_vserver)"},{"line_number":3142,"context_line":""},{"line_number":3143,"context_line":"        # Step 7: CIFS force-delete on destination SVM."},{"line_number":3144,"context_line":"        LOG.info(\u0027Force-deleting CIFS service on destination SVM \u0027"},{"line_number":3145,"context_line":"                 \u0027%(dest)s.\u0027, {\u0027dest\u0027: dest_vserver})"},{"line_number":3146,"context_line":"        try:"},{"line_number":3147,"context_line":"            self._delete_cifs_service_force(dest_vserver, dest_client)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1fa770bd_4ed0ed8c","line":3144,"in_reply_to":"ec052b10_467bb24e","updated":"2026-07-27 09:24:06.000000000","message":"Will check with when setup is up.","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3232,"context_line":"            return"},{"line_number":3233,"context_line":""},{"line_number":3234,"context_line":"        clone_uuids \u003d [vol[\u0027uuid\u0027] for vol in flexclones]"},{"line_number":3235,"context_line":"        LOG.info(\u0027Deleting %(count)d FlexClone volume(s) on SVM %(svm)s.\u0027,"},{"line_number":3236,"context_line":"                 {\u0027count\u0027: len(clone_uuids), \u0027svm\u0027: vserver_name})"},{"line_number":3237,"context_line":"        client.delete_volumes_by_uuids(clone_uuids)"},{"line_number":3238,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"b47fcf5a_8fee6f9b","line":3235,"updated":"2026-07-23 11:26:58.000000000","message":"debug","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"1e25328f38b59e64e6d90242471f4037bdf2f985","unresolved":false,"context_lines":[{"line_number":3232,"context_line":"            return"},{"line_number":3233,"context_line":""},{"line_number":3234,"context_line":"        clone_uuids \u003d [vol[\u0027uuid\u0027] for vol in flexclones]"},{"line_number":3235,"context_line":"        LOG.info(\u0027Deleting %(count)d FlexClone volume(s) on SVM %(svm)s.\u0027,"},{"line_number":3236,"context_line":"                 {\u0027count\u0027: len(clone_uuids), \u0027svm\u0027: vserver_name})"},{"line_number":3237,"context_line":"        client.delete_volumes_by_uuids(clone_uuids)"},{"line_number":3238,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"28cf0d84_c84277a3","line":3235,"in_reply_to":"b47fcf5a_8fee6f9b","updated":"2026-08-05 14:11:17.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3315,"context_line":"        ontap_but_not_manila_driver \u003d ontap_protected_names - set("},{"line_number":3316,"context_line":"            expected_names_from_manila_driver)"},{"line_number":3317,"context_line":""},{"line_number":3318,"context_line":"        if manila_driver_but_not_ontap or ontap_but_not_manila_driver:"},{"line_number":3319,"context_line":"            msg \u003d _("},{"line_number":3320,"context_line":"                \u0027Protected volume mismatch detected on SVM %(svm)s. \u0027"},{"line_number":3321,"context_line":"                \u0027Volumes tracked by Manila driver but not protected in ONTAP: \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"68965cea_02a8f7fc","line":3318,"updated":"2026-07-23 11:26:58.000000000","message":"Remove the check if volume present in ontap but not manila driver","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"aed2c9af63009a72a0263ca2c72c130294fc1964","unresolved":false,"context_lines":[{"line_number":3315,"context_line":"        ontap_but_not_manila_driver \u003d ontap_protected_names - set("},{"line_number":3316,"context_line":"            expected_names_from_manila_driver)"},{"line_number":3317,"context_line":""},{"line_number":3318,"context_line":"        if manila_driver_but_not_ontap or ontap_but_not_manila_driver:"},{"line_number":3319,"context_line":"            msg \u003d _("},{"line_number":3320,"context_line":"                \u0027Protected volume mismatch detected on SVM %(svm)s. \u0027"},{"line_number":3321,"context_line":"                \u0027Volumes tracked by Manila driver but not protected in ONTAP: \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"db6223e6_a8ff1478","line":3318,"in_reply_to":"68965cea_02a8f7fc","updated":"2026-07-27 09:22:56.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3445,"context_line":"        LOG.info(\u0027Failover request completed for \u0027"},{"line_number":3446,"context_line":"                 \u0027SnapMirror relationship %(rel)s.\u0027, {\u0027rel\u0027: rel_uuid})"},{"line_number":3447,"context_line":""},{"line_number":3448,"context_line":"        # Verify post-failover state."},{"line_number":3449,"context_line":"        #"},{"line_number":3450,"context_line":"        # The failover job reaching \u0027success\u0027 only means ONTAP accepted and"},{"line_number":3451,"context_line":"        # executed the endpoint swap; the relationship can briefly report"}],"source_content_type":"text/x-python","patch_set":18,"id":"8b1ae48d_945a6d6a","line":3448,"updated":"2026-07-23 11:26:58.000000000","message":"Remove this check","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"4feff4b136ca7e47f08fe6d2b17c9be410894042","unresolved":false,"context_lines":[{"line_number":3445,"context_line":"        LOG.info(\u0027Failover request completed for \u0027"},{"line_number":3446,"context_line":"                 \u0027SnapMirror relationship %(rel)s.\u0027, {\u0027rel\u0027: rel_uuid})"},{"line_number":3447,"context_line":""},{"line_number":3448,"context_line":"        # Verify post-failover state."},{"line_number":3449,"context_line":"        #"},{"line_number":3450,"context_line":"        # The failover job reaching \u0027success\u0027 only means ONTAP accepted and"},{"line_number":3451,"context_line":"        # executed the endpoint swap; the relationship can briefly report"}],"source_content_type":"text/x-python","patch_set":18,"id":"12521d26_95b4c825","line":3448,"in_reply_to":"8b1ae48d_945a6d6a","updated":"2026-07-27 09:24:06.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3463,"context_line":"            fields\u003d\u0027state,healthy,unhealthy_reason,source.path,\u0027"},{"line_number":3464,"context_line":"                   \u0027destination.path\u0027)"},{"line_number":3465,"context_line":"        post_state \u003d relationship.get(\u0027state\u0027)"},{"line_number":3466,"context_line":"        post_healthy \u003d relationship.get(\u0027healthy\u0027)"},{"line_number":3467,"context_line":""},{"line_number":3468,"context_line":"        in_progress_states \u003d (na_utils.SM_SYNCHRONIZING_STATE,"},{"line_number":3469,"context_line":"                              na_utils.SM_EXPANDING_STATE,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1e19cab5_c057ec01","line":3466,"updated":"2026-07-23 11:26:58.000000000","message":"post_failover","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"aed2c9af63009a72a0263ca2c72c130294fc1964","unresolved":false,"context_lines":[{"line_number":3463,"context_line":"            fields\u003d\u0027state,healthy,unhealthy_reason,source.path,\u0027"},{"line_number":3464,"context_line":"                   \u0027destination.path\u0027)"},{"line_number":3465,"context_line":"        post_state \u003d relationship.get(\u0027state\u0027)"},{"line_number":3466,"context_line":"        post_healthy \u003d relationship.get(\u0027healthy\u0027)"},{"line_number":3467,"context_line":""},{"line_number":3468,"context_line":"        in_progress_states \u003d (na_utils.SM_SYNCHRONIZING_STATE,"},{"line_number":3469,"context_line":"                              na_utils.SM_EXPANDING_STATE,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f265150_f7bf18e5","line":3466,"in_reply_to":"1e19cab5_c057ec01","updated":"2026-07-27 09:22:56.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3503,"context_line":""},{"line_number":3504,"context_line":"        promoted_subtype \u003d (promoted_info or {}).get(\u0027subtype\u0027)"},{"line_number":3505,"context_line":"        promoted_state \u003d (promoted_info or {}).get(\u0027state\u0027)"},{"line_number":3506,"context_line":"        if promoted_subtype !\u003d \u0027default\u0027 or promoted_state !\u003d \u0027running\u0027:"},{"line_number":3507,"context_line":"            msg \u003d _(\u0027Promoted SVM %(svm)s is not in the expected state after \u0027"},{"line_number":3508,"context_line":"                    \u0027failover: subtype\u003d%(subtype)s, state\u003d%(state)s.\u0027) % {"},{"line_number":3509,"context_line":"                        \u0027svm\u0027: dest_vserver, \u0027subtype\u0027: promoted_subtype,"}],"source_content_type":"text/x-python","patch_set":18,"id":"40c4818b_78649833","line":3506,"updated":"2026-07-23 11:26:58.000000000","message":"update to const","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"aed2c9af63009a72a0263ca2c72c130294fc1964","unresolved":false,"context_lines":[{"line_number":3503,"context_line":""},{"line_number":3504,"context_line":"        promoted_subtype \u003d (promoted_info or {}).get(\u0027subtype\u0027)"},{"line_number":3505,"context_line":"        promoted_state \u003d (promoted_info or {}).get(\u0027state\u0027)"},{"line_number":3506,"context_line":"        if promoted_subtype !\u003d \u0027default\u0027 or promoted_state !\u003d \u0027running\u0027:"},{"line_number":3507,"context_line":"            msg \u003d _(\u0027Promoted SVM %(svm)s is not in the expected state after \u0027"},{"line_number":3508,"context_line":"                    \u0027failover: subtype\u003d%(subtype)s, state\u003d%(state)s.\u0027) % {"},{"line_number":3509,"context_line":"                        \u0027svm\u0027: dest_vserver, \u0027subtype\u0027: promoted_subtype,"}],"source_content_type":"text/x-python","patch_set":18,"id":"201224b4_2740586a","line":3506,"in_reply_to":"40c4818b_78649833","updated":"2026-07-27 09:22:56.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3511,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":3512,"context_line":""},{"line_number":3513,"context_line":"        old_active_subtype \u003d (old_active_info or {}).get(\u0027subtype\u0027)"},{"line_number":3514,"context_line":"        if old_active_subtype !\u003d \u0027dp_destination\u0027:"},{"line_number":3515,"context_line":"            LOG.warning(\u0027Demoted SVM %(svm)s subtype is %(subtype)s after \u0027"},{"line_number":3516,"context_line":"                        \u0027failover; expected dp_destination. ONTAP may \u0027"},{"line_number":3517,"context_line":"                        \u0027still be converging.\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"4c0b032c_8db0ef37","line":3514,"updated":"2026-07-23 11:26:58.000000000","message":"update to const","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"aed2c9af63009a72a0263ca2c72c130294fc1964","unresolved":false,"context_lines":[{"line_number":3511,"context_line":"            raise exception.NetAppException(message\u003dmsg)"},{"line_number":3512,"context_line":""},{"line_number":3513,"context_line":"        old_active_subtype \u003d (old_active_info or {}).get(\u0027subtype\u0027)"},{"line_number":3514,"context_line":"        if old_active_subtype !\u003d \u0027dp_destination\u0027:"},{"line_number":3515,"context_line":"            LOG.warning(\u0027Demoted SVM %(svm)s subtype is %(subtype)s after \u0027"},{"line_number":3516,"context_line":"                        \u0027failover; expected dp_destination. ONTAP may \u0027"},{"line_number":3517,"context_line":"                        \u0027still be converging.\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"814085db_012716f2","line":3514,"in_reply_to":"4c0b032c_8db0ef37","updated":"2026-07-27 09:22:56.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"a044a75a56e8b800a56b399e1ebfda8f7a7319f4","unresolved":true,"context_lines":[{"line_number":3548,"context_line":"            updated \u003d {\u0027replica_id\u0027: replica[\u0027id\u0027]}"},{"line_number":3549,"context_line":"            if replica[\u0027id\u0027] \u003d\u003d share_server_replica[\u0027id\u0027]:"},{"line_number":3550,"context_line":"                updated[\u0027replica_state\u0027] \u003d constants.REPLICA_STATE_ACTIVE"},{"line_number":3551,"context_line":"                updated[\u0027status\u0027] \u003d constants.STATUS_AVAILABLE"},{"line_number":3552,"context_line":"            else:"},{"line_number":3553,"context_line":"                updated[\u0027replica_state\u0027] \u003d constants.REPLICA_STATE_OUT_OF_SYNC"},{"line_number":3554,"context_line":"                updated[\u0027status\u0027] \u003d constants.STATUS_AVAILABLE"}],"source_content_type":"text/x-python","patch_set":18,"id":"cc436342_5d07b4e7","line":3551,"updated":"2026-07-23 11:26:58.000000000","message":"Check with Manideep if we can remove status","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"7a19f60fc3b9b7c6cd903f9be24ce3ff2a536b24","unresolved":false,"context_lines":[{"line_number":3548,"context_line":"            updated \u003d {\u0027replica_id\u0027: replica[\u0027id\u0027]}"},{"line_number":3549,"context_line":"            if replica[\u0027id\u0027] \u003d\u003d share_server_replica[\u0027id\u0027]:"},{"line_number":3550,"context_line":"                updated[\u0027replica_state\u0027] \u003d constants.REPLICA_STATE_ACTIVE"},{"line_number":3551,"context_line":"                updated[\u0027status\u0027] \u003d constants.STATUS_AVAILABLE"},{"line_number":3552,"context_line":"            else:"},{"line_number":3553,"context_line":"                updated[\u0027replica_state\u0027] \u003d constants.REPLICA_STATE_OUT_OF_SYNC"},{"line_number":3554,"context_line":"                updated[\u0027status\u0027] \u003d constants.STATUS_AVAILABLE"}],"source_content_type":"text/x-python","patch_set":18,"id":"f00cda8b_90aba21b","line":3551,"in_reply_to":"cc436342_5d07b4e7","updated":"2026-08-06 08:17:27.000000000","message":"Done","commit_id":"e0cffdaf8acd81b0ce5151b457eae7056d49e091"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":1034,"context_line":"        :param context: request context."},{"line_number":1035,"context_line":"        :param new_share_server_replica: the replica to create; carries the"},{"line_number":1036,"context_line":"            new share_server (with id/host) and metadata (``--property``"},{"line_number":1037,"context_line":"            bag). ``replication_type`` and ``replication_policy`` are read"},{"line_number":1038,"context_line":"            from metadata and default to ``sync`` / ``AutomatedFailOver``."},{"line_number":1039,"context_line":"        :param share_server_replica_list: existing replicas; the active one"},{"line_number":1040,"context_line":"            provides the source share server."}],"source_content_type":"text/x-python","patch_set":22,"id":"a723807b_995824ba","line":1037,"range":{"start_line":1037,"start_character":12,"end_line":1037,"end_character":15},"updated":"2026-08-03 11:03:01.000000000","message":"bag?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"8fbbbf3a4d7a1571be4bc01cf5b484c9059f4bea","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"        :param context: request context."},{"line_number":1035,"context_line":"        :param new_share_server_replica: the replica to create; carries the"},{"line_number":1036,"context_line":"            new share_server (with id/host) and metadata (``--property``"},{"line_number":1037,"context_line":"            bag). ``replication_type`` and ``replication_policy`` are read"},{"line_number":1038,"context_line":"            from metadata and default to ``sync`` / ``AutomatedFailOver``."},{"line_number":1039,"context_line":"        :param share_server_replica_list: existing replicas; the active one"},{"line_number":1040,"context_line":"            provides the source share server."}],"source_content_type":"text/x-python","patch_set":22,"id":"dab2f5b2_77535816","line":1037,"range":{"start_line":1037,"start_character":12,"end_line":1037,"end_character":15},"in_reply_to":"a723807b_995824ba","updated":"2026-08-05 10:54:53.000000000","message":"Done","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":3062,"context_line":"        except exception.VserverNotFound:"},{"line_number":3063,"context_line":"            dest_vserver \u003d (share_server_replica.get(\u0027backend_details\u0027) or"},{"line_number":3064,"context_line":"                            {}).get(\u0027vserver_name\u0027, \u0027\u003cunknown\u003e\u0027)"},{"line_number":3065,"context_line":"            LOG.info(\u0027Destination SVM %(dest)s not found on backend \u0027"},{"line_number":3066,"context_line":"                     \u0027%(backend)s; share server replica already deleted.\u0027,"},{"line_number":3067,"context_line":"                     {\u0027dest\u0027: dest_vserver, \u0027backend\u0027: dest_backend_name})"},{"line_number":3068,"context_line":"            return"},{"line_number":3069,"context_line":""},{"line_number":3070,"context_line":"        active_replica \u003d self.find_active_replica(share_server_replica_list)"}],"source_content_type":"text/x-python","patch_set":22,"id":"04b106d0_875670b1","line":3067,"range":{"start_line":3065,"start_character":12,"end_line":3067,"end_character":74},"updated":"2026-08-03 11:03:01.000000000","message":"should be LOG.error?","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"8fbbbf3a4d7a1571be4bc01cf5b484c9059f4bea","unresolved":false,"context_lines":[{"line_number":3062,"context_line":"        except exception.VserverNotFound:"},{"line_number":3063,"context_line":"            dest_vserver \u003d (share_server_replica.get(\u0027backend_details\u0027) or"},{"line_number":3064,"context_line":"                            {}).get(\u0027vserver_name\u0027, \u0027\u003cunknown\u003e\u0027)"},{"line_number":3065,"context_line":"            LOG.info(\u0027Destination SVM %(dest)s not found on backend \u0027"},{"line_number":3066,"context_line":"                     \u0027%(backend)s; share server replica already deleted.\u0027,"},{"line_number":3067,"context_line":"                     {\u0027dest\u0027: dest_vserver, \u0027backend\u0027: dest_backend_name})"},{"line_number":3068,"context_line":"            return"},{"line_number":3069,"context_line":""},{"line_number":3070,"context_line":"        active_replica \u003d self.find_active_replica(share_server_replica_list)"}],"source_content_type":"text/x-python","patch_set":22,"id":"da028075_1f94e14e","line":3067,"range":{"start_line":3065,"start_character":12,"end_line":3067,"end_character":74},"in_reply_to":"04b106d0_875670b1","updated":"2026-08-05 10:54:53.000000000","message":"As mentioned in the message, if dest vserver is not found it is assumed to be already deleted.\nThis is delete_share_server_replica_workflow which follows idempotency.\nInfo make sense.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e2c261312010d2458e56ad1069232dd0748335b9","unresolved":true,"context_lines":[{"line_number":3094,"context_line":"        LOG.debug(\u0027Releasing source-side SVM SnapMirror metadata for \u0027"},{"line_number":3095,"context_line":"                  \u0027vserver %(src)s.\u0027, {\u0027src\u0027: src_vserver})"},{"line_number":3096,"context_line":"        try:"},{"line_number":3097,"context_line":"            dm_session.release_svm_snapmirror_relationship("},{"line_number":3098,"context_line":"                share_server, dest_share_server)"},{"line_number":3099,"context_line":"        except Exception:"},{"line_number":3100,"context_line":"            LOG.exception(\u0027Failed to release source-side SVM SnapMirror \u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"b7abf261_96fcd7f4","line":3097,"range":{"start_line":3097,"start_character":23,"end_line":3097,"end_character":58},"updated":"2026-08-03 11:03:01.000000000","message":"We do not need to release snapmirror if the delete on line 3085 is successful. REST will take care of deleting and releasing.","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"1e25328f38b59e64e6d90242471f4037bdf2f985","unresolved":false,"context_lines":[{"line_number":3094,"context_line":"        LOG.debug(\u0027Releasing source-side SVM SnapMirror metadata for \u0027"},{"line_number":3095,"context_line":"                  \u0027vserver %(src)s.\u0027, {\u0027src\u0027: src_vserver})"},{"line_number":3096,"context_line":"        try:"},{"line_number":3097,"context_line":"            dm_session.release_svm_snapmirror_relationship("},{"line_number":3098,"context_line":"                share_server, dest_share_server)"},{"line_number":3099,"context_line":"        except Exception:"},{"line_number":3100,"context_line":"            LOG.exception(\u0027Failed to release source-side SVM SnapMirror \u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"2296f473_6ef5b82e","line":3097,"range":{"start_line":3097,"start_character":23,"end_line":3097,"end_character":58},"in_reply_to":"b7abf261_96fcd7f4","updated":"2026-08-05 14:11:17.000000000","message":"Done","commit_id":"ff60b1c009700c32cfd06a0fd7220bb833cf8ad0"}],"manila/share/drivers/netapp/utils.py":[{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"49dbefb5755f37edb3b9d43af7c2bfb5922c17b6","unresolved":true,"context_lines":[{"line_number":83,"context_line":"SMAS_PROTECTION_UNPROTECTED \u003d \u0027unprotected\u0027"},{"line_number":84,"context_line":"SMAS_MIN_ONTAP_VERSION \u003d (9, 19, 1)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"SMAS_RELATIONSHIP_STATES_BLOCKING_DELETE \u003d (\u0027out_of_sync\u0027, \u0027synchronizing\u0027)"},{"line_number":87,"context_line":"SMAS_TRANSFER_STATES_BLOCKING_DELETE \u003d (\u0027transferring\u0027,)"},{"line_number":88,"context_line":"SMAS_DELETE_POLL_INTERVAL \u003d 5"},{"line_number":89,"context_line":"SMAS_DELETE_POLL_TIMEOUT \u003d 600"}],"source_content_type":"text/x-python","patch_set":14,"id":"a72d748f_ca5be0c7","line":86,"updated":"2026-07-10 05:12:08.000000000","message":"@sanketh.shetty@netapp.com We should allow the relationship to delete in out_of_sync state.\n\n\n```suggestion\nSMAS_RELATIONSHIP_STATES_BLOCKING_DELETE \u003d (SM_SYNCHRONIZING_STATE)\n```","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":83,"context_line":"SMAS_PROTECTION_UNPROTECTED \u003d \u0027unprotected\u0027"},{"line_number":84,"context_line":"SMAS_MIN_ONTAP_VERSION \u003d (9, 19, 1)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"SMAS_RELATIONSHIP_STATES_BLOCKING_DELETE \u003d (\u0027out_of_sync\u0027, \u0027synchronizing\u0027)"},{"line_number":87,"context_line":"SMAS_TRANSFER_STATES_BLOCKING_DELETE \u003d (\u0027transferring\u0027,)"},{"line_number":88,"context_line":"SMAS_DELETE_POLL_INTERVAL \u003d 5"},{"line_number":89,"context_line":"SMAS_DELETE_POLL_TIMEOUT \u003d 600"}],"source_content_type":"text/x-python","patch_set":14,"id":"862fc04f_15d0e8ba","line":86,"in_reply_to":"a72d748f_ca5be0c7","updated":"2026-07-19 13:15:30.000000000","message":"Done","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"49dbefb5755f37edb3b9d43af7c2bfb5922c17b6","unresolved":true,"context_lines":[{"line_number":84,"context_line":"SMAS_MIN_ONTAP_VERSION \u003d (9, 19, 1)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"SMAS_RELATIONSHIP_STATES_BLOCKING_DELETE \u003d (\u0027out_of_sync\u0027, \u0027synchronizing\u0027)"},{"line_number":87,"context_line":"SMAS_TRANSFER_STATES_BLOCKING_DELETE \u003d (\u0027transferring\u0027,)"},{"line_number":88,"context_line":"SMAS_DELETE_POLL_INTERVAL \u003d 5"},{"line_number":89,"context_line":"SMAS_DELETE_POLL_TIMEOUT \u003d 600"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"8331e28a_bfce62a6","line":87,"updated":"2026-07-10 05:12:08.000000000","message":"@sanketh.shetty@netapp.com Lets use the constant for values to make it single source.\n\n```suggestion\nSMAS_TRANSFER_STATES_BLOCKING_DELETE \u003d (SM_TRANSFERRING_STATE)\n```","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"},{"author":{"_account_id":38623,"name":"Sanketh Shetty","display_name":"Sanketh Shetty","email":"sanketh.shetty@netapp.com","username":"sanketh-netapp","status":"NetApp"},"change_message_id":"87a76a4401891903c89917b9917c7de609deed54","unresolved":false,"context_lines":[{"line_number":84,"context_line":"SMAS_MIN_ONTAP_VERSION \u003d (9, 19, 1)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"SMAS_RELATIONSHIP_STATES_BLOCKING_DELETE \u003d (\u0027out_of_sync\u0027, \u0027synchronizing\u0027)"},{"line_number":87,"context_line":"SMAS_TRANSFER_STATES_BLOCKING_DELETE \u003d (\u0027transferring\u0027,)"},{"line_number":88,"context_line":"SMAS_DELETE_POLL_INTERVAL \u003d 5"},{"line_number":89,"context_line":"SMAS_DELETE_POLL_TIMEOUT \u003d 600"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"371f8ed5_4e3b1929","line":87,"in_reply_to":"8331e28a_bfce62a6","updated":"2026-07-19 13:15:30.000000000","message":"Done","commit_id":"2365d20d0ca042a48779c2fa32ff02782c789302"}]}
