)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e8b45ca57ef882fe617434502e22a8bf3093bf39","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"fix: netapp file copy between volumes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. This patch strips leading slashed from the volume name."},{"line_number":10,"context_line":"   Otherwise the _get_volume_by_args call would fail because the Netapp API"},{"line_number":11,"context_line":"   only allows volumes with letter or underscores as first character"},{"line_number":12,"context_line":"   (NetApp API 917887)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"56c6b3ee_734ecdba","line":9,"updated":"2025-11-27 07:33:51.000000000","message":"leading slash (typo)","commit_id":"a1021a904d30fa12bf13c2ea0dc989ade1d8728b"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"5d31060fe115837286979c469ce6e96310f3a8d2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"fix: netapp file copy between volumes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. This patch strips leading slashed from the volume name."},{"line_number":10,"context_line":"   Otherwise the _get_volume_by_args call would fail because the Netapp API"},{"line_number":11,"context_line":"   only allows volumes with letter or underscores as first character"},{"line_number":12,"context_line":"   (NetApp API 917887)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"f04211c1_09b8c8d0","line":9,"in_reply_to":"56c6b3ee_734ecdba","updated":"2025-12-16 14:31:24.000000000","message":"adjusted","commit_id":"a1021a904d30fa12bf13c2ea0dc989ade1d8728b"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"3498e56e14e0d0306f72fb76f8ffa0e4e1106bc2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6644922f_56186d87","updated":"2025-12-16 12:55:29.000000000","message":"Please take a look at the comments.","commit_id":"a1021a904d30fa12bf13c2ea0dc989ade1d8728b"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e8b45ca57ef882fe617434502e22a8bf3093bf39","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6363ae5d_10229bc2","updated":"2025-11-27 07:33:51.000000000","message":"Run-NetApp CI","commit_id":"a1021a904d30fa12bf13c2ea0dc989ade1d8728b"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"5d31060fe115837286979c469ce6e96310f3a8d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4d2a7226_9edd31ea","in_reply_to":"6644922f_56186d87","updated":"2025-12-16 14:31:24.000000000","message":"ack - fixed","commit_id":"a1021a904d30fa12bf13c2ea0dc989ade1d8728b"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"155b5b7d9960a80ab5a90cfaa8d6e767e8f0d212","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"57212d3e_dbd1b968","updated":"2025-12-18 16:43:15.000000000","message":"LGTM","commit_id":"af1974bb45ba4af33ceb1469362a92ee15019bae"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"670da51aeeb542e41dfb1b91f126197f8f893f63","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d0fe3efc_cfc3f8ea","updated":"2026-01-28 12:26:34.000000000","message":"@anoop.shukla@netapp.com\n@gawasthi2010@gmail.com\n@rosmaita.fossdev@gmail.com\n\nActually this approach is also not working because we can\u0027t use the returned job uuid to track the copy job. The copy job directly returns success. Follow up operations like registering an copied image in the image-cache will fail due to file busy errors from the netapp api.\n\nAfer opening a netapp case(#2010582439), I learned from the suppport that:\n- The job UUID returned by the POST /api/storage/file/copy call refers to the REST request/job context, not the actual file‑copy operation. This is why that job often reports state\u003d\"success\". Immediately it reflects the acceptance of the request, not the progression of the underlying copy.\n- We should use the private cli wrapper api(\"/api/private/cli/file/copy?fields\u003ddestination-file-path\") endpoint to get the actual copy status according to the netapp ontap folks.\n\nGiven that the driver copy is currently broken without the netapp_copyoffload_tool and this tool is even considered deprecated, I\u0027m unsure how to proceed. Should we either:\n1. Implement the status check via the private wrapper CLI\n2. Remove the copy support completely in the ZAPI/REST driver versions in the volume create path\n\nTo be fair I\u0027m considering more the 2nd option due to performance benchmarks on our side:\nAn 100MB image for example:\n- regular download from glance: below 10sec (~especially with my multipart download blueprint)\n- netapp copy via api and correct status check: between 1-3 minutes until the copy is done(seems like size doesn\u0027t matter much)","commit_id":"824e1a85ef0d7c059f80205f8bb5c932dcd8f2b2"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"00d211c1cf78e26b41508de8a51ec0b17af84086","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"bc9cdd97_f70d9ba5","updated":"2026-04-10 08:19:08.000000000","message":"LGTM","commit_id":"824e1a85ef0d7c059f80205f8bb5c932dcd8f2b2"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"3c1b3ae4713b72f16cd04e305130424267d6d3dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0fe4116a_1441761c","updated":"2026-01-08 17:16:57.000000000","message":"recheck - Ci failure","commit_id":"824e1a85ef0d7c059f80205f8bb5c932dcd8f2b2"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"30fab2cec898f6d40f11aa886dd3703b3aefeb8c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"628c807f_18ed9d15","updated":"2026-01-20 13:41:12.000000000","message":"recheck - ci timeout","commit_id":"824e1a85ef0d7c059f80205f8bb5c932dcd8f2b2"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"33a6ca6cc7f3feb9567973765ae60499e73ef734","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a936c89d_f3972996","in_reply_to":"8715cbc9_00ef9891","updated":"2026-04-07 12:22:05.000000000","message":"Sure if it\u0027s the official recommandation to use that private api, I can add this endpoint so that it works for other users.\nFor my current setup I removed it due to the performance reasons mentioned above.","commit_id":"824e1a85ef0d7c059f80205f8bb5c932dcd8f2b2"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"22968abf60e2cf8de0b2cc98f22a2722b7fad5c3","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a67d8451_9c1bd811","in_reply_to":"91288701_a24aab2b","updated":"2026-04-27 10:55:57.000000000","message":"@anoop.shukla@netapp.com I implemented the private cli workaround and tested it in our env:\n1. Start copying file img-cache-7fd2d673-fc76-4385-b600-d38df2e65d59 from XX ...\n2. Waiting for file copy job 4a41efb9-4227-11f1-b34f-d039ea57a963 to complete. Current status is: allocation_map.\n3. Waiting for file copy job 4a41efb9-4227-11f1-b34f-d039ea57a963 to complete. Current status is: data.\n4. Waiting for file copy job 4a41efb9-4227-11f1-b34f-d039ea57a963 to complete. Current status is: complete.\n\nVolume created successfully","commit_id":"824e1a85ef0d7c059f80205f8bb5c932dcd8f2b2"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e6c2592a93f37de44c142e51e9120183d5f3f318","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a6cb3157_3bb7fc03","in_reply_to":"a67d8451_9c1bd811","updated":"2026-05-04 18:26:59.000000000","message":"Awesome. Thanks for the testing @max.lamprecht@digits.schwarz. BTW, just for the knowledge - ONTAP ZAPI to REST documentation does not have an alternative of the get iter - https://docs.netapp.com/us-en/ontap-restmap/file.html#file-copy-get-iter","commit_id":"824e1a85ef0d7c059f80205f8bb5c932dcd8f2b2"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"fdaaee62e5a304e1854b86b03044d2225f3b88d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4d164a1b_f9fbc74b","in_reply_to":"a6cb3157_3bb7fc03","updated":"2026-05-05 14:34:58.000000000","message":"Acknowledged","commit_id":"824e1a85ef0d7c059f80205f8bb5c932dcd8f2b2"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"00d211c1cf78e26b41508de8a51ec0b17af84086","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"91288701_a24aab2b","in_reply_to":"a936c89d_f3972996","updated":"2026-04-10 08:19:08.000000000","message":"I am aware of many gaps that are there wrt file APIs, this would be one of them. For now, we can work it around via the private cli API as we do not have alternative. In future if this gets addressed by platform team, we can revisit the impl to use the public API. For now I do not see an adverse implication of using the private cli API.","commit_id":"824e1a85ef0d7c059f80205f8bb5c932dcd8f2b2"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"ce14810ac04c8c558053ebb7690efaebc550f46e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8715cbc9_00ef9891","in_reply_to":"d0fe3efc_cfc3f8ea","updated":"2026-04-02 16:37:01.000000000","message":"Hi Max. Thanks for the message. Have you tested the private CLI API: /api/private/cli/file/copy?fields\u003ddestination-file-path to be working for this use case? If so, can we not use that API and internally we can track a request to the platform team to provide a way to track the copy status. Which will take some time, but eventually we should be able to move to a public REST API instead.","commit_id":"824e1a85ef0d7c059f80205f8bb5c932dcd8f2b2"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e6c2592a93f37de44c142e51e9120183d5f3f318","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"db3dcfb6_5ce6ad33","updated":"2026-05-04 18:26:59.000000000","message":"Some additional comments. I think the code looks good overall. Will wait for resolving of the open comments for +1.","commit_id":"bc1a084db7073b3bbcd29c3b9705b94c88d40fd9"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"7e1c9bdfaeda3111e14cc9631261db3aa797063f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"dc9b9266_ea9d6eeb","updated":"2026-04-28 19:01:58.000000000","message":"recheck - cinder-tempest-plugin-lvm-lio-barbican Connection to the 172.24.5.121 via SSH timed out kernel panic","commit_id":"bc1a084db7073b3bbcd29c3b9705b94c88d40fd9"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"2a70851f2406e7775ed0b75c595aa5ba0df43519","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e83883dd_2787a2de","updated":"2026-04-27 15:16:42.000000000","message":"recheck - cinder-tempest-plugin-lvm-lio-barbican Connection to the 172.24.5.143 via SSH timed out","commit_id":"bc1a084db7073b3bbcd29c3b9705b94c88d40fd9"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"d5c213a7fa9a568d307bf40124b0d126eff3b60e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"00fbe8d0_f85dfcd4","updated":"2026-04-30 18:15:30.000000000","message":"recheck - devstack-plugin-nfs-tempest-full - TIMED_OUT","commit_id":"bc1a084db7073b3bbcd29c3b9705b94c88d40fd9"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"be5e352b61556e19ca328f13c77c1581b80b324d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"6c8a3b7c_05bd04d6","updated":"2026-04-30 08:36:19.000000000","message":"recheck - devstack-plugin-nfs-tempest-full - TIMED_OUT","commit_id":"bc1a084db7073b3bbcd29c3b9705b94c88d40fd9"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"a174a15476a4730c8e07eacefe5b2cadbfe86f70","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"efe4405b_d8c7dc54","updated":"2026-04-28 13:23:51.000000000","message":"recheck - devstack-plugin-nfs-tempest-full timeout","commit_id":"bc1a084db7073b3bbcd29c3b9705b94c88d40fd9"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"871a9ef373e51b0bbb1416936d34d44db95d8065","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3290f3d6_16836a57","updated":"2026-04-29 15:19:46.000000000","message":"recheck - openstack-tox-py313 cinder.tests.unit.backup.drivers.test_backup_ceph.BackupCephTestCase - fixtures._fixtures.timeout.TimeoutException","commit_id":"bc1a084db7073b3bbcd29c3b9705b94c88d40fd9"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode_rest.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":"e6c2592a93f37de44c142e51e9120183d5f3f318","unresolved":true,"context_lines":[{"line_number":2585,"context_line":""},{"line_number":2586,"context_line":"        if not result or not result.get(\u0027records\u0027) or \\"},{"line_number":2587,"context_line":"                len(result.get(\u0027records\u0027)) \u003d\u003d 0:"},{"line_number":2588,"context_line":"            return None"},{"line_number":2589,"context_line":""},{"line_number":2590,"context_line":"        records \u003d result.get(\u0027records\u0027)"},{"line_number":2591,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3cff104b_8ccb837b","line":2588,"updated":"2026-05-04 18:26:59.000000000","message":"We should log this state before returning.","commit_id":"bc1a084db7073b3bbcd29c3b9705b94c88d40fd9"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"fdaaee62e5a304e1854b86b03044d2225f3b88d3","unresolved":true,"context_lines":[{"line_number":2585,"context_line":""},{"line_number":2586,"context_line":"        if not result or not result.get(\u0027records\u0027) or \\"},{"line_number":2587,"context_line":"                len(result.get(\u0027records\u0027)) \u003d\u003d 0:"},{"line_number":2588,"context_line":"            return None"},{"line_number":2589,"context_line":""},{"line_number":2590,"context_line":"        records \u003d result.get(\u0027records\u0027)"},{"line_number":2591,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"aab51141_e46baf3f","line":2588,"in_reply_to":"3cff104b_8ccb837b","updated":"2026-05-05 14:34:58.000000000","message":"Hey @anoop.shukla@netapp.com,\n\nI\u0027m not sure if we need sonmething here. In the calling function, there is already an error log. -\u003e https://github.com/openstack/cinder/blob/849ddb6cef2b06084b7b116cb2ae5ce7da610e1b/cinder/volume/drivers/netapp/dataontap/nfs_cmode.py#L1189-L1192\n\nThis get\u0027s also used by the zapi implementation","commit_id":"bc1a084db7073b3bbcd29c3b9705b94c88d40fd9"}]}
