)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"ecb0b978a2c4b29ffde171f10c22e5bfa66e5235","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"eaaa8bd7_73608396","updated":"2025-06-05 06:19:10.000000000","message":"Removed the comment","commit_id":"e5dfc51d187a025889bdef7183005fa74bc097dd"},{"author":{"_account_id":36897,"name":"Girish Chilukuri","display_name":"Girish Chilukuri","email":"Girish.Chilukuri1@partner.ibm.com","username":"girishchilukuri1"},"change_message_id":"9d9f5f28f8c39a16c3b814c9b435891bd1451b45","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"531c5d4e_381dfc0e","updated":"2025-06-11 06:59:28.000000000","message":"comments inline","commit_id":"93e423ab88d2bc660dcd356c36ab14f1f3e296ef"},{"author":{"_account_id":36897,"name":"Girish Chilukuri","display_name":"Girish Chilukuri","email":"Girish.Chilukuri1@partner.ibm.com","username":"girishchilukuri1"},"change_message_id":"ef1a99ccebec5cdac3e9ef14cdc7f8ae247c7070","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"3df7d8ed_9e309dfc","updated":"2025-06-30 05:20:14.000000000","message":"Please find comments inline","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"1947040397375fabe676bdbf350ba5893c8535a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"7b97e7b1_a2937467","updated":"2025-06-27 06:50:55.000000000","message":"recheck","commit_id":"b46fe2a8abc39629c9f2edae95f9615799efb68b"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"4ccc8d7832e84c3fff6a1cbb3110a11420242647","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"1b8b1a6f_37deca07","updated":"2025-07-09 10:00:03.000000000","message":"recheck","commit_id":"7961428ad3b6796bd173fca2d7a26b6a4a279a37"},{"author":{"_account_id":36439,"name":"Vivek Pandey","email":"vivek.pandey11@ibm.com","username":"vivek.pandey11"},"change_message_id":"b1097b0ac54df474cfd34850b16c56b14b88b0de","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":29,"id":"88e6ad44_45d302e5","updated":"2025-07-16 11:13:55.000000000","message":"run-IBM-CI","commit_id":"7961428ad3b6796bd173fca2d7a26b6a4a279a37"},{"author":{"_account_id":36439,"name":"Vivek Pandey","email":"vivek.pandey11@ibm.com","username":"vivek.pandey11"},"change_message_id":"b8d480ee34efe8b39265c387eb24769659cd2584","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"a8829087_5aa80ab3","updated":"2025-07-16 11:11:07.000000000","message":"run-IBM-CI","commit_id":"7961428ad3b6796bd173fca2d7a26b6a4a279a37"},{"author":{"_account_id":36439,"name":"Vivek Pandey","email":"vivek.pandey11@ibm.com","username":"vivek.pandey11"},"tag":"autogenerated:jenkins-gerrit-trigger","change_message_id":"8446d162cdc41a33a3ebefdc255a2ff46361368b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"13122e2e_df9f579b","in_reply_to":"1b8b1a6f_37deca07","updated":"2025-07-16 10:13:06.000000000","message":"run-IBM-CI","commit_id":"7961428ad3b6796bd173fca2d7a26b6a4a279a37"},{"author":{"_account_id":36439,"name":"Vivek Pandey","email":"vivek.pandey11@ibm.com","username":"vivek.pandey11"},"change_message_id":"f36184a8af9e144f6912ca72a21f8647fd5d015d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"82f77376_7d7c18a4","in_reply_to":"88e6ad44_45d302e5","updated":"2025-07-16 11:14:09.000000000","message":"Done","commit_id":"7961428ad3b6796bd173fca2d7a26b6a4a279a37"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"9588010e22cc4c777d23d9cae53186f502c355b6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"39861305_a5272335","updated":"2025-07-28 11:32:16.000000000","message":"run-IBM-C","commit_id":"ab7ee058b765d782cc1b75e9f2f29c705ab94c84"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"b925167a142bf7c46fa1c446fa45bc9900b65cd8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"7241e502_8e475541","updated":"2025-07-24 11:56:29.000000000","message":"run-IBM-CI","commit_id":"ab7ee058b765d782cc1b75e9f2f29c705ab94c84"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"a7496be347973ba255bf4d24e8f11d04a9bdcd68","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"9161c434_c45ece51","updated":"2025-07-29 05:54:44.000000000","message":"run-IBM-CI","commit_id":"ab7ee058b765d782cc1b75e9f2f29c705ab94c84"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"ae4e6afae3440d142f2cce075b86dec2a773f9c0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"fc1e4fe1_19e1f262","updated":"2025-07-22 12:52:02.000000000","message":"run-IBM-CI","commit_id":"ab7ee058b765d782cc1b75e9f2f29c705ab94c84"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"1bf2602d542dd862ce66cd5005d4ae8e82548423","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"5f8085ae_affd5254","updated":"2025-08-18 14:53:07.000000000","message":"LGTM","commit_id":"4d0eac649268844ad7f74527093060cc519e2429"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"fc7c1583b11c39e5f4e45bb6be4eccfd58ed9bd0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"e795a7f3_9ea180bd","updated":"2025-08-11 05:39:48.000000000","message":"run-IBM-CI","commit_id":"4d0eac649268844ad7f74527093060cc519e2429"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"34203f69e6033bb24c05b20d77aefc389ff0b3d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"34cbe61a_722ca406","updated":"2025-09-04 17:56:23.000000000","message":"recheck","commit_id":"8f9290516358ae4fcedafabf74d8b3bcef523c92"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"4a2bf2a4bde1708e5a40b0204a22c7c52ad2340b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":46,"id":"7a0b2caf_1b470f9e","updated":"2025-09-11 07:23:25.000000000","message":"recheck","commit_id":"aa317e9ab6c76dd50f24da43716b2bc8561cb892"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"219c4d7c34facaa87eac3e05e51bd196ab7ea6fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":47,"id":"55bcacb5_1f6f5f41","updated":"2025-10-29 21:40:12.000000000","message":"There were some small inconsistencies I\u0027d like looked at.\n\nThe -1 is due to this one as I\u0027m not sure this code will work in an upgrade scenario:\ncinder/volume/drivers/ibm/storwize_svc/storwize_svc_common.py \n#7663","commit_id":"5759a570b0061d61497b50815bece4fd3bec2f0e"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"971fd53f0c6eb4305353a8479af94adeb31bbae2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":47,"id":"30b5adf0_e5e37133","updated":"2025-09-12 09:14:26.000000000","message":"recheck devstack-plugin-nfs-tempest-full","commit_id":"5759a570b0061d61497b50815bece4fd3bec2f0e"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"a75c4b7959f76ee78c937eb10303495b22c40cc5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"31c3a61f_8f65b6c5","updated":"2025-11-09 06:26:48.000000000","message":"After a couple changes, this patch is looking good to me.","commit_id":"de021e6bd97a7482796e7b3023323f4cc16eb274"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"8c4a46d1a1b0345068189ede68ad2c278ecaf228","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":52,"id":"bf259b38_2aa4c082","updated":"2025-11-07 15:35:55.000000000","message":"Thanks for the changes, they look good.\n\nI apologize as I missed it last time, but you also need release notes (only reason for the -1 now).","commit_id":"de021e6bd97a7482796e7b3023323f4cc16eb274"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"a75c4b7959f76ee78c937eb10303495b22c40cc5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"7a13c634_7b36e00e","in_reply_to":"becc8a9c_945cfe0d","updated":"2025-11-09 06:26:48.000000000","message":"Weird, sorry Nimesh!  I must have been looking at a limited diff instead of base-\u003ecurrent and didn\u0027t notice it.\n\nMy apologies, and I will issue a +1.","commit_id":"de021e6bd97a7482796e7b3023323f4cc16eb274"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"232650353a425635ec229322d9dbfd19b3a803c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"becc8a9c_945cfe0d","in_reply_to":"bf259b38_2aa4c082","updated":"2025-11-08 12:23:10.000000000","message":"There is a Release Note yaml in this patch - releasenotes/notes/ibm-svf-flashcopy2.0-volume-snapshot-support-e449691e087bd21e.yaml\n\nDoc path for this feature (VGS) is at https://review.opendev.org/c/openstack/cinder/+/958465/24","commit_id":"de021e6bd97a7482796e7b3023323f4cc16eb274"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"12161824366eadd5c7de3744f47855789aa5eb9a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":56,"id":"bd86b532_1082b9e0","updated":"2025-11-12 10:24:42.000000000","message":"run-quobyteci","commit_id":"f47c683ca072ac14c9fe70a44af804d861d95ae8"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"66e50b85a0ee556775d3c9a1ae77e229e9e68323","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":60,"id":"dac18b9a_79d67cdc","updated":"2025-11-21 15:59:25.000000000","message":"Hi, I\u0027ve left a few minor comments regarding what I\u0027ve seen so far. I\u0027ll continue the review shortly.","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"f2d461bad74f2f577215ff2885eff8e12ad01836","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":70,"id":"e3ee28bb_989eb7b2","updated":"2026-01-07 16:55:41.000000000","message":"recheck","commit_id":"239e14846072f9b5e03052e1f65e55e80ddcbd8e"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"7f5f94dcfcddb772b26f8514a8f230b561549e38","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":71,"id":"45d6f5e6_439d73b4","updated":"2026-01-14 07:54:33.000000000","message":"recheck","commit_id":"77032f1a5676531e028eedd1f93fa13a3e21d6f4"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"35e165c2029a2e2853502f712348cf898ee0d72c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":72,"id":"0bd5178d_943d88c4","updated":"2026-01-16 15:24:14.000000000","message":"LGTM","commit_id":"834e608f1510b9a98b91b6a494c7feb590529ac3"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"594dabefa29e865c9998f3e1378607f5296e2378","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":72,"id":"8b7fde35_78bfdce5","updated":"2026-01-15 07:28:22.000000000","message":"recheck","commit_id":"834e608f1510b9a98b91b6a494c7feb590529ac3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"35917505093cc88b4a68ef97335fc59e2c11760f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":75,"id":"8ecd2163_9328bb50","updated":"2026-01-29 06:37:53.000000000","message":"recheck","commit_id":"581792b0c16a6865238648b08dc250b986b8aaa7"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"2e402a772ced82bfdec1a671158cfdcf30146e01","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":75,"id":"f0b48fbb_752916e1","updated":"2026-01-29 07:58:43.000000000","message":"recheck cinder-plugin-ceph-tempest","commit_id":"581792b0c16a6865238648b08dc250b986b8aaa7"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"2be289b001df787f73329b1eee137a6d82aae32e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":79,"id":"34ef830c_ca1aefcb","updated":"2026-02-06 06:26:47.000000000","message":"recheck tempest-slow-py3","commit_id":"427bc522a12f1b3857c1e93effc06f73ec4ae51b"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"8e901949b8959c6c20196592d79e5657fe51f6ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":80,"id":"c9fdc05a_f4552e05","updated":"2026-02-18 06:13:24.000000000","message":"recheck","commit_id":"736a0c1a2f9e573ff63f6f34a0d4fe2fafad83f3"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"48c438a50db2f8f0a0278d4fc2720068da37727f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":81,"id":"42a2bd63_6116989a","updated":"2026-02-20 10:48:42.000000000","message":"recheck","commit_id":"470c4cdb6febf02f9df224137c0a0775939f702e"}],"cinder/tests/unit/volume/drivers/ibm/test_storwize_svc.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"72e33a574e0836c123ecd5e2f038c80b70189f02","unresolved":true,"context_lines":[{"line_number":2769,"context_line":"                for index in range(len(rows)):"},{"line_number":2770,"context_line":"                    rows[index] \u003d kwargs[\u0027delim\u0027].join(rows[index])"},{"line_number":2771,"context_line":"            return (\u0027%s\u0027 % \u0027\\n\u0027.join(rows), \u0027\u0027)"},{"line_number":2772,"context_line":"        else:"},{"line_number":2773,"context_line":"            volume_snapshot_info \u003d kwargs[\u0027snapshot\u0027].strip(\u0027\\\u0027\\\"\u0027)"},{"line_number":2774,"context_line":"            if volume_snapshot_info not in ("},{"line_number":2775,"context_line":"                    self._volume_snapshot_list):"}],"source_content_type":"text/x-python","patch_set":81,"id":"6fa92f36_19f01177","line":2772,"updated":"2026-02-20 16:04:10.000000000","message":"looking at if and elif. is there a scenario this else block is reached?","commit_id":"470c4cdb6febf02f9df224137c0a0775939f702e"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"411245a71d87677443f2227b268a52e6f37b9ca8","unresolved":false,"context_lines":[{"line_number":2769,"context_line":"                for index in range(len(rows)):"},{"line_number":2770,"context_line":"                    rows[index] \u003d kwargs[\u0027delim\u0027].join(rows[index])"},{"line_number":2771,"context_line":"            return (\u0027%s\u0027 % \u0027\\n\u0027.join(rows), \u0027\u0027)"},{"line_number":2772,"context_line":"        else:"},{"line_number":2773,"context_line":"            volume_snapshot_info \u003d kwargs[\u0027snapshot\u0027].strip(\u0027\\\u0027\\\"\u0027)"},{"line_number":2774,"context_line":"            if volume_snapshot_info not in ("},{"line_number":2775,"context_line":"                    self._volume_snapshot_list):"}],"source_content_type":"text/x-python","patch_set":81,"id":"67c79332_16c8ea3b","line":2772,"in_reply_to":"6fa92f36_19f01177","updated":"2026-02-23 08:28:06.000000000","message":"Updated the if-elif-else block to make it more clear.\nif - when neither snapshot nor obj there, return filtered list\nelif - when snapshot is specified, return specific snapshot info\nelse - return all snapshots info","commit_id":"470c4cdb6febf02f9df224137c0a0775939f702e"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_common.py":[{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"8a1d532103b42cbcf98d569ec4ce44b559b796f7","unresolved":false,"context_lines":[{"line_number":183,"context_line":"               default\u003dNone,"},{"line_number":184,"context_line":"               help\u003d\u0027Colon separated list of storage system storage \u0027"},{"line_number":185,"context_line":"               \u0027pools for volume snapshots.\u0027),"},{"line_number":186,"context_line":"]"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"CONF \u003d cfg.CONF"},{"line_number":189,"context_line":"CONF.register_opts(storwize_svc_opts, group\u003dconfiguration.SHARED_CONF_GROUP)"}],"source_content_type":"text/x-python","patch_set":5,"id":"80958109_c5c42362","line":186,"range":{"start_line":186,"start_character":0,"end_line":186,"end_character":1},"updated":"2025-06-05 11:11:01.000000000","message":"Can @zuul-dev@openstack.org recheck  run on this patch","commit_id":"d8d47566e9b1b6ea908a6ef243a91ce370ef1a4a"},{"author":{"_account_id":24005,"name":"prashkre","email":"prashkre@in.ibm.com","username":"prashkre"},"change_message_id":"bdfa7100dc44309100bbb1adf63b19d3aed44be9","unresolved":true,"context_lines":[{"line_number":4552,"context_line":"                self._vdiskcopyops_loop \u003d None"},{"line_number":4553,"context_line":"        LOG.debug(\u0027leave: delete_volume: volume %s\u0027, volume[\u0027name\u0027])"},{"line_number":4554,"context_line":""},{"line_number":4555,"context_line":"    # Assisted by watsonx Code Assistant"},{"line_number":4556,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":4557,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":4558,"context_line":"        migrate_from_flashcopy \u003d self._get_config_param_value("}],"source_content_type":"text/x-python","patch_set":5,"id":"98d9770a_56bdc719","line":4555,"updated":"2025-05-28 06:51:42.000000000","message":"please remove this comment.","commit_id":"d8d47566e9b1b6ea908a6ef243a91ce370ef1a4a"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"ecb0b978a2c4b29ffde171f10c22e5bfa66e5235","unresolved":false,"context_lines":[{"line_number":4552,"context_line":"                self._vdiskcopyops_loop \u003d None"},{"line_number":4553,"context_line":"        LOG.debug(\u0027leave: delete_volume: volume %s\u0027, volume[\u0027name\u0027])"},{"line_number":4554,"context_line":""},{"line_number":4555,"context_line":"    # Assisted by watsonx Code Assistant"},{"line_number":4556,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":4557,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":4558,"context_line":"        migrate_from_flashcopy \u003d self._get_config_param_value("}],"source_content_type":"text/x-python","patch_set":5,"id":"244f9a06_b6bd8b9f","line":4555,"in_reply_to":"98d9770a_56bdc719","updated":"2025-06-05 06:19:10.000000000","message":"Done","commit_id":"d8d47566e9b1b6ea908a6ef243a91ce370ef1a4a"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"8a1d532103b42cbcf98d569ec4ce44b559b796f7","unresolved":false,"context_lines":[{"line_number":4552,"context_line":"                self._vdiskcopyops_loop \u003d None"},{"line_number":4553,"context_line":"        LOG.debug(\u0027leave: delete_volume: volume %s\u0027, volume[\u0027name\u0027])"},{"line_number":4554,"context_line":""},{"line_number":4555,"context_line":"    # Assisted by watsonx Code Assistant"},{"line_number":4556,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":4557,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":4558,"context_line":"        migrate_from_flashcopy \u003d self._get_config_param_value("}],"source_content_type":"text/x-python","patch_set":5,"id":"e181002b_1fd7c2b0","line":4555,"in_reply_to":"98d9770a_56bdc719","updated":"2025-06-05 11:11:01.000000000","message":"Done","commit_id":"d8d47566e9b1b6ea908a6ef243a91ce370ef1a4a"},{"author":{"_account_id":36897,"name":"Girish Chilukuri","display_name":"Girish Chilukuri","email":"Girish.Chilukuri1@partner.ibm.com","username":"girishchilukuri1"},"change_message_id":"9d9f5f28f8c39a16c3b814c9b435891bd1451b45","unresolved":true,"context_lines":[{"line_number":666,"context_line":"        ssh_cmd.extend([\u0027-delim\u0027, \u0027!\u0027])"},{"line_number":667,"context_line":"        if \"id\" in params:"},{"line_number":668,"context_line":"            ssh_cmd.append(params[\"id\"])"},{"line_number":669,"context_line":"        else:"},{"line_number":670,"context_line":"            return None"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        try:"},{"line_number":673,"context_line":"            out, err \u003d self._ssh(ssh_cmd, check_exit_code\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":21,"id":"01ffcf92_e9a569d7","line":670,"range":{"start_line":669,"start_character":8,"end_line":670,"end_character":23},"updated":"2025-06-11 06:59:28.000000000","message":"lsvolumesnapshot should work with id only for that volume id and without id should return all snapshots","commit_id":"93e423ab88d2bc660dcd356c36ab14f1f3e296ef"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"2610370e251ff1bb928e270205ab91063140c6c6","unresolved":false,"context_lines":[{"line_number":666,"context_line":"        ssh_cmd.extend([\u0027-delim\u0027, \u0027!\u0027])"},{"line_number":667,"context_line":"        if \"id\" in params:"},{"line_number":668,"context_line":"            ssh_cmd.append(params[\"id\"])"},{"line_number":669,"context_line":"        else:"},{"line_number":670,"context_line":"            return None"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        try:"},{"line_number":673,"context_line":"            out, err \u003d self._ssh(ssh_cmd, check_exit_code\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":21,"id":"28fa55c5_02009b1c","line":670,"range":{"start_line":669,"start_character":8,"end_line":670,"end_character":23},"in_reply_to":"01ffcf92_e9a569d7","updated":"2025-06-20 09:39:23.000000000","message":"Done","commit_id":"93e423ab88d2bc660dcd356c36ab14f1f3e296ef"},{"author":{"_account_id":36897,"name":"Girish Chilukuri","display_name":"Girish Chilukuri","email":"Girish.Chilukuri1@partner.ibm.com","username":"girishchilukuri1"},"change_message_id":"9d9f5f28f8c39a16c3b814c9b435891bd1451b45","unresolved":true,"context_lines":[{"line_number":714,"context_line":"        if \"prepare\" in params and \"start\" not in params:"},{"line_number":715,"context_line":"            ssh_cmd.extend([\u0027-prepare\u0027])"},{"line_number":716,"context_line":"        if \"start\" in params and \"prepare\" not in params:"},{"line_number":717,"context_line":"            ssh_cmd.extend([\u0027-trigger\u0027, params[\"trigger\"]])"},{"line_number":718,"context_line":"        if \"pool\" in params:"},{"line_number":719,"context_line":"            ssh_cmd.extend([\u0027-pool\u0027, params[\"pool\"]])"},{"line_number":720,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":21,"id":"e21ff64d_076fd2ab","line":717,"range":{"start_line":717,"start_character":12,"end_line":717,"end_character":59},"updated":"2025-06-11 06:59:28.000000000","message":"If addsnapshot is triggered with snapshot name, then parentuid has to given as input.\nIf snapshot id used then -triggerid should be parameter.","commit_id":"93e423ab88d2bc660dcd356c36ab14f1f3e296ef"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"2610370e251ff1bb928e270205ab91063140c6c6","unresolved":false,"context_lines":[{"line_number":714,"context_line":"        if \"prepare\" in params and \"start\" not in params:"},{"line_number":715,"context_line":"            ssh_cmd.extend([\u0027-prepare\u0027])"},{"line_number":716,"context_line":"        if \"start\" in params and \"prepare\" not in params:"},{"line_number":717,"context_line":"            ssh_cmd.extend([\u0027-trigger\u0027, params[\"trigger\"]])"},{"line_number":718,"context_line":"        if \"pool\" in params:"},{"line_number":719,"context_line":"            ssh_cmd.extend([\u0027-pool\u0027, params[\"pool\"]])"},{"line_number":720,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":21,"id":"fd4ca7b7_f325df92","line":717,"range":{"start_line":717,"start_character":12,"end_line":717,"end_character":59},"in_reply_to":"e21ff64d_076fd2ab","updated":"2025-06-20 09:39:23.000000000","message":"Done","commit_id":"93e423ab88d2bc660dcd356c36ab14f1f3e296ef"},{"author":{"_account_id":36897,"name":"Girish Chilukuri","display_name":"Girish Chilukuri","email":"Girish.Chilukuri1@partner.ibm.com","username":"girishchilukuri1"},"change_message_id":"ef1a99ccebec5cdac3e9ef14cdc7f8ae247c7070","unresolved":true,"context_lines":[{"line_number":3299,"context_line":"                     fields.ReplicationStatus.NOT_CAPABLE)})"},{"line_number":3300,"context_line":"        return snapshots_model"},{"line_number":3301,"context_line":""},{"line_number":3302,"context_line":"    def start_volumegroup_snapshot(self, group_snapshot):"},{"line_number":3303,"context_line":"        \"\"\"Create a volumegroup snapshot prepared earlier\"\"\""},{"line_number":3304,"context_line":"        params \u003d dict()"},{"line_number":3305,"context_line":"        volumegroup_snapshot_name \u003d ("}],"source_content_type":"text/x-python","patch_set":25,"id":"1289623b_f37b3cec","line":3302,"updated":"2025-06-30 05:20:14.000000000","message":"start_volumegroup_snapshot should start the volume group snapshot based on volume_group_enabled and temporary_volume_group_enabled. For temporary_volume_group_enabled VG will no be there.","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"c901d985ee370f6c8c6912af1ff3761a55e3113c","unresolved":false,"context_lines":[{"line_number":3299,"context_line":"                     fields.ReplicationStatus.NOT_CAPABLE)})"},{"line_number":3300,"context_line":"        return snapshots_model"},{"line_number":3301,"context_line":""},{"line_number":3302,"context_line":"    def start_volumegroup_snapshot(self, group_snapshot):"},{"line_number":3303,"context_line":"        \"\"\"Create a volumegroup snapshot prepared earlier\"\"\""},{"line_number":3304,"context_line":"        params \u003d dict()"},{"line_number":3305,"context_line":"        volumegroup_snapshot_name \u003d ("}],"source_content_type":"text/x-python","patch_set":25,"id":"b193df18_0f1e6179","line":3302,"in_reply_to":"1289623b_f37b3cec","updated":"2025-07-08 09:31:37.000000000","message":"Done","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":36897,"name":"Girish Chilukuri","display_name":"Girish Chilukuri","email":"Girish.Chilukuri1@partner.ibm.com","username":"girishchilukuri1"},"change_message_id":"ef1a99ccebec5cdac3e9ef14cdc7f8ae247c7070","unresolved":true,"context_lines":[{"line_number":3320,"context_line":"        # Start the volume group snapshot"},{"line_number":3321,"context_line":"        svc_volumegroup_snapshot_id \u003d self.ssh.addsnapshot(params)"},{"line_number":3322,"context_line":""},{"line_number":3323,"context_line":"    def prepare_volumegroup_snapshot(self, group_snapshot, snapshots,"},{"line_number":3324,"context_line":"                                     group_type, pool_name\u003dNone):"},{"line_number":3325,"context_line":"        \"\"\"Prepare a volumegroup snapshot based on the group_type\"\"\""},{"line_number":3326,"context_line":"        model_update \u003d {\u0027status\u0027: fields.GroupSnapshotStatus.AVAILABLE}"}],"source_content_type":"text/x-python","patch_set":25,"id":"523a715a_46fbf8b9","line":3323,"updated":"2025-06-30 05:20:14.000000000","message":"pass context as input to prepare_volumegroup_snapshot method.","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"c901d985ee370f6c8c6912af1ff3761a55e3113c","unresolved":false,"context_lines":[{"line_number":3320,"context_line":"        # Start the volume group snapshot"},{"line_number":3321,"context_line":"        svc_volumegroup_snapshot_id \u003d self.ssh.addsnapshot(params)"},{"line_number":3322,"context_line":""},{"line_number":3323,"context_line":"    def prepare_volumegroup_snapshot(self, group_snapshot, snapshots,"},{"line_number":3324,"context_line":"                                     group_type, pool_name\u003dNone):"},{"line_number":3325,"context_line":"        \"\"\"Prepare a volumegroup snapshot based on the group_type\"\"\""},{"line_number":3326,"context_line":"        model_update \u003d {\u0027status\u0027: fields.GroupSnapshotStatus.AVAILABLE}"}],"source_content_type":"text/x-python","patch_set":25,"id":"64f33162_7d23534d","line":3323,"in_reply_to":"523a715a_46fbf8b9","updated":"2025-07-08 09:31:37.000000000","message":"Done","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":36897,"name":"Girish Chilukuri","display_name":"Girish Chilukuri","email":"Girish.Chilukuri1@partner.ibm.com","username":"girishchilukuri1"},"change_message_id":"ef1a99ccebec5cdac3e9ef14cdc7f8ae247c7070","unresolved":true,"context_lines":[{"line_number":3349,"context_line":"                       % {\"snapshot_name\": volumegroup_snapshot_name,"},{"line_number":3350,"context_line":"                          \"err\": err})"},{"line_number":3351,"context_line":"                LOG.error(msg)"},{"line_number":3352,"context_line":"            snapshots_model \u003d self.update_volumegroup_snapshot_properties("},{"line_number":3353,"context_line":"                context, snapshots, group_snapshot\u003dgroup_snapshot,"},{"line_number":3354,"context_line":"                status\u003dmodel_update[\u0027status\u0027],"},{"line_number":3355,"context_line":"                snapshot_metadata\u003dsnapshot_metadata)"}],"source_content_type":"text/x-python","patch_set":25,"id":"5226272a_801c683b","line":3352,"updated":"2025-06-30 05:20:14.000000000","message":"return should be model_update, snapshots_model","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"c901d985ee370f6c8c6912af1ff3761a55e3113c","unresolved":false,"context_lines":[{"line_number":3349,"context_line":"                       % {\"snapshot_name\": volumegroup_snapshot_name,"},{"line_number":3350,"context_line":"                          \"err\": err})"},{"line_number":3351,"context_line":"                LOG.error(msg)"},{"line_number":3352,"context_line":"            snapshots_model \u003d self.update_volumegroup_snapshot_properties("},{"line_number":3353,"context_line":"                context, snapshots, group_snapshot\u003dgroup_snapshot,"},{"line_number":3354,"context_line":"                status\u003dmodel_update[\u0027status\u0027],"},{"line_number":3355,"context_line":"                snapshot_metadata\u003dsnapshot_metadata)"}],"source_content_type":"text/x-python","patch_set":25,"id":"39848a33_ee03b627","line":3352,"in_reply_to":"5226272a_801c683b","updated":"2025-07-08 09:31:37.000000000","message":"Done","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":36897,"name":"Girish Chilukuri","display_name":"Girish Chilukuri","email":"Girish.Chilukuri1@partner.ibm.com","username":"girishchilukuri1"},"change_message_id":"ef1a99ccebec5cdac3e9ef14cdc7f8ae247c7070","unresolved":true,"context_lines":[{"line_number":7397,"context_line":"        migrate_from_flashcopy \u003d self._get_config_param_value("},{"line_number":7398,"context_line":"            \u0027migrate_from_flashcopy\u0027, True)"},{"line_number":7399,"context_line":""},{"line_number":7400,"context_line":"        if migrate_from_flashcopy:"},{"line_number":7401,"context_line":"            self._helpers.start_volumegroup_snapshot(group_snapshot)"},{"line_number":7402,"context_line":"        else:"},{"line_number":7403,"context_line":"            # Use group_snapshot id as cg name"}],"source_content_type":"text/x-python","patch_set":25,"id":"d0b7fadb_bc7510c2","line":7400,"range":{"start_line":7400,"start_character":11,"end_line":7400,"end_character":33},"updated":"2025-06-30 05:20:14.000000000","message":"Here also use the group_type check as used in create_group_snapshot method.","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"c901d985ee370f6c8c6912af1ff3761a55e3113c","unresolved":false,"context_lines":[{"line_number":7397,"context_line":"        migrate_from_flashcopy \u003d self._get_config_param_value("},{"line_number":7398,"context_line":"            \u0027migrate_from_flashcopy\u0027, True)"},{"line_number":7399,"context_line":""},{"line_number":7400,"context_line":"        if migrate_from_flashcopy:"},{"line_number":7401,"context_line":"            self._helpers.start_volumegroup_snapshot(group_snapshot)"},{"line_number":7402,"context_line":"        else:"},{"line_number":7403,"context_line":"            # Use group_snapshot id as cg name"}],"source_content_type":"text/x-python","patch_set":25,"id":"2df83c38_47c1d0cb","line":7400,"range":{"start_line":7400,"start_character":11,"end_line":7400,"end_character":33},"in_reply_to":"d0b7fadb_bc7510c2","updated":"2025-07-08 09:31:37.000000000","message":"Done","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":36897,"name":"Girish Chilukuri","display_name":"Girish Chilukuri","email":"Girish.Chilukuri1@partner.ibm.com","username":"girishchilukuri1"},"change_message_id":"ef1a99ccebec5cdac3e9ef14cdc7f8ae247c7070","unresolved":true,"context_lines":[{"line_number":7461,"context_line":"        return model_update, snapshots_model"},{"line_number":7462,"context_line":""},{"line_number":7463,"context_line":"    def prepare_group_snapshot(self, context, group_snapshot, snapshots,"},{"line_number":7464,"context_line":"                               group_type):"},{"line_number":7465,"context_line":"        \"\"\"prepares a group_snapshot."},{"line_number":7466,"context_line":"        :param context: the context of the caller."},{"line_number":7467,"context_line":"        :param group_snapshot: the GroupSnapshot object to be prepared."}],"source_content_type":"text/x-python","patch_set":25,"id":"3fcba029_d3dc9733","line":7464,"range":{"start_line":7464,"start_character":31,"end_line":7464,"end_character":41},"updated":"2025-06-30 05:20:14.000000000","message":"group_type input is not required for prepare_group_snapshot, it should be checked inside prepare_group_snapshot for group_type of volume_group_enabled and temporary_volume_group_enabled and should as give input to prepare_volumegroup_snapshot.","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"c901d985ee370f6c8c6912af1ff3761a55e3113c","unresolved":false,"context_lines":[{"line_number":7461,"context_line":"        return model_update, snapshots_model"},{"line_number":7462,"context_line":""},{"line_number":7463,"context_line":"    def prepare_group_snapshot(self, context, group_snapshot, snapshots,"},{"line_number":7464,"context_line":"                               group_type):"},{"line_number":7465,"context_line":"        \"\"\"prepares a group_snapshot."},{"line_number":7466,"context_line":"        :param context: the context of the caller."},{"line_number":7467,"context_line":"        :param group_snapshot: the GroupSnapshot object to be prepared."}],"source_content_type":"text/x-python","patch_set":25,"id":"f62510e3_d878813d","line":7464,"range":{"start_line":7464,"start_character":31,"end_line":7464,"end_character":41},"in_reply_to":"3fcba029_d3dc9733","updated":"2025-07-08 09:31:37.000000000","message":"Done","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":36897,"name":"Girish Chilukuri","display_name":"Girish Chilukuri","email":"Girish.Chilukuri1@partner.ibm.com","username":"girishchilukuri1"},"change_message_id":"ef1a99ccebec5cdac3e9ef14cdc7f8ae247c7070","unresolved":true,"context_lines":[{"line_number":7477,"context_line":"        pool_name \u003d self._get_config_param_value("},{"line_number":7478,"context_line":"            \u0027svc_snapshot_pool_name\u0027, None)"},{"line_number":7479,"context_line":""},{"line_number":7480,"context_line":"        if migrate_from_flashcopy:"},{"line_number":7481,"context_line":"            model_update, snapshots_model \u003d ("},{"line_number":7482,"context_line":"                self._helpers.prepare_volumegroup_snapshot("},{"line_number":7483,"context_line":"                    context, group_snapshot, snapshots, group_type, pool_name))"}],"source_content_type":"text/x-python","patch_set":25,"id":"a4e9651f_1da6d28b","line":7480,"range":{"start_line":7480,"start_character":8,"end_line":7480,"end_character":34},"updated":"2025-06-30 05:20:14.000000000","message":"Instead of using migrate_from_flashcopy use the group_type to check as used in create_group_snapshot method.","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"c901d985ee370f6c8c6912af1ff3761a55e3113c","unresolved":false,"context_lines":[{"line_number":7477,"context_line":"        pool_name \u003d self._get_config_param_value("},{"line_number":7478,"context_line":"            \u0027svc_snapshot_pool_name\u0027, None)"},{"line_number":7479,"context_line":""},{"line_number":7480,"context_line":"        if migrate_from_flashcopy:"},{"line_number":7481,"context_line":"            model_update, snapshots_model \u003d ("},{"line_number":7482,"context_line":"                self._helpers.prepare_volumegroup_snapshot("},{"line_number":7483,"context_line":"                    context, group_snapshot, snapshots, group_type, pool_name))"}],"source_content_type":"text/x-python","patch_set":25,"id":"c8efbd67_52348f22","line":7480,"range":{"start_line":7480,"start_character":8,"end_line":7480,"end_character":34},"in_reply_to":"a4e9651f_1da6d28b","updated":"2025-07-08 09:31:37.000000000","message":"Done","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":36897,"name":"Girish Chilukuri","display_name":"Girish Chilukuri","email":"Girish.Chilukuri1@partner.ibm.com","username":"girishchilukuri1"},"change_message_id":"ef1a99ccebec5cdac3e9ef14cdc7f8ae247c7070","unresolved":true,"context_lines":[{"line_number":7610,"context_line":"                LOG.error(msg)"},{"line_number":7611,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":7612,"context_line":"        try:"},{"line_number":7613,"context_line":"            self._helpers.pretreatment_before_revert(volume.name)"},{"line_number":7614,"context_line":"        except Exception as err:"},{"line_number":7615,"context_line":"            msg \u003d (_(\"Pretreatment before revert volume %(vol)s to snapshot \""},{"line_number":7616,"context_line":"                     \"%(snap)s failed due to: %(err)s.\")"}],"source_content_type":"text/x-python","patch_set":25,"id":"ae0ef236_f2c48203","line":7613,"range":{"start_line":7613,"start_character":26,"end_line":7613,"end_character":52},"updated":"2025-06-30 05:20:14.000000000","message":"pretreatment_before_revert is currently handled for legacy snapshots, This has to be handled for volumegroup enabled snapshots when volume group snapshot is used to restore","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"c901d985ee370f6c8c6912af1ff3761a55e3113c","unresolved":false,"context_lines":[{"line_number":7610,"context_line":"                LOG.error(msg)"},{"line_number":7611,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":7612,"context_line":"        try:"},{"line_number":7613,"context_line":"            self._helpers.pretreatment_before_revert(volume.name)"},{"line_number":7614,"context_line":"        except Exception as err:"},{"line_number":7615,"context_line":"            msg \u003d (_(\"Pretreatment before revert volume %(vol)s to snapshot \""},{"line_number":7616,"context_line":"                     \"%(snap)s failed due to: %(err)s.\")"}],"source_content_type":"text/x-python","patch_set":25,"id":"0cf96f0f_79f5ff7e","line":7613,"range":{"start_line":7613,"start_character":26,"end_line":7613,"end_character":52},"in_reply_to":"ae0ef236_f2c48203","updated":"2025-07-08 09:31:37.000000000","message":"Done","commit_id":"a20d65c2141d0876b5289bf89a5d2d66052c0632"},{"author":{"_account_id":36897,"name":"Girish Chilukuri","display_name":"Girish Chilukuri","email":"Girish.Chilukuri1@partner.ibm.com","username":"girishchilukuri1"},"change_message_id":"e5eb6046b2cb128148edac24cb6b14a1a15bcfa6","unresolved":true,"context_lines":[{"line_number":740,"context_line":"            LOG.info(ssh_cmd)"},{"line_number":741,"context_line":"            self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":742,"context_line":"        except Exception as ex:"},{"line_number":743,"context_line":"            msg \u003d (_(\u0027Failed to run restorefromsnapshot. \u0027"},{"line_number":744,"context_line":"                     \u0027Exception: %(ex)s\u0027) % {\u0027ex\u0027: ex})"},{"line_number":745,"context_line":"            LOG.error(msg)"},{"line_number":746,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":29,"id":"0937a282_22a27d03","line":743,"range":{"start_line":743,"start_character":36,"end_line":743,"end_character":55},"updated":"2025-08-01 04:42:58.000000000","message":"it should be rmsnapshot","commit_id":"7961428ad3b6796bd173fca2d7a26b6a4a279a37"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"447a82c41b76125430d4246df8c305c96fa28b4d","unresolved":false,"context_lines":[{"line_number":740,"context_line":"            LOG.info(ssh_cmd)"},{"line_number":741,"context_line":"            self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":742,"context_line":"        except Exception as ex:"},{"line_number":743,"context_line":"            msg \u003d (_(\u0027Failed to run restorefromsnapshot. \u0027"},{"line_number":744,"context_line":"                     \u0027Exception: %(ex)s\u0027) % {\u0027ex\u0027: ex})"},{"line_number":745,"context_line":"            LOG.error(msg)"},{"line_number":746,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":29,"id":"e1bb8c2e_6b8b6424","line":743,"range":{"start_line":743,"start_character":36,"end_line":743,"end_character":55},"in_reply_to":"0937a282_22a27d03","updated":"2025-08-04 12:54:21.000000000","message":"Done","commit_id":"7961428ad3b6796bd173fca2d7a26b6a4a279a37"},{"author":{"_account_id":36897,"name":"Girish Chilukuri","display_name":"Girish Chilukuri","email":"Girish.Chilukuri1@partner.ibm.com","username":"girishchilukuri1"},"change_message_id":"b2edc8b2cacde81b172303f5bae65e70c5bf99cd","unresolved":true,"context_lines":[{"line_number":7427,"context_line":"        LOG.debug(\"Leave: create_group_from_src.\")"},{"line_number":7428,"context_line":"        return model_update, volumes_model"},{"line_number":7429,"context_line":""},{"line_number":7430,"context_line":"    def start_group_snapshot(self, context, group_snapshot, snapshots):"},{"line_number":7431,"context_line":"        \"\"\"Starts a group_snapshot."},{"line_number":7432,"context_line":"        :param context: the context of the caller."},{"line_number":7433,"context_line":"        :param group_snapshot: the GroupSnapshot object to be created."}],"source_content_type":"text/x-python","patch_set":36,"id":"ba48f287_b6628df5","line":7430,"range":{"start_line":7430,"start_character":60,"end_line":7430,"end_character":69},"updated":"2025-08-01 07:49:40.000000000","message":"snapshots is not required","commit_id":"ab7ee058b765d782cc1b75e9f2f29c705ab94c84"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"447a82c41b76125430d4246df8c305c96fa28b4d","unresolved":false,"context_lines":[{"line_number":7427,"context_line":"        LOG.debug(\"Leave: create_group_from_src.\")"},{"line_number":7428,"context_line":"        return model_update, volumes_model"},{"line_number":7429,"context_line":""},{"line_number":7430,"context_line":"    def start_group_snapshot(self, context, group_snapshot, snapshots):"},{"line_number":7431,"context_line":"        \"\"\"Starts a group_snapshot."},{"line_number":7432,"context_line":"        :param context: the context of the caller."},{"line_number":7433,"context_line":"        :param group_snapshot: the GroupSnapshot object to be created."}],"source_content_type":"text/x-python","patch_set":36,"id":"fac6fe8c_0eb32a3e","line":7430,"range":{"start_line":7430,"start_character":60,"end_line":7430,"end_character":69},"in_reply_to":"ba48f287_b6628df5","updated":"2025-08-04 12:54:21.000000000","message":"Done","commit_id":"ab7ee058b765d782cc1b75e9f2f29c705ab94c84"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"219c4d7c34facaa87eac3e05e51bd196ab7ea6fc","unresolved":true,"context_lines":[{"line_number":664,"context_line":"        ssh_cmd \u003d [\u0027svcinfo\u0027, \u0027lsvolumesnapshot\u0027]"},{"line_number":665,"context_line":"        # Add delimiter to parse the output"},{"line_number":666,"context_line":"        ssh_cmd.extend([\u0027-delim\u0027, \u0027!\u0027])"},{"line_number":667,"context_line":"        if \"id\" in params:"},{"line_number":668,"context_line":"            ssh_cmd.append(params[\"id\"])"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":47,"id":"55a71bc5_beb0a9e4","line":667,"updated":"2025-10-29 21:40:12.000000000","message":"The description above says that \"id\" should be in the given parameters.  Here it suggests it may not be necessary.  \n\nI just want to make sure that not including the ID isn\u0027t going to do something highly unexpected like return the wrong information (perhaps the end result will be an error from the service).","commit_id":"5759a570b0061d61497b50815bece4fd3bec2f0e"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"5cf70c96889ddc0e024c47b0570fef5e92fe7dca","unresolved":false,"context_lines":[{"line_number":664,"context_line":"        ssh_cmd \u003d [\u0027svcinfo\u0027, \u0027lsvolumesnapshot\u0027]"},{"line_number":665,"context_line":"        # Add delimiter to parse the output"},{"line_number":666,"context_line":"        ssh_cmd.extend([\u0027-delim\u0027, \u0027!\u0027])"},{"line_number":667,"context_line":"        if \"id\" in params:"},{"line_number":668,"context_line":"            ssh_cmd.append(params[\"id\"])"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":47,"id":"573f4503_bc480e32","line":667,"in_reply_to":"55a71bc5_beb0a9e4","updated":"2025-11-07 07:38:54.000000000","message":"Done","commit_id":"5759a570b0061d61497b50815bece4fd3bec2f0e"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"219c4d7c34facaa87eac3e05e51bd196ab7ea6fc","unresolved":true,"context_lines":[{"line_number":3310,"context_line":"        addsnapshot_params \u003d dict()"},{"line_number":3311,"context_line":"        ls_params \u003d dict()"},{"line_number":3312,"context_line":"        snapshot_name \u003d None"},{"line_number":3313,"context_line":"        if group_type \u003d\u003d \"volume_group_enabled\":"},{"line_number":3314,"context_line":"            volumegroup_snapshot_name \u003d ("},{"line_number":3315,"context_line":"                self.get_volumegroup_snapshot_name(group_snapshot))"},{"line_number":3316,"context_line":"            addsnapshot_params[\"trigger\"] \u003d volumegroup_snapshot_name"}],"source_content_type":"text/x-python","patch_set":47,"id":"38088291_f822b9a4","line":3313,"updated":"2025-10-29 21:40:12.000000000","message":"What happens if the group type is not one of these two things?\n\nWill the SSH call block?\n\nIt appears that the prepare_volumegroup_snapshot() and create_volumegroup_snapshot() below account for this in that they will return empty data if neither value is set.  \n\nIt may not be possible for this to fail in the code right now (I see at least one of the callers will always set one of these two values), but if changes are made in the future it may be harder to debug.","commit_id":"5759a570b0061d61497b50815bece4fd3bec2f0e"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"5cf70c96889ddc0e024c47b0570fef5e92fe7dca","unresolved":false,"context_lines":[{"line_number":3310,"context_line":"        addsnapshot_params \u003d dict()"},{"line_number":3311,"context_line":"        ls_params \u003d dict()"},{"line_number":3312,"context_line":"        snapshot_name \u003d None"},{"line_number":3313,"context_line":"        if group_type \u003d\u003d \"volume_group_enabled\":"},{"line_number":3314,"context_line":"            volumegroup_snapshot_name \u003d ("},{"line_number":3315,"context_line":"                self.get_volumegroup_snapshot_name(group_snapshot))"},{"line_number":3316,"context_line":"            addsnapshot_params[\"trigger\"] \u003d volumegroup_snapshot_name"}],"source_content_type":"text/x-python","patch_set":47,"id":"80131873_c2266840","line":3313,"in_reply_to":"38088291_f822b9a4","updated":"2025-11-07 07:38:54.000000000","message":"Done","commit_id":"5759a570b0061d61497b50815bece4fd3bec2f0e"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"219c4d7c34facaa87eac3e05e51bd196ab7ea6fc","unresolved":true,"context_lines":[{"line_number":3502,"context_line":"        \"\"\"Check if volumegroup snapshot exists.\"\"\""},{"line_number":3503,"context_line":""},{"line_number":3504,"context_line":"        attrs \u003d self.ssh.lsvolumegroupsnapshot(params)"},{"line_number":3505,"context_line":"        return attrs[0] if attrs else None"},{"line_number":3506,"context_line":""},{"line_number":3507,"context_line":"    def delete_volumegroup_snapshot(self, group_snapshot, snapshots,"},{"line_number":3508,"context_line":"                                    group_type):"}],"source_content_type":"text/x-python","patch_set":47,"id":"3ec0f7b4_37e77587","line":3505,"updated":"2025-10-29 21:40:12.000000000","message":"It appears that this method is changing the return type from a boolean to whatever is in attrs[0] or possibly NoneType.\n\nI see in at least one place that it\u0027s being used as a boolean value.\n\n1. Should the method be renamed to reflect that it\u0027s no longer always a boolean return operation?\nOR\n2. Assuming it\u0027s only used for boolean checks, should this not continue to return only a boolean so we don\u0027t have to worry about unexpected side effects somewhere?","commit_id":"5759a570b0061d61497b50815bece4fd3bec2f0e"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"5cf70c96889ddc0e024c47b0570fef5e92fe7dca","unresolved":false,"context_lines":[{"line_number":3502,"context_line":"        \"\"\"Check if volumegroup snapshot exists.\"\"\""},{"line_number":3503,"context_line":""},{"line_number":3504,"context_line":"        attrs \u003d self.ssh.lsvolumegroupsnapshot(params)"},{"line_number":3505,"context_line":"        return attrs[0] if attrs else None"},{"line_number":3506,"context_line":""},{"line_number":3507,"context_line":"    def delete_volumegroup_snapshot(self, group_snapshot, snapshots,"},{"line_number":3508,"context_line":"                                    group_type):"}],"source_content_type":"text/x-python","patch_set":47,"id":"00c4216b_e1f9fc30","line":3505,"in_reply_to":"3ec0f7b4_37e77587","updated":"2025-11-07 07:38:54.000000000","message":"Done","commit_id":"5759a570b0061d61497b50815bece4fd3bec2f0e"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"219c4d7c34facaa87eac3e05e51bd196ab7ea6fc","unresolved":true,"context_lines":[{"line_number":7627,"context_line":"        \"\"\"Check if volume snapshot exists.\"\"\""},{"line_number":7628,"context_line":""},{"line_number":7629,"context_line":"        attrs \u003d self._helpers.ssh.lsvolumesnapshot(params)"},{"line_number":7630,"context_line":"        return attrs[0] if attrs else None"},{"line_number":7631,"context_line":""},{"line_number":7632,"context_line":"    @volume_utils.trace"},{"line_number":7633,"context_line":"    @StorwizeHelpers.volume_name_decorator(\u0027volume\u0027)"}],"source_content_type":"text/x-python","patch_set":47,"id":"ce4258b3_17471b7a","line":7630,"updated":"2025-10-29 21:40:12.000000000","message":"Similarly to above, I wonder if this should be a boolean.  Though, since it was newly added I wouldn\u0027t think there\u0027d be unexpected side-effects.","commit_id":"5759a570b0061d61497b50815bece4fd3bec2f0e"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"5cf70c96889ddc0e024c47b0570fef5e92fe7dca","unresolved":false,"context_lines":[{"line_number":7627,"context_line":"        \"\"\"Check if volume snapshot exists.\"\"\""},{"line_number":7628,"context_line":""},{"line_number":7629,"context_line":"        attrs \u003d self._helpers.ssh.lsvolumesnapshot(params)"},{"line_number":7630,"context_line":"        return attrs[0] if attrs else None"},{"line_number":7631,"context_line":""},{"line_number":7632,"context_line":"    @volume_utils.trace"},{"line_number":7633,"context_line":"    @StorwizeHelpers.volume_name_decorator(\u0027volume\u0027)"}],"source_content_type":"text/x-python","patch_set":47,"id":"68202b10_b82f21a3","line":7630,"in_reply_to":"ce4258b3_17471b7a","updated":"2025-11-07 07:38:54.000000000","message":"Done","commit_id":"5759a570b0061d61497b50815bece4fd3bec2f0e"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"219c4d7c34facaa87eac3e05e51bd196ab7ea6fc","unresolved":true,"context_lines":[{"line_number":7660,"context_line":"            LOG.debug(\u0027migrate_from_flashcopy is %s\u0027,"},{"line_number":7661,"context_line":"                      str(migrate_from_flashcopy))"},{"line_number":7662,"context_line":""},{"line_number":7663,"context_line":"            if migrate_from_flashcopy:"},{"line_number":7664,"context_line":"                # Extract snapshot ID from metadata"},{"line_number":7665,"context_line":"                snapshot_obj \u003d objects.Snapshot.get_by_id(context, snapshot.id)"},{"line_number":7666,"context_line":"                metadata_dict \u003d dict(snapshot_obj.get(\u0027metadata\u0027, {}))"}],"source_content_type":"text/x-python","patch_set":47,"id":"f5972027_b6c86a86","line":7663,"updated":"2025-10-29 21:40:12.000000000","message":"Wouldn\u0027t a restore depend on the actual type of FlashCopy that the pair was created with rather than the setting?  Or can an older FlashCopy be restored as if it\u0027s FlashCopy 2.0?\n\nIf not, what happens to customers that already have FlashCopy snapshots, but want to also migrate to FlashCopy 2.0?","commit_id":"5759a570b0061d61497b50815bece4fd3bec2f0e"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"8c4a46d1a1b0345068189ede68ad2c278ecaf228","unresolved":false,"context_lines":[{"line_number":7660,"context_line":"            LOG.debug(\u0027migrate_from_flashcopy is %s\u0027,"},{"line_number":7661,"context_line":"                      str(migrate_from_flashcopy))"},{"line_number":7662,"context_line":""},{"line_number":7663,"context_line":"            if migrate_from_flashcopy:"},{"line_number":7664,"context_line":"                # Extract snapshot ID from metadata"},{"line_number":7665,"context_line":"                snapshot_obj \u003d objects.Snapshot.get_by_id(context, snapshot.id)"},{"line_number":7666,"context_line":"                metadata_dict \u003d dict(snapshot_obj.get(\u0027metadata\u0027, {}))"}],"source_content_type":"text/x-python","patch_set":47,"id":"15e15862_237e9ea7","line":7663,"in_reply_to":"c3ffd89f_bc5777af","updated":"2025-11-07 15:35:55.000000000","message":"Gotcha, this makes sense.  If restore isn\u0027t supported for the original FlashCopy, I agree that you don\u0027t need to detect the pair type.","commit_id":"5759a570b0061d61497b50815bece4fd3bec2f0e"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"5cf70c96889ddc0e024c47b0570fef5e92fe7dca","unresolved":false,"context_lines":[{"line_number":7660,"context_line":"            LOG.debug(\u0027migrate_from_flashcopy is %s\u0027,"},{"line_number":7661,"context_line":"                      str(migrate_from_flashcopy))"},{"line_number":7662,"context_line":""},{"line_number":7663,"context_line":"            if migrate_from_flashcopy:"},{"line_number":7664,"context_line":"                # Extract snapshot ID from metadata"},{"line_number":7665,"context_line":"                snapshot_obj \u003d objects.Snapshot.get_by_id(context, snapshot.id)"},{"line_number":7666,"context_line":"                metadata_dict \u003d dict(snapshot_obj.get(\u0027metadata\u0027, {}))"}],"source_content_type":"text/x-python","patch_set":47,"id":"c3ffd89f_bc5777af","line":7663,"in_reply_to":"f5972027_b6c86a86","updated":"2025-11-07 07:38:54.000000000","message":"It is not possible for Cinder driver to check if the given snapshot is legacy or Flashcopy 2.0. Therefore the restore is aligned to the same flag condition that is used for snapshot creation.\n\nAlso for IBM Storwize backend, restore operations are not permitted from legacy FlashCopy snapshots if FlashCopy 2.0 snapshots exist for the associated volume. \n\nThis will be updated in the Doc patch.","commit_id":"5759a570b0061d61497b50815bece4fd3bec2f0e"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"66e50b85a0ee556775d3c9a1ae77e229e9e68323","unresolved":true,"context_lines":[{"line_number":182,"context_line":"                help\u003d\u0027Parameter to allow or prevent volumes with legacy \u0027"},{"line_number":183,"context_line":"                     \u0027FlashCopy mappings to be part of volume_group_enabled \u0027"},{"line_number":184,"context_line":"                     \u0027and temporary_volume_group_enabled groups.\u0027),"},{"line_number":185,"context_line":"    cfg.StrOpt(\u0027svc_snapshot_pool_name\u0027,"},{"line_number":186,"context_line":"               default\u003dNone,"},{"line_number":187,"context_line":"               help\u003d\u0027Name of the storage pool for volume/volumegroup \u0027"},{"line_number":188,"context_line":"                    \u0027snapshot creation.\u0027),"}],"source_content_type":"text/x-python","patch_set":60,"id":"935f3131_dbe11973","line":185,"updated":"2025-11-21 15:59:25.000000000","message":"for consistency why not including the storwize_ pefix as other configs?","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"ebb236e15087452f9ea44143d70627bb9032a6ed","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                help\u003d\u0027Parameter to allow or prevent volumes with legacy \u0027"},{"line_number":183,"context_line":"                     \u0027FlashCopy mappings to be part of volume_group_enabled \u0027"},{"line_number":184,"context_line":"                     \u0027and temporary_volume_group_enabled groups.\u0027),"},{"line_number":185,"context_line":"    cfg.StrOpt(\u0027svc_snapshot_pool_name\u0027,"},{"line_number":186,"context_line":"               default\u003dNone,"},{"line_number":187,"context_line":"               help\u003d\u0027Name of the storage pool for volume/volumegroup \u0027"},{"line_number":188,"context_line":"                    \u0027snapshot creation.\u0027),"}],"source_content_type":"text/x-python","patch_set":60,"id":"c6f04a8d_7b6d6950","line":185,"in_reply_to":"2598bd1d_36925091","updated":"2025-12-08 08:59:22.000000000","message":"Acknowledged","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"f0cc04edf74b066fc9252d49aa92873fbeb7befb","unresolved":true,"context_lines":[{"line_number":182,"context_line":"                help\u003d\u0027Parameter to allow or prevent volumes with legacy \u0027"},{"line_number":183,"context_line":"                     \u0027FlashCopy mappings to be part of volume_group_enabled \u0027"},{"line_number":184,"context_line":"                     \u0027and temporary_volume_group_enabled groups.\u0027),"},{"line_number":185,"context_line":"    cfg.StrOpt(\u0027svc_snapshot_pool_name\u0027,"},{"line_number":186,"context_line":"               default\u003dNone,"},{"line_number":187,"context_line":"               help\u003d\u0027Name of the storage pool for volume/volumegroup \u0027"},{"line_number":188,"context_line":"                    \u0027snapshot creation.\u0027),"}],"source_content_type":"text/x-python","patch_set":60,"id":"2598bd1d_36925091","line":185,"in_reply_to":"935f3131_dbe11973","updated":"2025-12-08 08:58:46.000000000","message":"We have changed our documentation guidelines from storwise to svc .[As per team]","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"66e50b85a0ee556775d3c9a1ae77e229e9e68323","unresolved":true,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"class StorwizeSSH(object):"},{"line_number":196,"context_line":"    \"\"\"SSH interface to IBM Storwize family and SVC storage systems.\"\"\""},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def __init__(self, run_ssh):"},{"line_number":199,"context_line":"        self._ssh \u003d run_ssh"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":60,"id":"bb6d2639_2841cebc","line":197,"updated":"2025-11-21 15:59:25.000000000","message":"I suggest avoiding adding newlines to unrelated code, as this can result in merge conflicts with older branches and make backporting more difficult.","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"f0cc04edf74b066fc9252d49aa92873fbeb7befb","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"class StorwizeSSH(object):"},{"line_number":196,"context_line":"    \"\"\"SSH interface to IBM Storwize family and SVC storage systems.\"\"\""},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def __init__(self, run_ssh):"},{"line_number":199,"context_line":"        self._ssh \u003d run_ssh"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":60,"id":"ac18a90a_ec489a81","line":197,"in_reply_to":"bb6d2639_2841cebc","updated":"2025-12-08 08:58:46.000000000","message":"Done","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"66e50b85a0ee556775d3c9a1ae77e229e9e68323","unresolved":true,"context_lines":[{"line_number":625,"context_line":"            ssh_cmd.extend([\u0027-snapshot\u0027, params[\"name\"], \u0027-volumegroup\u0027,"},{"line_number":626,"context_line":"                            params[\"volumegroup\"]])"},{"line_number":627,"context_line":"        try:"},{"line_number":628,"context_line":"            LOG.info(ssh_cmd)"},{"line_number":629,"context_line":"            out, err \u003d self._ssh(ssh_cmd, check_exit_code\u003dFalse)"},{"line_number":630,"context_line":"            if err or not out:"},{"line_number":631,"context_line":"                return None"}],"source_content_type":"text/x-python","patch_set":60,"id":"b46e251c_ebbddac3","line":628,"updated":"2025-11-21 15:59:25.000000000","message":"Shouldn\u0027t this be a DEBUG log?","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"d3a8a6f092898f245b0ab74eda0492a9d0dd7281","unresolved":false,"context_lines":[{"line_number":625,"context_line":"            ssh_cmd.extend([\u0027-snapshot\u0027, params[\"name\"], \u0027-volumegroup\u0027,"},{"line_number":626,"context_line":"                            params[\"volumegroup\"]])"},{"line_number":627,"context_line":"        try:"},{"line_number":628,"context_line":"            LOG.info(ssh_cmd)"},{"line_number":629,"context_line":"            out, err \u003d self._ssh(ssh_cmd, check_exit_code\u003dFalse)"},{"line_number":630,"context_line":"            if err or not out:"},{"line_number":631,"context_line":"                return None"}],"source_content_type":"text/x-python","patch_set":60,"id":"03b9a866_c5f4a16c","line":628,"in_reply_to":"b46e251c_ebbddac3","updated":"2026-01-07 16:32:19.000000000","message":"Done","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"66e50b85a0ee556775d3c9a1ae77e229e9e68323","unresolved":true,"context_lines":[{"line_number":646,"context_line":"        This function retrieves and returns a list of all snapshots"},{"line_number":647,"context_line":"        associated with the specified volume."},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"        Args:"},{"line_number":650,"context_line":"            self: An instance of the class."},{"line_number":651,"context_line":"            params (dict): A dictionary representing the volume for"},{"line_number":652,"context_line":"            which snapshots are to be listed."}],"source_content_type":"text/x-python","patch_set":60,"id":"39b78915_af1e3981","line":649,"updated":"2025-11-21 15:59:25.000000000","message":"For consistency, I suggest formatting this docstring with the standard reStructuredText. Other functions in this driver also use the same format.","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"d3a8a6f092898f245b0ab74eda0492a9d0dd7281","unresolved":false,"context_lines":[{"line_number":646,"context_line":"        This function retrieves and returns a list of all snapshots"},{"line_number":647,"context_line":"        associated with the specified volume."},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"        Args:"},{"line_number":650,"context_line":"            self: An instance of the class."},{"line_number":651,"context_line":"            params (dict): A dictionary representing the volume for"},{"line_number":652,"context_line":"            which snapshots are to be listed."}],"source_content_type":"text/x-python","patch_set":60,"id":"3e8e9b1e_a084fd3d","line":649,"in_reply_to":"39b78915_af1e3981","updated":"2026-01-07 16:32:19.000000000","message":"Done","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"66e50b85a0ee556775d3c9a1ae77e229e9e68323","unresolved":true,"context_lines":[{"line_number":668,"context_line":"            ssh_cmd.append(params[\"id\"])"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"        try:"},{"line_number":671,"context_line":"            LOG.info(ssh_cmd)"},{"line_number":672,"context_line":"            out, err \u003d self._ssh(ssh_cmd, check_exit_code\u003dFalse)"},{"line_number":673,"context_line":"            if not err:"},{"line_number":674,"context_line":"                if not out:"}],"source_content_type":"text/x-python","patch_set":60,"id":"f1e229a9_cd8bfe49","line":671,"updated":"2025-11-21 15:59:25.000000000","message":"Do you really need this log, or is it just for troubleshooting? If so I would suggest to add a debug message instead with LOG.DEBUG(). Also, add a reference to the function calling, so you know in the logs from where it was called.","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"d3a8a6f092898f245b0ab74eda0492a9d0dd7281","unresolved":false,"context_lines":[{"line_number":668,"context_line":"            ssh_cmd.append(params[\"id\"])"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"        try:"},{"line_number":671,"context_line":"            LOG.info(ssh_cmd)"},{"line_number":672,"context_line":"            out, err \u003d self._ssh(ssh_cmd, check_exit_code\u003dFalse)"},{"line_number":673,"context_line":"            if not err:"},{"line_number":674,"context_line":"                if not out:"}],"source_content_type":"text/x-python","patch_set":60,"id":"95037b55_a575d88e","line":671,"in_reply_to":"f1e229a9_cd8bfe49","updated":"2026-01-07 16:32:19.000000000","message":"Done","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"66e50b85a0ee556775d3c9a1ae77e229e9e68323","unresolved":true,"context_lines":[{"line_number":694,"context_line":"            params (dict): A dictionary representing the volume(s)/"},{"line_number":695,"context_line":"            volumegroup and other parameters."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"        Returns:"},{"line_number":698,"context_line":"            dict: SVC snapshot id"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"        Raises:"}],"source_content_type":"text/x-python","patch_set":60,"id":"75e66bff_9546ab67","line":697,"updated":"2025-11-21 15:59:25.000000000","message":"For consistency prefer reStructuredText as used in other parts of this file.","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"d3a8a6f092898f245b0ab74eda0492a9d0dd7281","unresolved":false,"context_lines":[{"line_number":694,"context_line":"            params (dict): A dictionary representing the volume(s)/"},{"line_number":695,"context_line":"            volumegroup and other parameters."},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"        Returns:"},{"line_number":698,"context_line":"            dict: SVC snapshot id"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"        Raises:"}],"source_content_type":"text/x-python","patch_set":60,"id":"5085db1c_91dff52c","line":697,"in_reply_to":"75e66bff_9546ab67","updated":"2026-01-07 16:32:19.000000000","message":"Done","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"66e50b85a0ee556775d3c9a1ae77e229e9e68323","unresolved":true,"context_lines":[{"line_number":736,"context_line":"            ssh_cmd.extend([\u0027-snapshot\u0027, params[\"name\"], \u0027-volumegroup\u0027,"},{"line_number":737,"context_line":"                            params[\"volumegroup\"]])"},{"line_number":738,"context_line":"        try:"},{"line_number":739,"context_line":"            LOG.info(ssh_cmd)"},{"line_number":740,"context_line":"            self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":741,"context_line":"        except Exception as ex:"},{"line_number":742,"context_line":"            msg \u003d (_(\u0027Failed to run rmsnapshot. \u0027"}],"source_content_type":"text/x-python","patch_set":60,"id":"27b3c598_22e62dc7","line":739,"updated":"2025-11-21 15:59:25.000000000","message":"Do you really need this log, or is it just for troubleshooting? If so, I would suggest adding a debug message instead with LOG.DEBUG(). Also, add a reference to the function calling, so you know in the logs from where it was called.","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"d3a8a6f092898f245b0ab74eda0492a9d0dd7281","unresolved":false,"context_lines":[{"line_number":736,"context_line":"            ssh_cmd.extend([\u0027-snapshot\u0027, params[\"name\"], \u0027-volumegroup\u0027,"},{"line_number":737,"context_line":"                            params[\"volumegroup\"]])"},{"line_number":738,"context_line":"        try:"},{"line_number":739,"context_line":"            LOG.info(ssh_cmd)"},{"line_number":740,"context_line":"            self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":741,"context_line":"        except Exception as ex:"},{"line_number":742,"context_line":"            msg \u003d (_(\u0027Failed to run rmsnapshot. \u0027"}],"source_content_type":"text/x-python","patch_set":60,"id":"c976c1d5_d2a3f1f6","line":739,"in_reply_to":"27b3c598_22e62dc7","updated":"2026-01-07 16:32:19.000000000","message":"Done","commit_id":"d9629747cd1eaa7ffc620c53fb15fa89ee458df7"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"10093c91a0e2d883a13ab8dd94291410f0981c95","unresolved":true,"context_lines":[{"line_number":727,"context_line":"            ssh_cmd.extend([\u0027-snapshot\u0027, params[\"name\"], \u0027-volumegroup\u0027,"},{"line_number":728,"context_line":"                            params[\"volumegroup\"]])"},{"line_number":729,"context_line":"        try:"},{"line_number":730,"context_line":"            LOG.DEBUG(ssh_cmd)"},{"line_number":731,"context_line":"            self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":732,"context_line":"        except Exception as ex:"},{"line_number":733,"context_line":"            msg \u003d (_(\u0027Failed to run rmsnapshot. \u0027"}],"source_content_type":"text/x-python","patch_set":70,"id":"03a347f4_8dab6665","line":730,"range":{"start_line":730,"start_character":12,"end_line":730,"end_character":30},"updated":"2026-01-12 10:45:41.000000000","message":"This should be LOG.debug(ssh_cmd)\nSame applies to other places where LOG.DEBUG is added.","commit_id":"239e14846072f9b5e03052e1f65e55e80ddcbd8e"},{"author":{"_account_id":37470,"name":"Dakshina Purohit","display_name":"Dakshina","email":"Dakshina.Purohit@ibm.com","username":"dakshina"},"change_message_id":"19838e7031bd2371c62bf4dea6c69bab81bbd567","unresolved":false,"context_lines":[{"line_number":727,"context_line":"            ssh_cmd.extend([\u0027-snapshot\u0027, params[\"name\"], \u0027-volumegroup\u0027,"},{"line_number":728,"context_line":"                            params[\"volumegroup\"]])"},{"line_number":729,"context_line":"        try:"},{"line_number":730,"context_line":"            LOG.DEBUG(ssh_cmd)"},{"line_number":731,"context_line":"            self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":732,"context_line":"        except Exception as ex:"},{"line_number":733,"context_line":"            msg \u003d (_(\u0027Failed to run rmsnapshot. \u0027"}],"source_content_type":"text/x-python","patch_set":70,"id":"3662c926_aeba2916","line":730,"range":{"start_line":730,"start_character":12,"end_line":730,"end_character":30},"in_reply_to":"03a347f4_8dab6665","updated":"2026-01-14 07:55:54.000000000","message":"Done","commit_id":"239e14846072f9b5e03052e1f65e55e80ddcbd8e"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"72e33a574e0836c123ecd5e2f038c80b70189f02","unresolved":true,"context_lines":[{"line_number":4730,"context_line":"                               if source_vol[\u0027provider_id\u0027]"},{"line_number":4731,"context_line":"                               else source_vol[\u0027name\u0027])"},{"line_number":4732,"context_line":"        except Exception as e:"},{"line_number":4733,"context_line":"            msg \u003d _(\u0027create_snapshot: get source volume failed. %s\u0027), str(e)"},{"line_number":4734,"context_line":"            LOG.error(msg)"},{"line_number":4735,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":4736,"context_line":""}],"source_content_type":"text/x-python","patch_set":81,"id":"8ce3190b_8cda1c00","line":4733,"updated":"2026-02-20 16:04:10.000000000","message":"comma makes this a TUPLE","commit_id":"470c4cdb6febf02f9df224137c0a0775939f702e"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"411245a71d87677443f2227b268a52e6f37b9ca8","unresolved":false,"context_lines":[{"line_number":4730,"context_line":"                               if source_vol[\u0027provider_id\u0027]"},{"line_number":4731,"context_line":"                               else source_vol[\u0027name\u0027])"},{"line_number":4732,"context_line":"        except Exception as e:"},{"line_number":4733,"context_line":"            msg \u003d _(\u0027create_snapshot: get source volume failed. %s\u0027), str(e)"},{"line_number":4734,"context_line":"            LOG.error(msg)"},{"line_number":4735,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":4736,"context_line":""}],"source_content_type":"text/x-python","patch_set":81,"id":"3eeb7271_430e1451","line":4733,"in_reply_to":"8ce3190b_8cda1c00","updated":"2026-02-23 08:28:06.000000000","message":"Done","commit_id":"470c4cdb6febf02f9df224137c0a0775939f702e"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"72e33a574e0836c123ecd5e2f038c80b70189f02","unresolved":true,"context_lines":[{"line_number":4784,"context_line":"            # check if snapshot exists"},{"line_number":4785,"context_line":"            if not self.is_volume_snapshot_exists(params):"},{"line_number":4786,"context_line":"                msg \u003d f\u0027delete_snapshot: volume snapshot {snapshot.id}\u0027"},{"line_number":4787,"context_line":"                \u0027does not exist\u0027"},{"line_number":4788,"context_line":"                LOG.error(msg)"},{"line_number":4789,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":4790,"context_line":""}],"source_content_type":"text/x-python","patch_set":81,"id":"612a9793_a267bac6","line":4787,"updated":"2026-02-20 16:04:10.000000000","message":"standalone string literal, does nothing","commit_id":"470c4cdb6febf02f9df224137c0a0775939f702e"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"411245a71d87677443f2227b268a52e6f37b9ca8","unresolved":false,"context_lines":[{"line_number":4784,"context_line":"            # check if snapshot exists"},{"line_number":4785,"context_line":"            if not self.is_volume_snapshot_exists(params):"},{"line_number":4786,"context_line":"                msg \u003d f\u0027delete_snapshot: volume snapshot {snapshot.id}\u0027"},{"line_number":4787,"context_line":"                \u0027does not exist\u0027"},{"line_number":4788,"context_line":"                LOG.error(msg)"},{"line_number":4789,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":4790,"context_line":""}],"source_content_type":"text/x-python","patch_set":81,"id":"0eb2d2fe_ba70c237","line":4787,"in_reply_to":"612a9793_a267bac6","updated":"2026-02-23 08:28:06.000000000","message":"Done","commit_id":"470c4cdb6febf02f9df224137c0a0775939f702e"}]}
