)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"f798f28d1b3540c8529331feba2ad6a4580c0aaf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0223a5b8_d25f832b","updated":"2026-07-16 16:21:44.000000000","message":"Hi Sailaja, Thank you for patch. Release notes says \"9.20.1 or later\" and there is not version protection in current code. Hope earlier versions should not throw invalid attribute error for transport. If yes... can you add version protection.","commit_id":"ee2641616a2f7bbb239b257005992d9a23738351"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"a22e83c840ea61df30056abb322fddd692c8435c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0582ab13_03e08181","updated":"2026-07-14 18:54:58.000000000","message":"run-NetApp CI","commit_id":"ee2641616a2f7bbb239b257005992d9a23738351"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"c49c81ef3131b1d34df4d6f49de4c2e991a6ff8f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6170c26a_27853970","in_reply_to":"0223a5b8_d25f832b","updated":"2026-07-22 15:38:47.000000000","message":"Fixed.","commit_id":"ee2641616a2f7bbb239b257005992d9a23738351"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"80f3fc6a7bd637f7042602aac9b45a9ed41d7a60","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c47b61e9_74cb7de6","updated":"2026-07-29 07:01:56.000000000","message":"run-NetApp CI","commit_id":"61e76e017f38b94054d2ad6695272a9927df755c"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"58faf00f0a24b66a4c993e7f355bf1d301cb8886","unresolved":true,"context_lines":[{"line_number":1997,"context_line":"    def _get_snapmirrors(self, source_vserver\u003dNone, source_volume\u003dNone,"},{"line_number":1998,"context_line":"                         destination_vserver\u003dNone, destination_volume\u003dNone,"},{"line_number":1999,"context_line":"                         transport\u003dNone):"},{"line_number":2000,"context_line":""},{"line_number":2001,"context_line":"        fields \u003d [\u0027state\u0027, \u0027source.svm.name\u0027, \u0027source.path\u0027,"},{"line_number":2002,"context_line":"                  \u0027destination.svm.name\u0027, \u0027destination.path\u0027, \u0027transfer.state\u0027,"},{"line_number":2003,"context_line":"                  \u0027transfer.end_time\u0027, \u0027lag_time\u0027, \u0027healthy\u0027, \u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"f15a0cf1_837ae6eb","line":2000,"updated":"2026-07-28 12:25:21.000000000","message":"The `transport` parameter added here is dead code. The public `get_snapmirrors()` method at line 2068 does not expose or forward this parameter - no caller in the codebase passes `transport` through the public API.\n\nEither remove this parameter (since the transport is set at SnapMirror creation time and doesn\u0027t need query-time filtering), or update `get_snapmirrors()` to also accept and forward it.","commit_id":"686d82c344e06f266a315e0729e7f80e065ab3fd"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"ff2f1fcd5234b3eb9237a8b2c7ee694c23d4b4f2","unresolved":false,"context_lines":[{"line_number":1997,"context_line":"    def _get_snapmirrors(self, source_vserver\u003dNone, source_volume\u003dNone,"},{"line_number":1998,"context_line":"                         destination_vserver\u003dNone, destination_volume\u003dNone,"},{"line_number":1999,"context_line":"                         transport\u003dNone):"},{"line_number":2000,"context_line":""},{"line_number":2001,"context_line":"        fields \u003d [\u0027state\u0027, \u0027source.svm.name\u0027, \u0027source.path\u0027,"},{"line_number":2002,"context_line":"                  \u0027destination.svm.name\u0027, \u0027destination.path\u0027, \u0027transfer.state\u0027,"},{"line_number":2003,"context_line":"                  \u0027transfer.end_time\u0027, \u0027lag_time\u0027, \u0027healthy\u0027, \u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"e90de36e_a61c8839","line":2000,"in_reply_to":"f15a0cf1_837ae6eb","updated":"2026-07-29 07:01:26.000000000","message":"This comment is fixed.","commit_id":"686d82c344e06f266a315e0729e7f80e065ab3fd"}],"cinder/volume/drivers/netapp/dataontap/utils/data_motion.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"58faf00f0a24b66a4c993e7f355bf1d301cb8886","unresolved":true,"context_lines":[{"line_number":146,"context_line":"        replication_devices \u003d config.safe_get(\u0027replication_device\u0027)"},{"line_number":147,"context_line":"        if replication_devices:"},{"line_number":148,"context_line":"            for replication_device in replication_devices:"},{"line_number":149,"context_line":"                transport \u003d replication_device.get(\u0027transport\u0027, \u0027ip\u0027)"},{"line_number":150,"context_line":"                transports.add(transport)"},{"line_number":151,"context_line":"        return list(transports) if transports else [\u0027ip\u0027]"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"784a11f2_690159f0","line":149,"updated":"2026-07-28 12:25:21.000000000","message":"This method reads transport values from config without any validation, but `get_replication_backend_transport` (line 112) validates that transport is \u0027ip\u0027 or \u0027fc\u0027 and blocks FC on ASA r2.\n\nAn invalid config value like `transport:rdma` would be silently reported in pool capabilities via `replication_transport`, potentially misleading the scheduler and extra-specs matching. Consider reusing the validation from `get_replication_backend_transport` or calling it internally.","commit_id":"686d82c344e06f266a315e0729e7f80e065ab3fd"},{"author":{"_account_id":38614,"name":"Sailaja Mada","display_name":"Sailaja Mada","email":"sailajam@netapp.com","username":"sailajam"},"change_message_id":"ff2f1fcd5234b3eb9237a8b2c7ee694c23d4b4f2","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        replication_devices \u003d config.safe_get(\u0027replication_device\u0027)"},{"line_number":147,"context_line":"        if replication_devices:"},{"line_number":148,"context_line":"            for replication_device in replication_devices:"},{"line_number":149,"context_line":"                transport \u003d replication_device.get(\u0027transport\u0027, \u0027ip\u0027)"},{"line_number":150,"context_line":"                transports.add(transport)"},{"line_number":151,"context_line":"        return list(transports) if transports else [\u0027ip\u0027]"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"cf366b5c_5652432b","line":149,"in_reply_to":"784a11f2_690159f0","updated":"2026-07-29 07:01:26.000000000","message":"Comment is fixed now.","commit_id":"686d82c344e06f266a315e0729e7f80e065ab3fd"}]}
