)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"479315e4858c9820038f078e4e32968a07858da5","unresolved":true,"context_lines":[{"line_number":10,"context_line":"added support for clone of a volumegroup. Clone operation can be"},{"line_number":11,"context_line":"performed using source-volumegroup or snapshot of a source-"},{"line_number":12,"context_line":"volumegroup. As the clone volume name is different on the backend"},{"line_number":13,"context_line":"than the cinder object, used a decorator to map the name to"},{"line_number":14,"context_line":"provider name."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements: blueprint ibm-svf-volumegroup"},{"line_number":17,"context_line":"Change-Id: Icdc4e00b09df8895ee67be06a9461b0b22f15dd4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"13ddfdb8_5490688c","line":14,"range":{"start_line":13,"start_character":24,"end_line":14,"end_character":13},"updated":"2026-06-08 10:16:34.000000000","message":"no longer using decorator.","commit_id":"d126773ab62a2746786dea5cf7aef12a81799e53"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"e78e5b7fe06fed19e0bb5b8dd103d048aeab567f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"added support for clone of a volumegroup. Clone operation can be"},{"line_number":11,"context_line":"performed using source-volumegroup or snapshot of a source-"},{"line_number":12,"context_line":"volumegroup. As the clone volume name is different on the backend"},{"line_number":13,"context_line":"than the cinder object, used a decorator to map the name to"},{"line_number":14,"context_line":"provider name."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements: blueprint ibm-svf-volumegroup"},{"line_number":17,"context_line":"Change-Id: Icdc4e00b09df8895ee67be06a9461b0b22f15dd4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"33bfc8e9_b97ffdec","line":14,"range":{"start_line":13,"start_character":24,"end_line":14,"end_character":13},"in_reply_to":"13ddfdb8_5490688c","updated":"2026-06-12 12:15:06.000000000","message":"Done","commit_id":"d126773ab62a2746786dea5cf7aef12a81799e53"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"0de1c11c675e091a697a3708f9c9e053a9762815","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"be60f4ec_3e39505e","updated":"2026-03-30 08:04:06.000000000","message":"Receiving the following error on patch 938771:\nremote: ERROR: Change 938771 may not exceed 1000 updates. It may still be abandoned, submitted and you can add/remove reviewers to/from the attention-set. To continue working on this change, recreate it with a new Change-Id, then abandon this one.\n\nHence created this new patch 982617 in continuation.\n\n\nAbandoning the old one: 938771: [IBM SVf Driver] Added support of clone operation for volumegroup | https://review.opendev.org/c/openstack/cinder/+/938771\n\n@silvan@quobyte.com Could you please put your comment from the previous patch to this one?","commit_id":"e09e5d2846c6914e09a433dc8048b2c3c737b275"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"1dcd26e2d049063d1037ee7b9807193776a932ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"cbc58c24_cc6ad262","updated":"2026-05-05 11:39:10.000000000","message":"The patch has been updated with following changes:\nReverted decorator approach\nError handling\nMock tests addition","commit_id":"7964a557894f31d8c95817c0e3e34ad05409ee43"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_common.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"d52c4c12b79b29f1b0d5262b8827e5263fece101","unresolved":true,"context_lines":[{"line_number":1030,"context_line":"            # Save the original name and assign the getter method for \u0027name\u0027"},{"line_number":1031,"context_line":"            volume._original_name \u003d original_name  # Save the original name"},{"line_number":1032,"context_line":"            volume._get_name \u003d get_name"},{"line_number":1033,"context_line":"            volume.__class__.name \u003d property(get_name)"},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"    def volume_name_decorator(arg_name):"},{"line_number":1036,"context_line":"        \"\"\"Decorator factory to wrap a specific argument containing"}],"source_content_type":"text/x-python","patch_set":5,"id":"9304cd64_e7685dea","line":1033,"updated":"2026-04-07 10:04:55.000000000","message":"replaces the name property on the Volume class itself — not just on the single instance. Since volume.__class__ is cinder.objects.volume.Volume, this overwrites the name property for every Volume OVO instance in the entire process, not just the one being decorated.","commit_id":"c96e1b49a76a1e61d307a23ab9cd9117225e483d"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"1dcd26e2d049063d1037ee7b9807193776a932ad","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"            # Save the original name and assign the getter method for \u0027name\u0027"},{"line_number":1031,"context_line":"            volume._original_name \u003d original_name  # Save the original name"},{"line_number":1032,"context_line":"            volume._get_name \u003d get_name"},{"line_number":1033,"context_line":"            volume.__class__.name \u003d property(get_name)"},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"    def volume_name_decorator(arg_name):"},{"line_number":1036,"context_line":"        \"\"\"Decorator factory to wrap a specific argument containing"}],"source_content_type":"text/x-python","patch_set":5,"id":"9c94e018_0c7fe2ff","line":1033,"in_reply_to":"9304cd64_e7685dea","updated":"2026-05-05 11:39:10.000000000","message":"Done","commit_id":"c96e1b49a76a1e61d307a23ab9cd9117225e483d"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"d52c4c12b79b29f1b0d5262b8827e5263fece101","unresolved":true,"context_lines":[{"line_number":1032,"context_line":"            volume._get_name \u003d get_name"},{"line_number":1033,"context_line":"            volume.__class__.name \u003d property(get_name)"},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"    def volume_name_decorator(arg_name):"},{"line_number":1036,"context_line":"        \"\"\"Decorator factory to wrap a specific argument containing"},{"line_number":1037,"context_line":""},{"line_number":1038,"context_line":"        volume objects."}],"source_content_type":"text/x-python","patch_set":5,"id":"7c9fb886_8d8c01dd","line":1035,"updated":"2026-04-07 10:04:55.000000000","message":"decorator never restores the original name property or _modified_name attributes after function execution. There is no finally block to undo the wrapping. If the decorated function raises an exception, the volume objects remain permanently modified.","commit_id":"c96e1b49a76a1e61d307a23ab9cd9117225e483d"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"1dcd26e2d049063d1037ee7b9807193776a932ad","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"            volume._get_name \u003d get_name"},{"line_number":1033,"context_line":"            volume.__class__.name \u003d property(get_name)"},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"    def volume_name_decorator(arg_name):"},{"line_number":1036,"context_line":"        \"\"\"Decorator factory to wrap a specific argument containing"},{"line_number":1037,"context_line":""},{"line_number":1038,"context_line":"        volume objects."}],"source_content_type":"text/x-python","patch_set":5,"id":"13a9379d_0e69f7d4","line":1035,"in_reply_to":"7c9fb886_8d8c01dd","updated":"2026-05-05 11:39:10.000000000","message":"Done","commit_id":"c96e1b49a76a1e61d307a23ab9cd9117225e483d"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"d52c4c12b79b29f1b0d5262b8827e5263fece101","unresolved":true,"context_lines":[{"line_number":3334,"context_line":"        \"\"\"Check if volumegroup snapshot exists.\"\"\""},{"line_number":3335,"context_line":""},{"line_number":3336,"context_line":"        attrs \u003d self.ssh.lsvolumegroupsnapshot(params)"},{"line_number":3337,"context_line":"        return attrs[0] is not None"},{"line_number":3338,"context_line":""},{"line_number":3339,"context_line":"    def delete_volumegroup_snapshot(self, group_snapshot, snapshots,"},{"line_number":3340,"context_line":"                                    group_type):"}],"source_content_type":"text/x-python","patch_set":5,"id":"489902aa_9183c639","line":3337,"updated":"2026-04-07 10:04:55.000000000","message":"type error is possible length check is important before None check","commit_id":"c96e1b49a76a1e61d307a23ab9cd9117225e483d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"161e9bddec6738d3d5256c61a9f3a77c24946348","unresolved":true,"context_lines":[{"line_number":3334,"context_line":"        \"\"\"Check if volumegroup snapshot exists.\"\"\""},{"line_number":3335,"context_line":""},{"line_number":3336,"context_line":"        attrs \u003d self.ssh.lsvolumegroupsnapshot(params)"},{"line_number":3337,"context_line":"        return attrs[0] is not None"},{"line_number":3338,"context_line":""},{"line_number":3339,"context_line":"    def delete_volumegroup_snapshot(self, group_snapshot, snapshots,"},{"line_number":3340,"context_line":"                                    group_type):"}],"source_content_type":"text/x-python","patch_set":5,"id":"6d71203b_c52c0f04","line":3337,"in_reply_to":"489902aa_9183c639","updated":"2026-04-27 18:20:19.000000000","message":"I agree, I don\u0027t understand this change, since lsvolumegroupsnapshot() could return an empty list?","commit_id":"c96e1b49a76a1e61d307a23ab9cd9117225e483d"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"1dcd26e2d049063d1037ee7b9807193776a932ad","unresolved":false,"context_lines":[{"line_number":3334,"context_line":"        \"\"\"Check if volumegroup snapshot exists.\"\"\""},{"line_number":3335,"context_line":""},{"line_number":3336,"context_line":"        attrs \u003d self.ssh.lsvolumegroupsnapshot(params)"},{"line_number":3337,"context_line":"        return attrs[0] is not None"},{"line_number":3338,"context_line":""},{"line_number":3339,"context_line":"    def delete_volumegroup_snapshot(self, group_snapshot, snapshots,"},{"line_number":3340,"context_line":"                                    group_type):"}],"source_content_type":"text/x-python","patch_set":5,"id":"8487628d_2470b630","line":3337,"in_reply_to":"6d71203b_c52c0f04","updated":"2026-05-05 11:39:10.000000000","message":"Done","commit_id":"c96e1b49a76a1e61d307a23ab9cd9117225e483d"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b439d8504d422d206319ae5e54d609bcbe5bbf4e","unresolved":true,"context_lines":[{"line_number":572,"context_line":"        if volumegroup_snapshot_svc_id:"},{"line_number":573,"context_line":"            if clone_type:"},{"line_number":574,"context_line":"                ssh_cmd.extend([\u0027-type\u0027, clone_type, \u0027-fromsnapshotid\u0027,"},{"line_number":575,"context_line":"                                volumegroup_snapshot_svc_id])"},{"line_number":576,"context_line":"            else:"},{"line_number":577,"context_line":"                ssh_cmd.extend([\u0027-type\u0027, \u0027clone\u0027, \u0027-fromsnapshotid\u0027,"},{"line_number":578,"context_line":"                                volumegroup_snapshot_svc_id])"}],"source_content_type":"text/x-python","patch_set":12,"id":"353372c9_4819d391","line":575,"updated":"2026-05-05 21:02:46.000000000","message":"This new addition isn\u0027t covered by unit tests, any chance of adding a test for when \"clone_type\" is passed?\n\nhttps://d60a0b31f718833bb740-43320acd00026c27d441db253a37fde1.ssl.cf5.rackcdn.com/openstack/a263fc52ea454aa69f1f39717f5dcad8/cover/z_da174c6a0dd05faf_storwize_svc_common_py.html","commit_id":"7964a557894f31d8c95817c0e3e34ad05409ee43"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"7cd3998f58d4b7465876799e47ad765aa19b7e0f","unresolved":false,"context_lines":[{"line_number":572,"context_line":"        if volumegroup_snapshot_svc_id:"},{"line_number":573,"context_line":"            if clone_type:"},{"line_number":574,"context_line":"                ssh_cmd.extend([\u0027-type\u0027, clone_type, \u0027-fromsnapshotid\u0027,"},{"line_number":575,"context_line":"                                volumegroup_snapshot_svc_id])"},{"line_number":576,"context_line":"            else:"},{"line_number":577,"context_line":"                ssh_cmd.extend([\u0027-type\u0027, \u0027clone\u0027, \u0027-fromsnapshotid\u0027,"},{"line_number":578,"context_line":"                                volumegroup_snapshot_svc_id])"}],"source_content_type":"text/x-python","patch_set":12,"id":"694bd4cf_a7af71e9","line":575,"in_reply_to":"353372c9_4819d391","updated":"2026-05-06 10:17:56.000000000","message":"Added UT for clone_type","commit_id":"7964a557894f31d8c95817c0e3e34ad05409ee43"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"479315e4858c9820038f078e4e32968a07858da5","unresolved":true,"context_lines":[{"line_number":2519,"context_line":"                if not snapshot_id:"},{"line_number":2520,"context_line":"                    raise exception.InvalidInput("},{"line_number":2521,"context_line":"                        reason\u003d_(\"Snapshot is missing \""},{"line_number":2522,"context_line":"                                \"svc_volumegroup_snapshot_id metadata\"))"},{"line_number":2523,"context_line":""},{"line_number":2524,"context_line":"                source_volumegroup_snapshot_svc_id \u003d snapshot_id"},{"line_number":2525,"context_line":"                list_of_source_volumes \u003d (["}],"source_content_type":"text/x-python","patch_set":14,"id":"960dc89a_15e2598b","line":2522,"range":{"start_line":2522,"start_character":32,"end_line":2522,"end_character":72},"updated":"2026-06-08 10:16:34.000000000","message":"under-indented","commit_id":"d126773ab62a2746786dea5cf7aef12a81799e53"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"e78e5b7fe06fed19e0bb5b8dd103d048aeab567f","unresolved":false,"context_lines":[{"line_number":2519,"context_line":"                if not snapshot_id:"},{"line_number":2520,"context_line":"                    raise exception.InvalidInput("},{"line_number":2521,"context_line":"                        reason\u003d_(\"Snapshot is missing \""},{"line_number":2522,"context_line":"                                \"svc_volumegroup_snapshot_id metadata\"))"},{"line_number":2523,"context_line":""},{"line_number":2524,"context_line":"                source_volumegroup_snapshot_svc_id \u003d snapshot_id"},{"line_number":2525,"context_line":"                list_of_source_volumes \u003d (["}],"source_content_type":"text/x-python","patch_set":14,"id":"68763158_7fc18f5c","line":2522,"range":{"start_line":2522,"start_character":32,"end_line":2522,"end_character":72},"in_reply_to":"960dc89a_15e2598b","updated":"2026-06-12 12:15:06.000000000","message":"Done","commit_id":"d126773ab62a2746786dea5cf7aef12a81799e53"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"479315e4858c9820038f078e4e32968a07858da5","unresolved":true,"context_lines":[{"line_number":2502,"context_line":"            # If the clone-volume-group is created using"},{"line_number":2503,"context_line":"            # source-volume-group-snapshot"},{"line_number":2504,"context_line":"            if group_snapshot and snapshots:"},{"line_number":2505,"context_line":"                # Validate snapshots list is not empty"},{"line_number":2506,"context_line":"                if not snapshots:"},{"line_number":2507,"context_line":"                    raise exception.InvalidInput("},{"line_number":2508,"context_line":"                        reason\u003d_(\"No snapshots provided for group clone\"))"},{"line_number":2509,"context_line":""},{"line_number":2510,"context_line":"                # Validate snapshot metadata exists"},{"line_number":2511,"context_line":"                snapshot \u003d snapshots[0]"}],"source_content_type":"text/x-python","patch_set":15,"id":"67fa9d43_a7452335","line":2508,"range":{"start_line":2505,"start_character":16,"end_line":2508,"end_character":74},"updated":"2026-06-08 10:16:34.000000000","message":"This check is not needed because whether snapshots exist or not is already check in line 2504.","commit_id":"210eb860baae6eb7afb4d10549a79ba86cbc23db"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"e78e5b7fe06fed19e0bb5b8dd103d048aeab567f","unresolved":false,"context_lines":[{"line_number":2502,"context_line":"            # If the clone-volume-group is created using"},{"line_number":2503,"context_line":"            # source-volume-group-snapshot"},{"line_number":2504,"context_line":"            if group_snapshot and snapshots:"},{"line_number":2505,"context_line":"                # Validate snapshots list is not empty"},{"line_number":2506,"context_line":"                if not snapshots:"},{"line_number":2507,"context_line":"                    raise exception.InvalidInput("},{"line_number":2508,"context_line":"                        reason\u003d_(\"No snapshots provided for group clone\"))"},{"line_number":2509,"context_line":""},{"line_number":2510,"context_line":"                # Validate snapshot metadata exists"},{"line_number":2511,"context_line":"                snapshot \u003d snapshots[0]"}],"source_content_type":"text/x-python","patch_set":15,"id":"569065f6_d73e8689","line":2508,"range":{"start_line":2505,"start_character":16,"end_line":2508,"end_character":74},"in_reply_to":"67fa9d43_a7452335","updated":"2026-06-12 12:15:06.000000000","message":"Done","commit_id":"210eb860baae6eb7afb4d10549a79ba86cbc23db"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"479315e4858c9820038f078e4e32968a07858da5","unresolved":true,"context_lines":[{"line_number":2523,"context_line":""},{"line_number":2524,"context_line":"                source_volumegroup_snapshot_svc_id \u003d snapshot_id"},{"line_number":2525,"context_line":"                list_of_source_volumes \u003d (["},{"line_number":2526,"context_line":"                    str(snapshot.volume.name) for snapshot in snapshots])"},{"line_number":2527,"context_line":""},{"line_number":2528,"context_line":"            # If the clone-group is created using source-group"},{"line_number":2529,"context_line":"            elif source_group and source_vols:"}],"source_content_type":"text/x-python","patch_set":15,"id":"863f6e65_d7571f79","line":2526,"range":{"start_line":2526,"start_character":20,"end_line":2526,"end_character":45},"updated":"2026-06-08 10:16:34.000000000","message":"This should be replaced with get_volume_name(). In case of create clone of a vg which is already a clone this may fail/ be inconsistent.","commit_id":"210eb860baae6eb7afb4d10549a79ba86cbc23db"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"e78e5b7fe06fed19e0bb5b8dd103d048aeab567f","unresolved":false,"context_lines":[{"line_number":2523,"context_line":""},{"line_number":2524,"context_line":"                source_volumegroup_snapshot_svc_id \u003d snapshot_id"},{"line_number":2525,"context_line":"                list_of_source_volumes \u003d (["},{"line_number":2526,"context_line":"                    str(snapshot.volume.name) for snapshot in snapshots])"},{"line_number":2527,"context_line":""},{"line_number":2528,"context_line":"            # If the clone-group is created using source-group"},{"line_number":2529,"context_line":"            elif source_group and source_vols:"}],"source_content_type":"text/x-python","patch_set":15,"id":"75ab5ee2_f791b31b","line":2526,"range":{"start_line":2526,"start_character":20,"end_line":2526,"end_character":45},"in_reply_to":"863f6e65_d7571f79","updated":"2026-06-12 12:15:06.000000000","message":"Done","commit_id":"210eb860baae6eb7afb4d10549a79ba86cbc23db"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"479315e4858c9820038f078e4e32968a07858da5","unresolved":true,"context_lines":[{"line_number":2531,"context_line":"                    source_group.id)"},{"line_number":2532,"context_line":""},{"line_number":2533,"context_line":"                list_of_source_volumes \u003d ("},{"line_number":2534,"context_line":"                    [str(volume.name) for volume in source_vols])"},{"line_number":2535,"context_line":""},{"line_number":2536,"context_line":"                # For this we will create a snapshot which will automatically"},{"line_number":2537,"context_line":"                # get deleted after the clone is completed."}],"source_content_type":"text/x-python","patch_set":15,"id":"1b68be89_c0d69b86","line":2534,"range":{"start_line":2534,"start_character":21,"end_line":2534,"end_character":37},"updated":"2026-06-08 10:16:34.000000000","message":"This should be replaced with get_volume_name(). In case of create clone of a vg which is already a clone this may fail/ be inconsistent.","commit_id":"210eb860baae6eb7afb4d10549a79ba86cbc23db"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"e78e5b7fe06fed19e0bb5b8dd103d048aeab567f","unresolved":false,"context_lines":[{"line_number":2531,"context_line":"                    source_group.id)"},{"line_number":2532,"context_line":""},{"line_number":2533,"context_line":"                list_of_source_volumes \u003d ("},{"line_number":2534,"context_line":"                    [str(volume.name) for volume in source_vols])"},{"line_number":2535,"context_line":""},{"line_number":2536,"context_line":"                # For this we will create a snapshot which will automatically"},{"line_number":2537,"context_line":"                # get deleted after the clone is completed."}],"source_content_type":"text/x-python","patch_set":15,"id":"033d8fa7_656021c1","line":2534,"range":{"start_line":2534,"start_character":21,"end_line":2534,"end_character":37},"in_reply_to":"1b68be89_c0d69b86","updated":"2026-06-12 12:15:06.000000000","message":"Done","commit_id":"210eb860baae6eb7afb4d10549a79ba86cbc23db"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"479315e4858c9820038f078e4e32968a07858da5","unresolved":true,"context_lines":[{"line_number":7847,"context_line":"        added_vols \u003d []"},{"line_number":7848,"context_line":"        if not migrate_from_flashcopy:"},{"line_number":7849,"context_line":"            for volume in add_volumes:"},{"line_number":7850,"context_line":"                vol_name \u003d volume.name"},{"line_number":7851,"context_line":"                try:"},{"line_number":7852,"context_line":"                    if self._helpers._get_vdisk_fc_mappings(volume.name):"},{"line_number":7853,"context_line":"                        reason \u003d (_(\"Adding volume %(vol)s failed because \""}],"source_content_type":"text/x-python","patch_set":15,"id":"9fb4e415_16bdd7bd","line":7850,"range":{"start_line":7850,"start_character":16,"end_line":7850,"end_character":38},"updated":"2026-06-08 10:16:34.000000000","message":"Use get_volume_name.","commit_id":"210eb860baae6eb7afb4d10549a79ba86cbc23db"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"e78e5b7fe06fed19e0bb5b8dd103d048aeab567f","unresolved":false,"context_lines":[{"line_number":7847,"context_line":"        added_vols \u003d []"},{"line_number":7848,"context_line":"        if not migrate_from_flashcopy:"},{"line_number":7849,"context_line":"            for volume in add_volumes:"},{"line_number":7850,"context_line":"                vol_name \u003d volume.name"},{"line_number":7851,"context_line":"                try:"},{"line_number":7852,"context_line":"                    if self._helpers._get_vdisk_fc_mappings(volume.name):"},{"line_number":7853,"context_line":"                        reason \u003d (_(\"Adding volume %(vol)s failed because \""}],"source_content_type":"text/x-python","patch_set":15,"id":"49dec3e9_3ecbe3f4","line":7850,"range":{"start_line":7850,"start_character":16,"end_line":7850,"end_character":38},"in_reply_to":"9fb4e415_16bdd7bd","updated":"2026-06-12 12:15:06.000000000","message":"Done","commit_id":"210eb860baae6eb7afb4d10549a79ba86cbc23db"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"479315e4858c9820038f078e4e32968a07858da5","unresolved":true,"context_lines":[{"line_number":7905,"context_line":"        if not migrate_from_flashcopy:"},{"line_number":7906,"context_line":"            for volume in add_volumes:"},{"line_number":7907,"context_line":"                try:"},{"line_number":7908,"context_line":"                    if self._helpers._get_vdisk_fc_mappings(volume.name):"},{"line_number":7909,"context_line":"                        reason \u003d (_(\"Adding volume %(vol)s failed because \""},{"line_number":7910,"context_line":"                                    \"it has legacy FlashCopy mappings and \""},{"line_number":7911,"context_line":"                                    \"migrate_from_flashcopy flag is set to \""}],"source_content_type":"text/x-python","patch_set":15,"id":"039082df_2e3ff92a","line":7908,"range":{"start_line":7908,"start_character":60,"end_line":7908,"end_character":71},"updated":"2026-06-08 10:16:34.000000000","message":"Use get_volume_name.","commit_id":"210eb860baae6eb7afb4d10549a79ba86cbc23db"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"e78e5b7fe06fed19e0bb5b8dd103d048aeab567f","unresolved":false,"context_lines":[{"line_number":7905,"context_line":"        if not migrate_from_flashcopy:"},{"line_number":7906,"context_line":"            for volume in add_volumes:"},{"line_number":7907,"context_line":"                try:"},{"line_number":7908,"context_line":"                    if self._helpers._get_vdisk_fc_mappings(volume.name):"},{"line_number":7909,"context_line":"                        reason \u003d (_(\"Adding volume %(vol)s failed because \""},{"line_number":7910,"context_line":"                                    \"it has legacy FlashCopy mappings and \""},{"line_number":7911,"context_line":"                                    \"migrate_from_flashcopy flag is set to \""}],"source_content_type":"text/x-python","patch_set":15,"id":"d1b31354_851532d2","line":7908,"range":{"start_line":7908,"start_character":60,"end_line":7908,"end_character":71},"in_reply_to":"039082df_2e3ff92a","updated":"2026-06-12 12:15:06.000000000","message":"Done","commit_id":"210eb860baae6eb7afb4d10549a79ba86cbc23db"},{"author":{"_account_id":37888,"name":"Akshay Ranade","display_name":"Akshay Ranade","email":"akshay.ranade@ibm.com","username":"rakshay"},"change_message_id":"38601bc6ddd90ae8b0529765cfe2fc80e2898bda","unresolved":true,"context_lines":[{"line_number":2548,"context_line":"                params[\u0027retentionminutes\u0027] \u003d str("},{"line_number":2549,"context_line":"                    TEMP_VG_SNAPSHOT_RETENTION_MINUTES)"},{"line_number":2550,"context_line":""},{"line_number":2551,"context_line":"                source_volumegroup_snapshot_svc_id \u003d self.ssh.addsnapshot("},{"line_number":2552,"context_line":"                    params)"},{"line_number":2553,"context_line":""},{"line_number":2554,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":17,"id":"36696a1a_11f95564","line":2551,"updated":"2026-06-25 06:18:29.000000000","message":"with say 1000 group clone requests, will this create those many stale snapshots for the time period of TEMP_VG_SNAPSHOT_RETENTION_MINUTES? if yes, can we force backend to cleanup early in happy paths and leverage that for failure cases as well?","commit_id":"e108200cc249faeb302e6197a27cfee1f2466804"},{"author":{"_account_id":37888,"name":"Akshay Ranade","display_name":"Akshay Ranade","email":"akshay.ranade@ibm.com","username":"rakshay"},"change_message_id":"38601bc6ddd90ae8b0529765cfe2fc80e2898bda","unresolved":true,"context_lines":[{"line_number":2610,"context_line":"                context, cinder_clone_volumes, group[\u0027id\u0027],"},{"line_number":2611,"context_line":"                model_update[\u0027status\u0027])"},{"line_number":2612,"context_line":""},{"line_number":2613,"context_line":"        except exception.VolumeBackendAPIException as err:"},{"line_number":2614,"context_line":"            model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":2615,"context_line":"            volumes_model_update \u003d self._get_volume_model_updates("},{"line_number":2616,"context_line":"                context, cinder_clone_volumes, group[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"243663b8_88d1eaa6","line":2613,"updated":"2026-06-25 06:18:29.000000000","message":"while we are safeguarding backend exception here, for the generic exceptions we tend to leave dangling resources on backend especially after addsnapshot call.\nplease add that block and perform rollback based on some flag.","commit_id":"e108200cc249faeb302e6197a27cfee1f2466804"}]}
