)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"faac7557feec379c21fd0d9d93eda0d4d3d1e25c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":62,"id":"babb4839_2daf62d0","updated":"2025-08-05 06:38:18.000000000","message":"LGTM","commit_id":"39532c1d8815c098a80afe1e97666fef25e18dac"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"53aeee69a46325a4a25edbe1fe0aa3cbef528f79","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":62,"id":"a048c9b3_99d857b6","updated":"2025-07-28 09:44:07.000000000","message":"run-IBM-CI","commit_id":"39532c1d8815c098a80afe1e97666fef25e18dac"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"991f72f6a02c4a420d2f8a3306b3964d281a8f5d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":62,"id":"b9dfe7e9_07317647","updated":"2025-07-28 13:40:04.000000000","message":"run-IBM-CI","commit_id":"39532c1d8815c098a80afe1e97666fef25e18dac"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"b738ec2be7242435b27aac72a07802419ad4b1a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":67,"id":"231b0914_7e29b1fd","updated":"2025-09-02 18:00:10.000000000","message":"recheck devstack-plugin-nfs-tempest-full","commit_id":"beb4fbcc45573119e7dc59de0f302474aaad5b5b"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"0dd5531967fb2212e017022cedb329c4e7459b9d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":70,"id":"780308f8_229adf04","updated":"2025-09-08 10:28:27.000000000","message":"recheck cinder-plugin-ceph-tempest","commit_id":"575f9fcd55b100d766152187a8eab8134a125d28"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"acaf7f782c434c19630df03a464991360a7ce534","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":74,"id":"63e35c16_a4ddada3","updated":"2025-09-12 09:15:40.000000000","message":"recheck openstack-tox-py310","commit_id":"1f97626d570700e499b6a639779f0f24124486fb"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"7a9fa7083ff4dd05c7779417585f7ae93681bf7e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":77,"id":"07e97db7_572fb4e5","updated":"2025-10-31 00:14:50.000000000","message":"I wonder if some of these strings should be constants (example: temporary_volume_group_enabled), but I won\u0027t try to block for that purpose.\n\n+1 here as the code does look good, also with unexpected error handling.","commit_id":"d149436a101683986b1b895bafd4b38c15f431f9"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"4500c65da73177a1f361d153af71bc194300ce34","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":84,"id":"9f77bf6c_ea03ba9a","updated":"2025-11-12 10:21:05.000000000","message":"run-quobyteci","commit_id":"08c85e0d85875518941d01060eb9e34e2b6600af"},{"author":{"_account_id":37328,"name":"Nimesh Desai","display_name":"Nimesh Desai","email":"nimesh.desai@ibm.com","username":"nimeshdesai"},"change_message_id":"5e6440e055fcfb49e532fe79e78b33e26d4e17d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":93,"id":"ba645be1_b0a802e4","updated":"2026-01-16 15:28:20.000000000","message":"recheck tempest-slow-py3","commit_id":"f321fd71094f1e56e0277eedc6fc0237ba7d8c1c"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"a0dfea9251d864620fe5df9a5e49599242b6599a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":101,"id":"10cd4d3d_b25cff5a","updated":"2026-02-12 07:49:26.000000000","message":"recheck","commit_id":"75e756f39570be9a10eb863f562d01e4a48fc9d2"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"d80a885625c3e72217fd1c493618f9663f42c2de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":101,"id":"28d55b4b_629e3acd","updated":"2026-02-11 09:09:40.000000000","message":"recheck","commit_id":"75e756f39570be9a10eb863f562d01e4a48fc9d2"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"69ffd7bfc6b8e0852195485c8ae3f286da424bb4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":102,"id":"136dcb0c_40a01fca","updated":"2026-02-17 07:53:05.000000000","message":"recheck","commit_id":"2ec5a034b38f76b8e31f152313be10dcdb8d6d99"},{"author":{"_account_id":36439,"name":"Vivek Pandey","email":"vivek.pandey11@ibm.com","username":"vivek.pandey11"},"change_message_id":"77a5848159910e761a7720d9f9d1c43d9f522dd6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":103,"id":"3af91ae6_5263916c","updated":"2026-02-20 10:48:42.000000000","message":"recheck","commit_id":"264f490214a792dc185f6224ac6020efd5011628"},{"author":{"_account_id":36439,"name":"Vivek Pandey","email":"vivek.pandey11@ibm.com","username":"vivek.pandey11"},"change_message_id":"7542581207104498a02c3ca528b204e54cadfc18","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":103,"id":"8bc05699_c520ef66","in_reply_to":"3af91ae6_5263916c","updated":"2026-02-23 05:56:05.000000000","message":"Done","commit_id":"264f490214a792dc185f6224ac6020efd5011628"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4afe2176b397b0f9f7165d928f6a598516dec9cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":105,"id":"018b7548_4b374406","updated":"2026-03-04 09:23:33.000000000","message":"recheck","commit_id":"1bb214071a04111f4acbdf411cb9ecf81a1714e4"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_common.py":[{"author":{"_account_id":24005,"name":"prashkre","email":"prashkre@in.ibm.com","username":"prashkre"},"change_message_id":"c09b0a1df054b2fa2f92304fce58963d4e151c94","unresolved":true,"context_lines":[{"line_number":4739,"context_line":"        copy_items \u003d list(self._vdiskcopyops.items())"},{"line_number":4740,"context_line":"        for vol_id, copy_ops in copy_items:"},{"line_number":4741,"context_line":"            try:"},{"line_number":4742,"context_line":"                volume \u003d self.db.volume_get(ctxt, vol_id)"},{"line_number":4743,"context_line":"            except Exception:"},{"line_number":4744,"context_line":"                LOG.warning(\u0027Volume %s does not exist.\u0027, vol_id)"},{"line_number":4745,"context_line":"                del self._vdiskcopyops[vol_id]"}],"source_content_type":"text/x-python","patch_set":17,"id":"a22b77e1_b8f73e0b","line":4742,"updated":"2025-01-29 09:25:34.000000000","message":"we need to handle the volume name here","commit_id":"4724640474cb7b710b6c77523739f7af640b1554"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"34221d61e5126a331aab37b0bab346b7f1ec9c73","unresolved":false,"context_lines":[{"line_number":4739,"context_line":"        copy_items \u003d list(self._vdiskcopyops.items())"},{"line_number":4740,"context_line":"        for vol_id, copy_ops in copy_items:"},{"line_number":4741,"context_line":"            try:"},{"line_number":4742,"context_line":"                volume \u003d self.db.volume_get(ctxt, vol_id)"},{"line_number":4743,"context_line":"            except Exception:"},{"line_number":4744,"context_line":"                LOG.warning(\u0027Volume %s does not exist.\u0027, vol_id)"},{"line_number":4745,"context_line":"                del self._vdiskcopyops[vol_id]"}],"source_content_type":"text/x-python","patch_set":17,"id":"c1ff1476_2b78c649","line":4742,"in_reply_to":"a22b77e1_b8f73e0b","updated":"2025-01-29 10:59:13.000000000","message":"Acknowledged.","commit_id":"4724640474cb7b710b6c77523739f7af640b1554"},{"author":{"_account_id":24005,"name":"prashkre","email":"prashkre@in.ibm.com","username":"prashkre"},"change_message_id":"c09b0a1df054b2fa2f92304fce58963d4e151c94","unresolved":true,"context_lines":[{"line_number":4767,"context_line":""},{"line_number":4768,"context_line":"    # #### V2.1 replication methods #### #"},{"line_number":4769,"context_line":"    @volume_utils.trace"},{"line_number":4770,"context_line":"    def failover_host(self, context, volumes, secondary_id\u003dNone, groups\u003dNone):"},{"line_number":4771,"context_line":"        if not self._replica_enabled:"},{"line_number":4772,"context_line":"            msg \u003d _(\"Replication is not properly enabled on backend.\")"},{"line_number":4773,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"129cb499_bcb154e5","line":4770,"updated":"2025-01-29 09:25:34.000000000","message":"missing decorator","commit_id":"4724640474cb7b710b6c77523739f7af640b1554"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"34221d61e5126a331aab37b0bab346b7f1ec9c73","unresolved":false,"context_lines":[{"line_number":4767,"context_line":""},{"line_number":4768,"context_line":"    # #### V2.1 replication methods #### #"},{"line_number":4769,"context_line":"    @volume_utils.trace"},{"line_number":4770,"context_line":"    def failover_host(self, context, volumes, secondary_id\u003dNone, groups\u003dNone):"},{"line_number":4771,"context_line":"        if not self._replica_enabled:"},{"line_number":4772,"context_line":"            msg \u003d _(\"Replication is not properly enabled on backend.\")"},{"line_number":4773,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"d2f9e74f_cc1dfc5e","line":4770,"in_reply_to":"129cb499_bcb154e5","updated":"2025-01-29 10:59:13.000000000","message":"Acknowledged.","commit_id":"4724640474cb7b710b6c77523739f7af640b1554"},{"author":{"_account_id":24005,"name":"prashkre","email":"prashkre@in.ibm.com","username":"prashkre"},"change_message_id":"b493e68005b6effb3a2fa41bb88f63ffe1a44b87","unresolved":true,"context_lines":[{"line_number":6130,"context_line":"                                                   \u0027host\u0027: host[\u0027host\u0027]})"},{"line_number":6131,"context_line":"        return True, model_update"},{"line_number":6132,"context_line":""},{"line_number":6133,"context_line":"    def update_migrated_volume(self, ctxt, volume, new_volume,"},{"line_number":6134,"context_line":"                               original_volume_status):"},{"line_number":6135,"context_line":"        \"\"\"Return model update from Storwize for migrated volume."},{"line_number":6136,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ddc2f4e6_7fcd498b","line":6133,"updated":"2025-01-29 08:51:29.000000000","message":"It might need a decorator.","commit_id":"4724640474cb7b710b6c77523739f7af640b1554"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"34221d61e5126a331aab37b0bab346b7f1ec9c73","unresolved":false,"context_lines":[{"line_number":6130,"context_line":"                                                   \u0027host\u0027: host[\u0027host\u0027]})"},{"line_number":6131,"context_line":"        return True, model_update"},{"line_number":6132,"context_line":""},{"line_number":6133,"context_line":"    def update_migrated_volume(self, ctxt, volume, new_volume,"},{"line_number":6134,"context_line":"                               original_volume_status):"},{"line_number":6135,"context_line":"        \"\"\"Return model update from Storwize for migrated volume."},{"line_number":6136,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"cfbae2a4_65680fb7","line":6133,"in_reply_to":"ddc2f4e6_7fcd498b","updated":"2025-01-29 10:59:13.000000000","message":"Acknowledged.","commit_id":"4724640474cb7b710b6c77523739f7af640b1554"},{"author":{"_account_id":24005,"name":"prashkre","email":"prashkre@in.ibm.com","username":"prashkre"},"change_message_id":"b493e68005b6effb3a2fa41bb88f63ffe1a44b87","unresolved":true,"context_lines":[{"line_number":6170,"context_line":"        model_update \u003d {\u0027_name_id\u0027: None}"},{"line_number":6171,"context_line":"        return model_update"},{"line_number":6172,"context_line":""},{"line_number":6173,"context_line":"    def manage_existing(self, volume, ref):"},{"line_number":6174,"context_line":"        \"\"\"Manages an existing vdisk."},{"line_number":6175,"context_line":""},{"line_number":6176,"context_line":"        Renames the vdisk to match the expected name for the volume."}],"source_content_type":"text/x-python","patch_set":17,"id":"5e88ecc3_33194c94","line":6173,"updated":"2025-01-29 08:51:29.000000000","message":"missing decorator.","commit_id":"4724640474cb7b710b6c77523739f7af640b1554"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"34221d61e5126a331aab37b0bab346b7f1ec9c73","unresolved":false,"context_lines":[{"line_number":6170,"context_line":"        model_update \u003d {\u0027_name_id\u0027: None}"},{"line_number":6171,"context_line":"        return model_update"},{"line_number":6172,"context_line":""},{"line_number":6173,"context_line":"    def manage_existing(self, volume, ref):"},{"line_number":6174,"context_line":"        \"\"\"Manages an existing vdisk."},{"line_number":6175,"context_line":""},{"line_number":6176,"context_line":"        Renames the vdisk to match the expected name for the volume."}],"source_content_type":"text/x-python","patch_set":17,"id":"beeb6f6f_291a31e4","line":6173,"in_reply_to":"5e88ecc3_33194c94","updated":"2025-01-29 10:59:13.000000000","message":"Acknowledged.","commit_id":"4724640474cb7b710b6c77523739f7af640b1554"},{"author":{"_account_id":24005,"name":"prashkre","email":"prashkre@in.ibm.com","username":"prashkre"},"change_message_id":"79f58d690054d050791cb653477b2bcd9e14f5b2","unresolved":true,"context_lines":[{"line_number":6684,"context_line":"            return self._update_volumegroup(context, group, add_volumes,"},{"line_number":6685,"context_line":"                                            remove_volumes)"},{"line_number":6686,"context_line":""},{"line_number":6687,"context_line":"    def create_group_from_src(self, context, group, volumes,"},{"line_number":6688,"context_line":"                              group_snapshot\u003dNone, snapshots\u003dNone,"},{"line_number":6689,"context_line":"                              source_group\u003dNone, source_vols\u003dNone):"},{"line_number":6690,"context_line":"        \"\"\"Creates a group from source."}],"source_content_type":"text/x-python","patch_set":17,"id":"87d04928_48caf6ae","line":6687,"updated":"2025-01-29 09:37:08.000000000","message":"missing decorator","commit_id":"4724640474cb7b710b6c77523739f7af640b1554"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"34221d61e5126a331aab37b0bab346b7f1ec9c73","unresolved":false,"context_lines":[{"line_number":6684,"context_line":"            return self._update_volumegroup(context, group, add_volumes,"},{"line_number":6685,"context_line":"                                            remove_volumes)"},{"line_number":6686,"context_line":""},{"line_number":6687,"context_line":"    def create_group_from_src(self, context, group, volumes,"},{"line_number":6688,"context_line":"                              group_snapshot\u003dNone, snapshots\u003dNone,"},{"line_number":6689,"context_line":"                              source_group\u003dNone, source_vols\u003dNone):"},{"line_number":6690,"context_line":"        \"\"\"Creates a group from source."}],"source_content_type":"text/x-python","patch_set":17,"id":"efeba549_53669bfb","line":6687,"in_reply_to":"87d04928_48caf6ae","updated":"2025-01-29 10:59:13.000000000","message":"Acknowledged.","commit_id":"4724640474cb7b710b6c77523739f7af640b1554"},{"author":{"_account_id":24005,"name":"prashkre","email":"prashkre@in.ibm.com","username":"prashkre"},"change_message_id":"b493e68005b6effb3a2fa41bb88f63ffe1a44b87","unresolved":true,"context_lines":[{"line_number":7000,"context_line":"            LOG.error(msg)"},{"line_number":7001,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":7002,"context_line":""},{"line_number":7003,"context_line":"    def get_pool(self, volume):"},{"line_number":7004,"context_line":"        attr \u003d self._helpers.get_vdisk_attributes(volume[\u0027name\u0027])"},{"line_number":7005,"context_line":""},{"line_number":7006,"context_line":"        if attr is None:"}],"source_content_type":"text/x-python","patch_set":17,"id":"57072aaf_05219e55","line":7003,"updated":"2025-01-29 08:51:29.000000000","message":"missing decorator.","commit_id":"4724640474cb7b710b6c77523739f7af640b1554"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"34221d61e5126a331aab37b0bab346b7f1ec9c73","unresolved":false,"context_lines":[{"line_number":7000,"context_line":"            LOG.error(msg)"},{"line_number":7001,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":7002,"context_line":""},{"line_number":7003,"context_line":"    def get_pool(self, volume):"},{"line_number":7004,"context_line":"        attr \u003d self._helpers.get_vdisk_attributes(volume[\u0027name\u0027])"},{"line_number":7005,"context_line":""},{"line_number":7006,"context_line":"        if attr is None:"}],"source_content_type":"text/x-python","patch_set":17,"id":"a0f93997_4d8a82da","line":7003,"in_reply_to":"57072aaf_05219e55","updated":"2025-01-29 10:59:13.000000000","message":"Acknowledged.","commit_id":"4724640474cb7b710b6c77523739f7af640b1554"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"0cc0891b8f74394a07586357e84884107af38504","unresolved":true,"context_lines":[{"line_number":2529,"context_line":"                    [str(volume.name) for volume in source_vols])"},{"line_number":2530,"context_line":""},{"line_number":2531,"context_line":"                # For this we will create a snapshot which will automatically"},{"line_number":2532,"context_line":"                # get deleted in 1 day after the clone is completed."},{"line_number":2533,"context_line":"                # Using this snapshot, the clone-volumegroup will be created."},{"line_number":2534,"context_line":"                temp_volumegroup_snapshot_name \u003d ("},{"line_number":2535,"context_line":"                    storwize_const.VG_SNAPSHOT_PREFIX + \u0027temp-\u0027 + group.id)"}],"source_content_type":"text/x-python","patch_set":87,"id":"79620d17_cdd22857","line":2532,"range":{"start_line":2532,"start_character":33,"end_line":2532,"end_character":67},"updated":"2026-02-05 10:25:04.000000000","message":"snapshot will get deleted in 5 minutes/ as soon as the clone is complete when cloning takes more than 5 minutes to complete.","commit_id":"8ab84214404afffb10f2d26cdd55f3e2a0142df1"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"ca4dd4a408da46ecd1123357eada11bc2eeed340","unresolved":false,"context_lines":[{"line_number":2529,"context_line":"                    [str(volume.name) for volume in source_vols])"},{"line_number":2530,"context_line":""},{"line_number":2531,"context_line":"                # For this we will create a snapshot which will automatically"},{"line_number":2532,"context_line":"                # get deleted in 1 day after the clone is completed."},{"line_number":2533,"context_line":"                # Using this snapshot, the clone-volumegroup will be created."},{"line_number":2534,"context_line":"                temp_volumegroup_snapshot_name \u003d ("},{"line_number":2535,"context_line":"                    storwize_const.VG_SNAPSHOT_PREFIX + \u0027temp-\u0027 + group.id)"}],"source_content_type":"text/x-python","patch_set":87,"id":"aeb5e375_f2a7d8e5","line":2532,"range":{"start_line":2532,"start_character":33,"end_line":2532,"end_character":67},"in_reply_to":"79620d17_cdd22857","updated":"2026-02-06 15:02:04.000000000","message":"acknowledged","commit_id":"8ab84214404afffb10f2d26cdd55f3e2a0142df1"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"0cc0891b8f74394a07586357e84884107af38504","unresolved":true,"context_lines":[{"line_number":2531,"context_line":"                # For this we will create a snapshot which will automatically"},{"line_number":2532,"context_line":"                # get deleted in 1 day after the clone is completed."},{"line_number":2533,"context_line":"                # Using this snapshot, the clone-volumegroup will be created."},{"line_number":2534,"context_line":"                temp_volumegroup_snapshot_name \u003d ("},{"line_number":2535,"context_line":"                    storwize_const.VG_SNAPSHOT_PREFIX + \u0027temp-\u0027 + group.id)"},{"line_number":2536,"context_line":"                params \u003d dict()"},{"line_number":2537,"context_line":"                if volume_utils.is_group_a_type("},{"line_number":2538,"context_line":"                        group, \"volume_group_enabled\"):"}],"source_content_type":"text/x-python","patch_set":100,"id":"58c587fb_3853cd2f","line":2535,"range":{"start_line":2534,"start_character":49,"end_line":2535,"end_character":75},"updated":"2026-02-05 10:25:04.000000000","message":"this will lead to error in svc if more than one clone requests are triggered on same vg in the span of 5 minutes","commit_id":"771801fe126dd8e863e2736d7bd0eea4098a787e"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"ca4dd4a408da46ecd1123357eada11bc2eeed340","unresolved":false,"context_lines":[{"line_number":2531,"context_line":"                # For this we will create a snapshot which will automatically"},{"line_number":2532,"context_line":"                # get deleted in 1 day after the clone is completed."},{"line_number":2533,"context_line":"                # Using this snapshot, the clone-volumegroup will be created."},{"line_number":2534,"context_line":"                temp_volumegroup_snapshot_name \u003d ("},{"line_number":2535,"context_line":"                    storwize_const.VG_SNAPSHOT_PREFIX + \u0027temp-\u0027 + group.id)"},{"line_number":2536,"context_line":"                params \u003d dict()"},{"line_number":2537,"context_line":"                if volume_utils.is_group_a_type("},{"line_number":2538,"context_line":"                        group, \"volume_group_enabled\"):"}],"source_content_type":"text/x-python","patch_set":100,"id":"49cd4851_acfa00f9","line":2535,"range":{"start_line":2534,"start_character":49,"end_line":2535,"end_character":75},"in_reply_to":"58c587fb_3853cd2f","updated":"2026-02-06 15:02:04.000000000","message":"acknowledged","commit_id":"771801fe126dd8e863e2736d7bd0eea4098a787e"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"fa92b719f8854ab3c733b6c522e76878fded0b26","unresolved":true,"context_lines":[{"line_number":1011,"context_line":"            # Save the original name and assign the getter method for \u0027name\u0027"},{"line_number":1012,"context_line":"            volume._original_name \u003d original_name  # Save the original name"},{"line_number":1013,"context_line":"            volume._get_name \u003d get_name"},{"line_number":1014,"context_line":"            volume.__class__.name \u003d property(get_name)"},{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"    def volume_name_decorator(arg_name):"},{"line_number":1017,"context_line":"        \"\"\"Decorator factory to wrap a specific argument containing"}],"source_content_type":"text/x-python","patch_set":103,"id":"149fadfb_0c1704b6","line":1014,"updated":"2026-02-20 15:50:51.000000000","message":"volume.__class__ is the Volume oslo.versionedobjects class — shared by every volume object in the process. Every call to _wrap_volume_name overwrites the same class-level name property with a new closure that closes over the current call. This contradicting your comment \"\"\"Temporarily modify the \u0027name\u0027 attribute of the volume object.\"\"\" which promises to modify name attribute but you are changing class level name is it ok?","commit_id":"264f490214a792dc185f6224ac6020efd5011628"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"8865e55673a9e6f6006e197dbd4539972b0a710f","unresolved":true,"context_lines":[{"line_number":1011,"context_line":"            # Save the original name and assign the getter method for \u0027name\u0027"},{"line_number":1012,"context_line":"            volume._original_name \u003d original_name  # Save the original name"},{"line_number":1013,"context_line":"            volume._get_name \u003d get_name"},{"line_number":1014,"context_line":"            volume.__class__.name \u003d property(get_name)"},{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"    def volume_name_decorator(arg_name):"},{"line_number":1017,"context_line":"        \"\"\"Decorator factory to wrap a specific argument containing"}],"source_content_type":"text/x-python","patch_set":103,"id":"b1a5abf9_2519e125","line":1014,"in_reply_to":"149fadfb_0c1704b6","updated":"2026-02-25 15:12:59.000000000","message":"Hi @jayaanand.borra@netapp.com\nI understand your concern here that the class is being changed and not the particular instance.\nI earlier tried to mutate the instance by doing volume.name \u003d\u003d volume.provider_id but that produced AttributeError which means \"name\" is a read-only field in volume class.\n\nDo you suppose there is any other approach where i can use a decorator to modify the name temporarily? I don\u0027t like the approach of using a function to return the name as volume.name or volume.provider_id every time i need to use a volume. because that approach modifies all the operators and several helper functions.","commit_id":"264f490214a792dc185f6224ac6020efd5011628"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"97fbd1b403704ef61539a6bcb4137c4b2945add8","unresolved":false,"context_lines":[{"line_number":1011,"context_line":"            # Save the original name and assign the getter method for \u0027name\u0027"},{"line_number":1012,"context_line":"            volume._original_name \u003d original_name  # Save the original name"},{"line_number":1013,"context_line":"            volume._get_name \u003d get_name"},{"line_number":1014,"context_line":"            volume.__class__.name \u003d property(get_name)"},{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"    def volume_name_decorator(arg_name):"},{"line_number":1017,"context_line":"        \"\"\"Decorator factory to wrap a specific argument containing"}],"source_content_type":"text/x-python","patch_set":103,"id":"82e86688_f6ca0410","line":1014,"in_reply_to":"b1a5abf9_2519e125","updated":"2026-02-26 10:10:32.000000000","message":"Hi @jayaanand.borra@netapp.com\nWe have tested the current approach wrt to all the edge cases and also our on-premise customers have tested and integrated this patch and they also didn\u0027t find any issues in the functionality.\n\nWe plan to go ahead with it. If at all any issue comes up in future, we can raise an enhancement/defect as per the issue.","commit_id":"264f490214a792dc185f6224ac6020efd5011628"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"fa92b719f8854ab3c733b6c522e76878fded0b26","unresolved":true,"context_lines":[{"line_number":2532,"context_line":"                # get deleted in 5 minutes after the clone is completed."},{"line_number":2533,"context_line":"                # Using this snapshot, the clone-volumegroup will be created."},{"line_number":2534,"context_line":"                timestamp \u003d int(time.time())"},{"line_number":2535,"context_line":"                temp_volumegroup_snapshot_name \u003d ("},{"line_number":2536,"context_line":"                    storwize_const.VG_SNAPSHOT_PREFIX + \u0027temp-\u0027 +"},{"line_number":2537,"context_line":"                    group.id[0:4] + group.id[-5:] + timestamp)"},{"line_number":2538,"context_line":"                params \u003d dict()"}],"source_content_type":"text/x-python","patch_set":103,"id":"6c31c6e0_13d1cbd9","line":2535,"updated":"2026-02-20 15:50:51.000000000","message":"timestamp is an int; Python string concatenation with + requires all operands to be str. This raises TypeError: can only concatenate str (not \"int\") to str on every invocation of the source_group and source_vols path, making direct volumegroup-to-volumegroup cloning completely broken","commit_id":"264f490214a792dc185f6224ac6020efd5011628"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"8865e55673a9e6f6006e197dbd4539972b0a710f","unresolved":false,"context_lines":[{"line_number":2532,"context_line":"                # get deleted in 5 minutes after the clone is completed."},{"line_number":2533,"context_line":"                # Using this snapshot, the clone-volumegroup will be created."},{"line_number":2534,"context_line":"                timestamp \u003d int(time.time())"},{"line_number":2535,"context_line":"                temp_volumegroup_snapshot_name \u003d ("},{"line_number":2536,"context_line":"                    storwize_const.VG_SNAPSHOT_PREFIX + \u0027temp-\u0027 +"},{"line_number":2537,"context_line":"                    group.id[0:4] + group.id[-5:] + timestamp)"},{"line_number":2538,"context_line":"                params \u003d dict()"}],"source_content_type":"text/x-python","patch_set":103,"id":"d1d5d161_e1a5739d","line":2535,"in_reply_to":"6c31c6e0_13d1cbd9","updated":"2026-02-25 15:12:59.000000000","message":"Resolved.","commit_id":"264f490214a792dc185f6224ac6020efd5011628"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"677f4e158828bcbcfa9b03df0f759d9e42022961","unresolved":true,"context_lines":[{"line_number":1011,"context_line":"            # Save the original name and assign the getter method for \u0027name\u0027"},{"line_number":1012,"context_line":"            volume._original_name \u003d original_name  # Save the original name"},{"line_number":1013,"context_line":"            volume._get_name \u003d get_name"},{"line_number":1014,"context_line":"            volume.__class__.name \u003d property(get_name)"},{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"    def volume_name_decorator(arg_name):"},{"line_number":1017,"context_line":"        \"\"\"Decorator factory to wrap a specific argument containing"}],"source_content_type":"text/x-python","patch_set":105,"id":"239e7ea9_068be425","line":1014,"range":{"start_line":1014,"start_character":0,"end_line":1014,"end_character":54},"updated":"2026-03-06 15:30:26.000000000","message":"I am only taking a cursory glance here but this looks like it could switch the class name for the whole interpreter instance, no? Such a thing would, worst case, affect all volume objects currently in memory?\nIf other drivers, etc., try to do that, too, things will get knotted indeed.","commit_id":"1bb214071a04111f4acbdf411cb9ecf81a1714e4"}]}
