)]}'
{"/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"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"9efee460d115799fe4f46608510c16e3194c9b41","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"93e529ad_7b43bcad","updated":"2026-07-28 08:57:19.000000000","message":"@eharney@redhat.com @jayaanand.borra@netapp.com @vrinda.dhakad@ibm.com @akshay.ranade@ibm.com\nKindly upgrade your votes. Thankyou","commit_id":"e108200cc249faeb302e6197a27cfee1f2466804"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"3fe23ff3a5ef2ff52802775064f39982d9152994","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"92dad7ce_8cb42007","updated":"2026-08-07 13:36:01.000000000","message":"Minor comment inline. LGTM. Updating my vote.","commit_id":"e108200cc249faeb302e6197a27cfee1f2466804"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"60bcf059e24636366338b62f62b82e8e8e54022e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"13cad283_5d2d5e7e","updated":"2026-08-15 05:19:00.000000000","message":"Need to take care of merge conflict","commit_id":"e108200cc249faeb302e6197a27cfee1f2466804"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"040a43fa81ef07e639aeb2f5d1932fd835bb5ad5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"ffb40527_974b85b0","updated":"2026-07-28 08:55:30.000000000","message":"No changes required.","commit_id":"e108200cc249faeb302e6197a27cfee1f2466804"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"01595facfa238cf12e40bbc648c18127c5390c16","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"4a1b3dd2_dfbd17f4","updated":"2026-08-17 08:36:47.000000000","message":"@anthony.galica@hitachivantara.com Merge conflict resolved. Please upgrade your vote. Thanks :)","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"60808e0f_51ed8f3b","updated":"2026-08-18 23:41:19.000000000","message":"I have some questions I\u0027d like to see answers to.  Not necessarily deserving of a neg, but I\u0027d like to understand better the thought process.\n\nIn addition, the -1 is because:\n\n I have major concerns about the ``get_volume_name`` addition.  I\u0027m not sure it\u0027s directly related to the patch, but I could be wrong here.\n\nThe problem I see is that it requires multitude of changes all over the place, and there are places where ``volume.name`` is used, and other places where ``volume[\u0027name\u0027]`` is used.   Then there are a huge amount of places where ``get_volume_name`` wasn\u0027t used.  In some places it doesn\u0027t show up it isn\u0027t clear that it should be used, and in other places it seems like it definitely should be used but wasn\u0027t.  \n\nThis whole situation seems to be exacerbated by the fact that the replacements seem to be inconsistent - sometimes ``volume[\u0027name\u0027]`` uses ``get_volume_name``, sometimes it doesn\u0027t.  Sometimes ``volume.name`` does, and sometimes it doesn\u0027t, etc.  \n\nThere are methods where it\u0027s used in some places, but not others; log messages where it\u0027s used in some places and not others.  Entire functions that don\u0027t use it, and others that do, etc.  And then whole other areas (such as ssh) where it seems like it shouldn\u0027t be used, but it\u0027s hard to tell.\n\nI think this will be a maintenance headache.\n\nI captured nearly 100 places where it wasn\u0027t used, and maybe I didn\u0027t even get them all -- some of these places seem like they definitely need it from other contextual cues, and other places it\u0027s not as clear.\n\nSo, I\u0027d really like to know why it\u0027s in this patch specifically, and what problem is being solved?  Can it be solved in another way?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"245e9a07bef554d40c81b3c1d75ddcf506514e9d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"63301cd5_a8c2eeba","updated":"2026-08-17 17:53:45.000000000","message":"recheck","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"f9063deb9892698448a1bda443ade4276d72675e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":18,"id":"d77fc31f_d247e5c4","in_reply_to":"60808e0f_51ed8f3b","updated":"2026-08-18 23:42:07.000000000","message":"Replying to this to make the comment unresolved for visibility.\n\nI\u0027d also like to get another core\u0027s take on this possibly.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"5efd5783_61e2e781","in_reply_to":"ce7c62fa_664a739f","updated":"2026-09-22 11:21:41.000000000","message":"I went through the whole code and added the get_volume_name where it was missing.\n\nI have choosen to not use it in log messages as we want the user to be able to trace the logs for the cinder\u0027s volume name as that is what they will be exposed to directly rather than checking every volume\u0027s provider_id field.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"14bf3ca3262c13a7d7a4fabb4a6ffa758332c8ef","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":18,"id":"ce7c62fa_664a739f","in_reply_to":"d77fc31f_d247e5c4","updated":"2026-08-26 14:50:39.000000000","message":"Hi @harsh.ailani@ibm.com,\n\nI got your ping in IRC - sorry I wasn\u0027t around.  I don\u0027t dispute that you need ``get_volume_name``, but I\u0027m a little worried about how it\u0027s being used and that it seems to be only used in a halfway kind of way. I\u0027ll be around much of today if you want to connect.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"c7055c08_8c13da15","updated":"2026-09-22 11:21:41.000000000","message":"I went through the whole code and added the get_volume_name where it was missing.\n\nI have chosen to not use it in log messages as we want the user to be able to trace the logs for the cinder\u0027s volume name as that is what they will be exposed to directly rather than checking every volume\u0027s provider_id field.","commit_id":"639bf920bcd1284a6f6bbf5fb2db3518fd8da572"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"f246598570b3b27aabeb38296dc3188f1e4ddbf1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"43c59a22_4bb29e33","updated":"2026-09-24 11:33:21.000000000","message":"I\u0027m satisfied with the explanations and my comments were addressed.\n\nCI passing, zuul passing, release notes, docs updated, etc.\n\nI did note that in one place you commented that you didn\u0027t want to change the volume name value because it was in a log, but you changed it anyway.  I marked it unresolved, but you do not need to change it for me.  If you choose to change it, ping me and I\u0027ll return the +2.","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"580ff34a_ae191679","updated":"2026-09-24 12:40:49.000000000","message":"The mechanism (temporary snapshot, ``mkvolumegroup -fromsnapshotid``, map the backend clone names into ``provider_id``) is sound.\n\nI have two small but real bugs in the error handler of create_group_from_src that turn any backend failure into a Python exception (comments at 7227 and 7215), and a rollback gap that can strand clone vdisks. -1 for those; the rest inline are suggestions.","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"80bbe796e9534b80d59da6e1465a37a5c3994274","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"26b6bc7b_b287fe77","updated":"2026-09-24 12:18:19.000000000","message":"run-Quobyte CI","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"}],"cinder/tests/unit/volume/drivers/ibm/test_storwize_svc.py":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7859,"context_line":""},{"line_number":7860,"context_line":"        # Create source volume"},{"line_number":7861,"context_line":"        source_vol \u003d self._generate_vol_info(vol_type)"},{"line_number":7862,"context_line":"        self.driver.create_volume(source_vol)"},{"line_number":7863,"context_line":""},{"line_number":7864,"context_line":"        # Create source volumegroup type and volumegroup"},{"line_number":7865,"context_line":"        (volumegroup_type_ref, volumegroup_type,"}],"source_content_type":"text/x-python","patch_set":18,"id":"b638d2b0_fa1f05b0","line":7862,"updated":"2026-08-18 23:41:19.000000000","message":"I won\u0027t ding you for this personally, however, I would like some kind of explanation for my observances below.\n\n--\n\nIs there a reason why you aren\u0027t using testutils to do these pre-steps?  There may be reasons for this I just haven\u0027t thought of.  Some tests seem to use it, some do not.  I see one place it\u0027s to check for \u0027AVAILABLE\u0027 (maybe the code does those checks?)\n\nThese new tests seem very long \u0026 it feels like they can be condensed into test helper functionality in addition to not using the driver directly for everything.\n\nSome tests seem to also go through cleanup phases while others do not - seems a bit inconsistent.\n\n--\n\nThis comment pretty much applies to all the new UT.  I\u0027m not necessarily asking for changes, but I would like a comment as to why it was done this way.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7859,"context_line":""},{"line_number":7860,"context_line":"        # Create source volume"},{"line_number":7861,"context_line":"        source_vol \u003d self._generate_vol_info(vol_type)"},{"line_number":7862,"context_line":"        self.driver.create_volume(source_vol)"},{"line_number":7863,"context_line":""},{"line_number":7864,"context_line":"        # Create source volumegroup type and volumegroup"},{"line_number":7865,"context_line":"        (volumegroup_type_ref, volumegroup_type,"}],"source_content_type":"text/x-python","patch_set":18,"id":"cf5e645e_67770548","line":7862,"in_reply_to":"7c8b269f_b8e29d95","updated":"2026-09-22 11:21:41.000000000","message":"Yes you are correct. We used to have a full start to end UT.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"5df4fb7afc560cc3c1eee1b6f1bf72c9f04f2360","unresolved":true,"context_lines":[{"line_number":7859,"context_line":""},{"line_number":7860,"context_line":"        # Create source volume"},{"line_number":7861,"context_line":"        source_vol \u003d self._generate_vol_info(vol_type)"},{"line_number":7862,"context_line":"        self.driver.create_volume(source_vol)"},{"line_number":7863,"context_line":""},{"line_number":7864,"context_line":"        # Create source volumegroup type and volumegroup"},{"line_number":7865,"context_line":"        (volumegroup_type_ref, volumegroup_type,"}],"source_content_type":"text/x-python","patch_set":18,"id":"7c8b269f_b8e29d95","line":7862,"in_reply_to":"b638d2b0_fa1f05b0","updated":"2026-08-19 00:07:03.000000000","message":"``Is there a reason why you aren\u0027t using testutils to do these pre-steps?``\n\nI think I answered this question myself looking at the next patch.  It\u0027s probably to create the \"state\" in the driver.  But you can correct me if I\u0027m wrong.\n\nStill would like some commentary on the other comments here though.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"}],"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":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"040a43fa81ef07e639aeb2f5d1932fd835bb5ad5","unresolved":false,"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":"e32e3ad9_a64b2ae8","line":2551,"in_reply_to":"36696a1a_11f95564","updated":"2026-07-28 08:55:30.000000000","message":"- FlashSystem has a capacity to hold 64000 snapshots at a time so it is well under the limits.\n- The temporary snapshot created has the retention time of only 5mins. So these snapshots will automatically get deleted 5 mins after the clone synchronisation is complete. Hence this is as per design choice.","commit_id":"e108200cc249faeb302e6197a27cfee1f2466804"},{"author":{"_account_id":37888,"name":"Akshay Ranade","display_name":"Akshay Ranade","email":"akshay.ranade@ibm.com","username":"rakshay"},"change_message_id":"d973be90454d1aff617d3984b2690e06e2327bdb","unresolved":false,"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":"54932a66_8b133243","line":2551,"in_reply_to":"e32e3ad9_a64b2ae8","updated":"2026-07-28 15:26:06.000000000","message":"@harsh.ailani@ibm.com\nIf a snapshot is created using the -retentionminutes parameter then the system will automatically remove the snapshot after the specified number of minutes has passed. A snapshot that is being used at that time to populate a clone or restore operation will not be immediately deleted, but will instead move to the dependent_deleting state.\n\nso, \nThe 5-minute retention timer starts at snapshot creation. If sync is still running at expiry, the backend transitions the snapshot to dependent_deleting and holds it until population completes, then removes it automatically. No Cinder-side cleanup is needed in any scenario.\n\nThis keeps us safe from sync \u003e5mins race scenarios as well!\nI am fine with this design.","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"},{"author":{"_account_id":37888,"name":"Akshay Ranade","display_name":"Akshay Ranade","email":"akshay.ranade@ibm.com","username":"rakshay"},"change_message_id":"d973be90454d1aff617d3984b2690e06e2327bdb","unresolved":false,"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":"f5456b17_ace1b529","line":2613,"in_reply_to":"022b0937_230aae14","updated":"2026-07-28 15:26:06.000000000","message":"With the establishment of our previous comment\u0027s discussion, This is fine too.. unless we want to write strictly defensive code.","commit_id":"e108200cc249faeb302e6197a27cfee1f2466804"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"040a43fa81ef07e639aeb2f5d1932fd835bb5ad5","unresolved":false,"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":"022b0937_230aae14","line":2613,"in_reply_to":"243663b8_88d1eaa6","updated":"2026-07-28 08:55:30.000000000","message":"If the clone operation fails, there are two objects which would need a rollback:\n- clone volumegroup : rollback of this is handled in this exception block.\n- temporary snapshot : snapshot is automatically deleted in the retention time whether its a success case or failure. Moreover this snapshot doesn\u0027t have any cinder DB object. Hence the roll back is not required as the automatic deletion is already handled by storage backend.","commit_id":"e108200cc249faeb302e6197a27cfee1f2466804"},{"author":{"_account_id":36800,"name":"Vrinda Dhakad","display_name":"vdhakad","email":"vrinda.dhakad@ibm.com","username":"vdhakad"},"change_message_id":"3fe23ff3a5ef2ff52802775064f39982d9152994","unresolved":true,"context_lines":[{"line_number":7176,"context_line":"            except exception.VolumeBackendAPIException as err:"},{"line_number":7177,"context_line":"                LOG.error(\"Failed to clone the volumegroup \""},{"line_number":7178,"context_line":"                          \"%(source_group)s. Exception: %(exception)s.\","},{"line_number":7179,"context_line":"                          {\u0027source_group\u0027: group_snapshot.group_id,"},{"line_number":7180,"context_line":"                           \u0027exception\u0027: err})"},{"line_number":7181,"context_line":"                model_update \u003d {\u0027status\u0027: fields.GroupStatus.ERROR}"},{"line_number":7182,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"bdc08512_7b15b9d3","line":7179,"range":{"start_line":7179,"start_character":43,"end_line":7179,"end_character":66},"updated":"2026-08-07 13:36:01.000000000","message":"Please check if group_id is present in group_snapshot.","commit_id":"e108200cc249faeb302e6197a27cfee1f2466804"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"304a7e86731fbde13e49ad0b85c4ae7d0865b099","unresolved":false,"context_lines":[{"line_number":7176,"context_line":"            except exception.VolumeBackendAPIException as err:"},{"line_number":7177,"context_line":"                LOG.error(\"Failed to clone the volumegroup \""},{"line_number":7178,"context_line":"                          \"%(source_group)s. Exception: %(exception)s.\","},{"line_number":7179,"context_line":"                          {\u0027source_group\u0027: group_snapshot.group_id,"},{"line_number":7180,"context_line":"                           \u0027exception\u0027: err})"},{"line_number":7181,"context_line":"                model_update \u003d {\u0027status\u0027: fields.GroupStatus.ERROR}"},{"line_number":7182,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"2e37d8a8_d54dbbb1","line":7179,"range":{"start_line":7179,"start_character":43,"end_line":7179,"end_character":66},"in_reply_to":"bdc08512_7b15b9d3","updated":"2026-08-07 15:06:33.000000000","message":"Yes group_id is present in group_snapshot.","commit_id":"e108200cc249faeb302e6197a27cfee1f2466804"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":569,"context_line":"        \"\"\""},{"line_number":570,"context_line":"        ssh_cmd \u003d [\u0027svctask\u0027, \u0027mkvolumegroup\u0027, \u0027-name\u0027, \u0027\"%s\"\u0027"},{"line_number":571,"context_line":"                   % volumegroup_name]"},{"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])"}],"source_content_type":"text/x-python","patch_set":18,"id":"9380924e_0cf1f82e","line":572,"updated":"2026-08-18 23:41:19.000000000","message":"Does the cloning feature only come into play with snapshots?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":569,"context_line":"        \"\"\""},{"line_number":570,"context_line":"        ssh_cmd \u003d [\u0027svctask\u0027, \u0027mkvolumegroup\u0027, \u0027-name\u0027, \u0027\"%s\"\u0027"},{"line_number":571,"context_line":"                   % volumegroup_name]"},{"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])"}],"source_content_type":"text/x-python","patch_set":18,"id":"950632fb_12f15ef6","line":572,"in_reply_to":"9380924e_0cf1f82e","updated":"2026-09-22 11:21:41.000000000","message":"Yes, clone can only be created using a volumegroup snapshot:\nhttps://www.ibm.com/docs/en/flashsystem-5x00/9.1.2?topic\u003dcommands-mkvolumegroup#mkvolumegroup__title__5","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":1028,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1029,"context_line":""},{"line_number":1030,"context_line":"    @staticmethod"},{"line_number":1031,"context_line":"    def get_volume_name(volume):"},{"line_number":1032,"context_line":"        \"\"\"Get the storage backend name for a volume."},{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"        Returns provider_id if available, otherwise returns the volume name."}],"source_content_type":"text/x-python","patch_set":18,"id":"5544f330_5b49c278","line":1031,"updated":"2026-08-18 23:41:19.000000000","message":"Why would this occur, and can it be avoided?\n\nThis seems like a major change, potentially unrelated to the patch topic.  I think you will regret this, but it\u0027s possible I don\u0027t fully understand the need.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":1028,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1029,"context_line":""},{"line_number":1030,"context_line":"    @staticmethod"},{"line_number":1031,"context_line":"    def get_volume_name(volume):"},{"line_number":1032,"context_line":"        \"\"\"Get the storage backend name for a volume."},{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"        Returns provider_id if available, otherwise returns the volume name."}],"source_content_type":"text/x-python","patch_set":18,"id":"f54f1503_d46cd4f4","line":1031,"in_reply_to":"5544f330_5b49c278","updated":"2026-09-22 11:21:41.000000000","message":"There is a specific reason for introducing this helper in this patch, and it is related to a change in the backend volume naming behavior introduced by the VGS feature.\n\nPreviously, the Cinder volume name and the corresponding backend volume name were the same. For example:\n\nCinder volume:          Vol-ABCD\nBackend volume:         Vol-ABCD\n\nFor a clone, Cinder creates a new volume object with a different Cinder volume name:\n\nSource Cinder volume:   Vol-ABCD\nClone Cinder volume:    Vol-EFGH\n\nWith the VGS implementation, however, the backend creates the clone based on the source backend volume name and automatically appends a numerical suffix:\n\nSource backend volume:  Vol-ABCD\nClone backend volume:   Vol-ABCD-0\n\nTherefore, after the clone operation we have two different identities for the same clone:\n\nCinder:                  Vol-EFGH\nBackend:                 Vol-ABCD-0\n\nThis backend naming is determined by the VGS operation and cannot be changed to Vol-EFGH without changing the semantics of the VGS clone operation. At the same time, changing the Cinder volume name is not appropriate because that is the identity assigned to the volume by Cinder.\n\nWe therefore store the actual backend volume name (Vol-ABCD-0) in the clone volume\u0027s provider_id. This gives us the required mapping:\n\nCinder volume Vol-EFGH -\u003e provider_id Vol-ABCD-0\n\nThe issue then is that subsequent operations on this volume need to use the backend identity rather than the Cinder name. This applies to operations such as delete, extend, clone, snapshot, etc.\n\nInitially, I addressed this by introducing a decorator that modified the volume object before each operation. However, that approach effectively changed the behavior of the volume object globally and made the code harder to reason about. Based on the review feedback on the earlier patchsets, I removed that approach.\n\nThe current helper is intentionally much simpler: it does not modify the volume object or introduce any new state. It only resolves the backend name at the point where a backend operation needs it:\n\nprovider_id if available\notherwise volume.name\n\nI agree that introducing a helper used across volume operations adds some maintenance overhead, which is why I initially tried the decorator approach. However, given the VGS backend naming behavior, we need some explicit Cinder-to-backend name resolution mechanism. The current approach keeps that behavior localized and avoids modifying the volume object itself.\n\nIf there is a preferred Cinder mechanism for maintaining this mapping that I have overlooked, I am happy to consider it. But the mapping itself is required because the Cinder and backend volume names are no longer guaranteed to be identical with VGS.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"f246598570b3b27aabeb38296dc3188f1e4ddbf1","unresolved":false,"context_lines":[{"line_number":1028,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1029,"context_line":""},{"line_number":1030,"context_line":"    @staticmethod"},{"line_number":1031,"context_line":"    def get_volume_name(volume):"},{"line_number":1032,"context_line":"        \"\"\"Get the storage backend name for a volume."},{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"        Returns provider_id if available, otherwise returns the volume name."}],"source_content_type":"text/x-python","patch_set":18,"id":"2c96612d_292936a1","line":1031,"in_reply_to":"f54f1503_d46cd4f4","updated":"2026-09-24 11:33:21.000000000","message":"Understood, and thank you for the detailed explanation.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":2369,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":2370,"context_line":"                vhost \u003d volume.host"},{"line_number":2371,"context_line":"                if \u0027#\u0027 not in vhost:"},{"line_number":2372,"context_line":"                    attrs \u003d self.get_vdisk_attributes(volume[\u0027name\u0027])"},{"line_number":2373,"context_line":"                    pool \u003d self._get_pool(attrs)"},{"line_number":2374,"context_line":"                else:"},{"line_number":2375,"context_line":"                    pool \u003d volume_utils.extract_host(volume.host, \u0027pool\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"006d4c6e_0ac5d2a5","line":2372,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?  Maybe not here?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":2369,"context_line":"                    raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":2370,"context_line":"                vhost \u003d volume.host"},{"line_number":2371,"context_line":"                if \u0027#\u0027 not in vhost:"},{"line_number":2372,"context_line":"                    attrs \u003d self.get_vdisk_attributes(volume[\u0027name\u0027])"},{"line_number":2373,"context_line":"                    pool \u003d self._get_pool(attrs)"},{"line_number":2374,"context_line":"                else:"},{"line_number":2375,"context_line":"                    pool \u003d volume_utils.extract_host(volume.host, \u0027pool\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"4c72dc01_7fd48167","line":2372,"in_reply_to":"006d4c6e_0ac5d2a5","updated":"2026-09-22 11:21:41.000000000","message":"Done","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":2477,"context_line":"                    pool \u003d opts.get(\u0027storage_pool\u0027)"},{"line_number":2478,"context_line":"                else:"},{"line_number":2479,"context_line":"                    pool \u003d volume_utils.extract_host(target[\u0027host\u0027], \u0027pool\u0027)"},{"line_number":2480,"context_line":"                self.create_flashcopy_to_consistgrp(source[\u0027name\u0027],"},{"line_number":2481,"context_line":"                                                    target[\u0027name\u0027],"},{"line_number":2482,"context_line":"                                                    fc_consistgrp,"},{"line_number":2483,"context_line":"                                                    config, opts,"}],"source_content_type":"text/x-python","patch_set":18,"id":"6ecda995_39765fe2","line":2480,"updated":"2026-08-18 23:41:19.000000000","message":"Are ``sources``/``targets`` volumes?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":2477,"context_line":"                    pool \u003d opts.get(\u0027storage_pool\u0027)"},{"line_number":2478,"context_line":"                else:"},{"line_number":2479,"context_line":"                    pool \u003d volume_utils.extract_host(target[\u0027host\u0027], \u0027pool\u0027)"},{"line_number":2480,"context_line":"                self.create_flashcopy_to_consistgrp(source[\u0027name\u0027],"},{"line_number":2481,"context_line":"                                                    target[\u0027name\u0027],"},{"line_number":2482,"context_line":"                                                    fc_consistgrp,"},{"line_number":2483,"context_line":"                                                    config, opts,"}],"source_content_type":"text/x-python","patch_set":18,"id":"fe62b1bf_ad28715a","line":2480,"in_reply_to":"6ecda995_39765fe2","updated":"2026-09-22 11:21:41.000000000","message":"Yes.\nResolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":2607,"context_line":"                    list_of_source_volumes, cinder_clone_volumes):"},{"line_number":2608,"context_line":"                if source_volume in svc_clone_volumes_map:"},{"line_number":2609,"context_line":"                    cinder_clone_volume[\u0027provider_id\u0027] \u003d ("},{"line_number":2610,"context_line":"                        svc_clone_volumes_map[source_volume])"},{"line_number":2611,"context_line":""},{"line_number":2612,"context_line":"            # In case of temporary_volumegroup type, we do not need"},{"line_number":2613,"context_line":"            # the clone volumegroup on storage backend but we need to"}],"source_content_type":"text/x-python","patch_set":18,"id":"9086de49_e2ec1166","line":2610,"updated":"2026-08-18 23:41:19.000000000","message":"Is it possible for this to be out of sync with cinder_clone_volumes?\n\ni.e. can ``source_volume`` be in ``cinder_clone_volumes``, but not ``svc_clone_volumes_map``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":2607,"context_line":"                    list_of_source_volumes, cinder_clone_volumes):"},{"line_number":2608,"context_line":"                if source_volume in svc_clone_volumes_map:"},{"line_number":2609,"context_line":"                    cinder_clone_volume[\u0027provider_id\u0027] \u003d ("},{"line_number":2610,"context_line":"                        svc_clone_volumes_map[source_volume])"},{"line_number":2611,"context_line":""},{"line_number":2612,"context_line":"            # In case of temporary_volumegroup type, we do not need"},{"line_number":2613,"context_line":"            # the clone volumegroup on storage backend but we need to"}],"source_content_type":"text/x-python","patch_set":18,"id":"b5fe1d1c_7e19e880","line":2610,"in_reply_to":"9086de49_e2ec1166","updated":"2026-09-22 11:21:41.000000000","message":"I don\u0027t suppose this is out of sync as this one to one map using the provider_id is correct. We checked the list coming from cinder manger and that was always in order.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":2617,"context_line":"            if volume_utils.is_group_a_type("},{"line_number":2618,"context_line":"                    group, \"temporary_volume_group_enabled\"):"},{"line_number":2619,"context_line":"                try:"},{"line_number":2620,"context_line":"                    self.delete_volumegroup(clone_volumegroup_name,"},{"line_number":2621,"context_line":"                                            evictvolumes\u003dTrue)"},{"line_number":2622,"context_line":"                except Exception as ex:"},{"line_number":2623,"context_line":"                    LOG.warning(\"Failed to delete temporary volume group \""}],"source_content_type":"text/x-python","patch_set":18,"id":"088de390_cc873c90","line":2620,"updated":"2026-08-18 23:41:19.000000000","message":"What happens if the retention period ends before the volumes are evicted (say the SSH connection is very slow, for example)?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":2617,"context_line":"            if volume_utils.is_group_a_type("},{"line_number":2618,"context_line":"                    group, \"temporary_volume_group_enabled\"):"},{"line_number":2619,"context_line":"                try:"},{"line_number":2620,"context_line":"                    self.delete_volumegroup(clone_volumegroup_name,"},{"line_number":2621,"context_line":"                                            evictvolumes\u003dTrue)"},{"line_number":2622,"context_line":"                except Exception as ex:"},{"line_number":2623,"context_line":"                    LOG.warning(\"Failed to delete temporary volume group \""}],"source_content_type":"text/x-python","patch_set":18,"id":"722796d1_74efda67","line":2620,"in_reply_to":"088de390_cc873c90","updated":"2026-09-22 11:21:41.000000000","message":"Retention period starts only after the clone operation is completed 100%. Once the operation is completed only then it will wait till the set retention time and then evict the volumes.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":2771,"context_line":"        pool \u003d volume[\u0027mdisk_grp_name\u0027]"},{"line_number":2772,"context_line":"        if \u0027many\u0027 in pool:"},{"line_number":2773,"context_line":"            LOG.info(\"Mirror volume copy found %s: Getting volume \""},{"line_number":2774,"context_line":"                     \"copies\", volume[\u0027name\u0027])"},{"line_number":2775,"context_line":"            copies \u003d self.get_vdisk_copies(volume[\u0027name\u0027])"},{"line_number":2776,"context_line":"            if \u0027primary\u0027 in copies:"},{"line_number":2777,"context_line":"                pool \u003d copies[\u0027primary\u0027][\u0027mdisk_grp_name\u0027]"}],"source_content_type":"text/x-python","patch_set":18,"id":"341d97eb_a15bb3e2","line":2774,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?  x2","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":2771,"context_line":"        pool \u003d volume[\u0027mdisk_grp_name\u0027]"},{"line_number":2772,"context_line":"        if \u0027many\u0027 in pool:"},{"line_number":2773,"context_line":"            LOG.info(\"Mirror volume copy found %s: Getting volume \""},{"line_number":2774,"context_line":"                     \"copies\", volume[\u0027name\u0027])"},{"line_number":2775,"context_line":"            copies \u003d self.get_vdisk_copies(volume[\u0027name\u0027])"},{"line_number":2776,"context_line":"            if \u0027primary\u0027 in copies:"},{"line_number":2777,"context_line":"                pool \u003d copies[\u0027primary\u0027][\u0027mdisk_grp_name\u0027]"}],"source_content_type":"text/x-python","patch_set":18,"id":"836d7d5b_57ba4b08","line":2774,"in_reply_to":"341d97eb_a15bb3e2","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4145,"context_line":"        for pool in pools:"},{"line_number":4146,"context_line":"            pool_vols \u003d self._helpers.get_pool_volumes(pool)"},{"line_number":4147,"context_line":"            for volume in pool_vols:"},{"line_number":4148,"context_line":"                self._volumes_list.append(volume[\u0027name\u0027])"},{"line_number":4149,"context_line":""},{"line_number":4150,"context_line":"    def _get_config_param_value(self, config_param, config_param_value):"},{"line_number":4151,"context_line":"        if not config_param_value:"}],"source_content_type":"text/x-python","patch_set":18,"id":"ace094db_2ab67a53","line":4148,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4145,"context_line":"        for pool in pools:"},{"line_number":4146,"context_line":"            pool_vols \u003d self._helpers.get_pool_volumes(pool)"},{"line_number":4147,"context_line":"            for volume in pool_vols:"},{"line_number":4148,"context_line":"                self._volumes_list.append(volume[\u0027name\u0027])"},{"line_number":4149,"context_line":""},{"line_number":4150,"context_line":"    def _get_config_param_value(self, config_param, config_param_value):"},{"line_number":4151,"context_line":"        if not config_param_value:"}],"source_content_type":"text/x-python","patch_set":18,"id":"d802ad05_d3f9666b","line":4148,"in_reply_to":"ace094db_2ab67a53","updated":"2026-09-22 11:21:41.000000000","message":"volume is a pool-volumes dict from get_pool_volumes(); [\u0027name\u0027] is the backend name already.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4373,"context_line":"            raise exception.VolumeDriverException(reason\u003dmsg)"},{"line_number":4374,"context_line":""},{"line_number":4375,"context_line":"    def _update_replication_properties(self, ctxt, volume, model_update):"},{"line_number":4376,"context_line":"        volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":4377,"context_line":""},{"line_number":4378,"context_line":"        @cinder_utils.retry(exception.VolumeBackendAPIException,"},{"line_number":4379,"context_line":"                            interval\u003d2,"}],"source_content_type":"text/x-python","patch_set":18,"id":"c8b0f47b_32a84cbf","line":4376,"updated":"2026-08-18 23:41:19.000000000","message":"This seems to be redundant with the later call below as it doesn\u0027t seem to be used at all until it\u0027s queried again.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4373,"context_line":"            raise exception.VolumeDriverException(reason\u003dmsg)"},{"line_number":4374,"context_line":""},{"line_number":4375,"context_line":"    def _update_replication_properties(self, ctxt, volume, model_update):"},{"line_number":4376,"context_line":"        volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":4377,"context_line":""},{"line_number":4378,"context_line":"        @cinder_utils.retry(exception.VolumeBackendAPIException,"},{"line_number":4379,"context_line":"                            interval\u003d2,"}],"source_content_type":"text/x-python","patch_set":18,"id":"b7e41d87_373d11d9","line":4376,"in_reply_to":"c8b0f47b_32a84cbf","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4456,"context_line":"        volume.save()"},{"line_number":4457,"context_line":""},{"line_number":4458,"context_line":"    def create_volume(self, volume):"},{"line_number":4459,"context_line":"        LOG.debug(\u0027enter: create_volume: volume %s\u0027, volume[\u0027name\u0027])"},{"line_number":4460,"context_line":"        # Create a replication or hyperswap volume with group_id is not"},{"line_number":4461,"context_line":"        # allowed."},{"line_number":4462,"context_line":"        self._check_if_group_type_cg_snapshot(volume)"}],"source_content_type":"text/x-python","patch_set":18,"id":"98690a78_b795d533","line":4459,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?  Probably not here?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4456,"context_line":"        volume.save()"},{"line_number":4457,"context_line":""},{"line_number":4458,"context_line":"    def create_volume(self, volume):"},{"line_number":4459,"context_line":"        LOG.debug(\u0027enter: create_volume: volume %s\u0027, volume[\u0027name\u0027])"},{"line_number":4460,"context_line":"        # Create a replication or hyperswap volume with group_id is not"},{"line_number":4461,"context_line":"        # allowed."},{"line_number":4462,"context_line":"        self._check_if_group_type_cg_snapshot(volume)"}],"source_content_type":"text/x-python","patch_set":18,"id":"b12bec7b_c4823ae5","line":4459,"in_reply_to":"98690a78_b795d533","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4471,"context_line":""},{"line_number":4472,"context_line":"        if opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027:"},{"line_number":4473,"context_line":"            LOG.debug(\u0027Volume %s to be created is a hyperswap volume.\u0027,"},{"line_number":4474,"context_line":"                      volume.name)"},{"line_number":4475,"context_line":"            if not self._helpers.is_system_topology_hyperswap(self._state):"},{"line_number":4476,"context_line":"                reason \u003d _(\u0027Create hyperswap volume failed, the system is \u0027"},{"line_number":4477,"context_line":"                           \u0027below release 7.6.0.0 or it is not hyperswap \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"3cc03f8d_df73f364","line":4474,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?  Maybe not here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4471,"context_line":""},{"line_number":4472,"context_line":"        if opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027:"},{"line_number":4473,"context_line":"            LOG.debug(\u0027Volume %s to be created is a hyperswap volume.\u0027,"},{"line_number":4474,"context_line":"                      volume.name)"},{"line_number":4475,"context_line":"            if not self._helpers.is_system_topology_hyperswap(self._state):"},{"line_number":4476,"context_line":"                reason \u003d _(\u0027Create hyperswap volume failed, the system is \u0027"},{"line_number":4477,"context_line":"                           \u0027below release 7.6.0.0 or it is not hyperswap \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"51262d55_edc9284a","line":4474,"in_reply_to":"3cc03f8d_df73f364","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4496,"context_line":"            opts[\u0027iogrp\u0027] \u003d self._helpers.select_io_group(self._state,"},{"line_number":4497,"context_line":"                                                          opts, pool)"},{"line_number":4498,"context_line":"            opts[\u0027aux_mirror_pool\u0027] \u003d None"},{"line_number":4499,"context_line":"            self._helpers.create_vdisk(volume[\u0027name\u0027], str(volume[\u0027size\u0027]),"},{"line_number":4500,"context_line":"                                       \u0027gb\u0027, pool, opts)"},{"line_number":4501,"context_line":"        if opts[\u0027qos\u0027]:"},{"line_number":4502,"context_line":"            self._helpers.add_vdisk_qos(volume[\u0027name\u0027], opts[\u0027qos\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"72a299db_b3895d68","line":4499,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4496,"context_line":"            opts[\u0027iogrp\u0027] \u003d self._helpers.select_io_group(self._state,"},{"line_number":4497,"context_line":"                                                          opts, pool)"},{"line_number":4498,"context_line":"            opts[\u0027aux_mirror_pool\u0027] \u003d None"},{"line_number":4499,"context_line":"            self._helpers.create_vdisk(volume[\u0027name\u0027], str(volume[\u0027size\u0027]),"},{"line_number":4500,"context_line":"                                       \u0027gb\u0027, pool, opts)"},{"line_number":4501,"context_line":"        if opts[\u0027qos\u0027]:"},{"line_number":4502,"context_line":"            self._helpers.add_vdisk_qos(volume[\u0027name\u0027], opts[\u0027qos\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f06638c_5c98eb08","line":4499,"in_reply_to":"72a299db_b3895d68","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4499,"context_line":"            self._helpers.create_vdisk(volume[\u0027name\u0027], str(volume[\u0027size\u0027]),"},{"line_number":4500,"context_line":"                                       \u0027gb\u0027, pool, opts)"},{"line_number":4501,"context_line":"        if opts[\u0027qos\u0027]:"},{"line_number":4502,"context_line":"            self._helpers.add_vdisk_qos(volume[\u0027name\u0027], opts[\u0027qos\u0027],"},{"line_number":4503,"context_line":"                                        volume[\u0027size\u0027])"},{"line_number":4504,"context_line":"            model_update \u003d self._qos_model_update(model_update, volume)"},{"line_number":4505,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"3e3ea21f_359865f7","line":4502,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4499,"context_line":"            self._helpers.create_vdisk(volume[\u0027name\u0027], str(volume[\u0027size\u0027]),"},{"line_number":4500,"context_line":"                                       \u0027gb\u0027, pool, opts)"},{"line_number":4501,"context_line":"        if opts[\u0027qos\u0027]:"},{"line_number":4502,"context_line":"            self._helpers.add_vdisk_qos(volume[\u0027name\u0027], opts[\u0027qos\u0027],"},{"line_number":4503,"context_line":"                                        volume[\u0027size\u0027])"},{"line_number":4504,"context_line":"            model_update \u003d self._qos_model_update(model_update, volume)"},{"line_number":4505,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"ee6e7817_c34d612f","line":4502,"in_reply_to":"3e3ea21f_359865f7","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4518,"context_line":""},{"line_number":4519,"context_line":"        LOG.debug(\u0027leave: create_volume:\\n volume: %(vol)s\\n \u0027"},{"line_number":4520,"context_line":"                  \u0027model_update %(model_update)s\u0027,"},{"line_number":4521,"context_line":"                  {\u0027vol\u0027: volume[\u0027name\u0027],"},{"line_number":4522,"context_line":"                   \u0027model_update\u0027: model_update})"},{"line_number":4523,"context_line":"        return model_update"},{"line_number":4524,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"00fd419f_f89ee78c","line":4521,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4518,"context_line":""},{"line_number":4519,"context_line":"        LOG.debug(\u0027leave: create_volume:\\n volume: %(vol)s\\n \u0027"},{"line_number":4520,"context_line":"                  \u0027model_update %(model_update)s\u0027,"},{"line_number":4521,"context_line":"                  {\u0027vol\u0027: volume[\u0027name\u0027],"},{"line_number":4522,"context_line":"                   \u0027model_update\u0027: model_update})"},{"line_number":4523,"context_line":"        return model_update"},{"line_number":4524,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"705884ed_aa927c30","line":4521,"in_reply_to":"00fd419f_f89ee78c","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4557,"context_line":"                rel_info \u003d None"},{"line_number":4558,"context_line":"            if not self._active_backend_id:"},{"line_number":4559,"context_line":"                self._master_backend_helpers.delete_rc_volume("},{"line_number":4560,"context_line":"                    volume[\u0027name\u0027], rel_info, force_unmap\u003dforce_unmap)"},{"line_number":4561,"context_line":"            else:"},{"line_number":4562,"context_line":"                # If it\u0027s in fail over state, also try to delete the volume"},{"line_number":4563,"context_line":"                # in master backend"}],"source_content_type":"text/x-python","patch_set":18,"id":"cf7af782_51831fe1","line":4560,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4557,"context_line":"                rel_info \u003d None"},{"line_number":4558,"context_line":"            if not self._active_backend_id:"},{"line_number":4559,"context_line":"                self._master_backend_helpers.delete_rc_volume("},{"line_number":4560,"context_line":"                    volume[\u0027name\u0027], rel_info, force_unmap\u003dforce_unmap)"},{"line_number":4561,"context_line":"            else:"},{"line_number":4562,"context_line":"                # If it\u0027s in fail over state, also try to delete the volume"},{"line_number":4563,"context_line":"                # in master backend"}],"source_content_type":"text/x-python","patch_set":18,"id":"16fa6595_df85b10d","line":4560,"in_reply_to":"cf7af782_51831fe1","updated":"2026-09-22 11:21:41.000000000","message":"Resolved.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4563,"context_line":"                # in master backend"},{"line_number":4564,"context_line":"                try:"},{"line_number":4565,"context_line":"                    self._master_backend_helpers.delete_rc_volume("},{"line_number":4566,"context_line":"                        volume[\u0027name\u0027], rel_info, force_unmap\u003dforce_unmap)"},{"line_number":4567,"context_line":"                except Exception as ex:"},{"line_number":4568,"context_line":"                    LOG.error(\u0027Failed to get delete volume %(volume)s in \u0027"},{"line_number":4569,"context_line":"                              \u0027master backend. Exception: %(err)s.\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"497b62a7_24c5aa4b","line":4566,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4563,"context_line":"                # in master backend"},{"line_number":4564,"context_line":"                try:"},{"line_number":4565,"context_line":"                    self._master_backend_helpers.delete_rc_volume("},{"line_number":4566,"context_line":"                        volume[\u0027name\u0027], rel_info, force_unmap\u003dforce_unmap)"},{"line_number":4567,"context_line":"                except Exception as ex:"},{"line_number":4568,"context_line":"                    LOG.error(\u0027Failed to get delete volume %(volume)s in \u0027"},{"line_number":4569,"context_line":"                              \u0027master backend. Exception: %(err)s.\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"bc4c2893_d2411bc5","line":4566,"in_reply_to":"497b62a7_24c5aa4b","updated":"2026-09-22 11:21:41.000000000","message":"Resolved.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4567,"context_line":"                except Exception as ex:"},{"line_number":4568,"context_line":"                    LOG.error(\u0027Failed to get delete volume %(volume)s in \u0027"},{"line_number":4569,"context_line":"                              \u0027master backend. Exception: %(err)s.\u0027,"},{"line_number":4570,"context_line":"                              {\u0027volume\u0027: volume[\u0027name\u0027],"},{"line_number":4571,"context_line":"                               \u0027err\u0027: ex})"},{"line_number":4572,"context_line":"        else:"},{"line_number":4573,"context_line":"            if self._active_backend_id:"}],"source_content_type":"text/x-python","patch_set":18,"id":"60f1eb74_09bca0ec","line":4570,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"f246598570b3b27aabeb38296dc3188f1e4ddbf1","unresolved":true,"context_lines":[{"line_number":4567,"context_line":"                except Exception as ex:"},{"line_number":4568,"context_line":"                    LOG.error(\u0027Failed to get delete volume %(volume)s in \u0027"},{"line_number":4569,"context_line":"                              \u0027master backend. Exception: %(err)s.\u0027,"},{"line_number":4570,"context_line":"                              {\u0027volume\u0027: volume[\u0027name\u0027],"},{"line_number":4571,"context_line":"                               \u0027err\u0027: ex})"},{"line_number":4572,"context_line":"        else:"},{"line_number":4573,"context_line":"            if self._active_backend_id:"}],"source_content_type":"text/x-python","patch_set":18,"id":"6431d073_a79f43fa","line":4570,"in_reply_to":"55825bd2_c0cc90d3","updated":"2026-09-24 11:33:21.000000000","message":"It looks like you changed this one anyway.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4567,"context_line":"                except Exception as ex:"},{"line_number":4568,"context_line":"                    LOG.error(\u0027Failed to get delete volume %(volume)s in \u0027"},{"line_number":4569,"context_line":"                              \u0027master backend. Exception: %(err)s.\u0027,"},{"line_number":4570,"context_line":"                              {\u0027volume\u0027: volume[\u0027name\u0027],"},{"line_number":4571,"context_line":"                               \u0027err\u0027: ex})"},{"line_number":4572,"context_line":"        else:"},{"line_number":4573,"context_line":"            if self._active_backend_id:"}],"source_content_type":"text/x-python","patch_set":18,"id":"55825bd2_c0cc90d3","line":4570,"in_reply_to":"60f1eb74_09bca0ec","updated":"2026-09-22 11:21:41.000000000","message":"Not needed in the log message because we want the user to get the cinder\u0027s volume name to trace the volume corresponding to the logs.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4577,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":4578,"context_line":"            else:"},{"line_number":4579,"context_line":"                self._helpers.delete_vdisk("},{"line_number":4580,"context_line":"                    volume[\u0027name\u0027],"},{"line_number":4581,"context_line":"                    force_unmap\u003dforce_unmap,"},{"line_number":4582,"context_line":"                    force_delete\u003dFalse)"},{"line_number":4583,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"58f2a335_b8c272ec","line":4580,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4577,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":4578,"context_line":"            else:"},{"line_number":4579,"context_line":"                self._helpers.delete_vdisk("},{"line_number":4580,"context_line":"                    volume[\u0027name\u0027],"},{"line_number":4581,"context_line":"                    force_unmap\u003dforce_unmap,"},{"line_number":4582,"context_line":"                    force_delete\u003dFalse)"},{"line_number":4583,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"75567c69_69a1388e","line":4580,"in_reply_to":"58f2a335_b8c272ec","updated":"2026-09-22 11:21:41.000000000","message":"Resolved.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4587,"context_line":"            if not len(self._vdiskcopyops):"},{"line_number":4588,"context_line":"                self._vdiskcopyops_loop.stop()"},{"line_number":4589,"context_line":"                self._vdiskcopyops_loop \u003d None"},{"line_number":4590,"context_line":"        LOG.debug(\u0027leave: delete_volume: volume %s\u0027, volume[\u0027name\u0027])"},{"line_number":4591,"context_line":""},{"line_number":4592,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":4593,"context_line":"        ctxt \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":18,"id":"f374e9c0_cf043d36","line":4590,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4587,"context_line":"            if not len(self._vdiskcopyops):"},{"line_number":4588,"context_line":"                self._vdiskcopyops_loop.stop()"},{"line_number":4589,"context_line":"                self._vdiskcopyops_loop \u003d None"},{"line_number":4590,"context_line":"        LOG.debug(\u0027leave: delete_volume: volume %s\u0027, volume[\u0027name\u0027])"},{"line_number":4591,"context_line":""},{"line_number":4592,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":4593,"context_line":"        ctxt \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":18,"id":"a7c9abfc_c24b256a","line":4590,"in_reply_to":"f374e9c0_cf043d36","updated":"2026-09-22 11:21:41.000000000","message":"Resolved.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4642,"context_line":"            self._extend_volume_op(volume, volume[\u0027size\u0027],"},{"line_number":4643,"context_line":"                                   snapshot[\u0027volume_size\u0027])"},{"line_number":4644,"context_line":"        if opts[\u0027qos\u0027]:"},{"line_number":4645,"context_line":"            self._helpers.add_vdisk_qos(volume[\u0027name\u0027], opts[\u0027qos\u0027],"},{"line_number":4646,"context_line":"                                        volume[\u0027size\u0027])"},{"line_number":4647,"context_line":"            model_update \u003d self._qos_model_update(model_update, volume)"},{"line_number":4648,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"cc2840ab_37aea4c8","line":4645,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4642,"context_line":"            self._extend_volume_op(volume, volume[\u0027size\u0027],"},{"line_number":4643,"context_line":"                                   snapshot[\u0027volume_size\u0027])"},{"line_number":4644,"context_line":"        if opts[\u0027qos\u0027]:"},{"line_number":4645,"context_line":"            self._helpers.add_vdisk_qos(volume[\u0027name\u0027], opts[\u0027qos\u0027],"},{"line_number":4646,"context_line":"                                        volume[\u0027size\u0027])"},{"line_number":4647,"context_line":"            model_update \u003d self._qos_model_update(model_update, volume)"},{"line_number":4648,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"2fc6f335_64bcdccf","line":4645,"in_reply_to":"cc2840ab_37aea4c8","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4664,"context_line":""},{"line_number":4665,"context_line":"        if opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027:"},{"line_number":4666,"context_line":"            LOG.debug(\u0027The volume %s to be created is a hyperswap \u0027"},{"line_number":4667,"context_line":"                      \u0027volume.\u0027, volume.name)"},{"line_number":4668,"context_line":"            # Ensures the vdisk is not part of FC mapping."},{"line_number":4669,"context_line":"            # Otherwize convert it to hyperswap volume will be failed."},{"line_number":4670,"context_line":"            self._helpers.ensure_vdisk_no_fc_mappings(volume[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"d8869e2b_decde737","line":4667,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4664,"context_line":""},{"line_number":4665,"context_line":"        if opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027:"},{"line_number":4666,"context_line":"            LOG.debug(\u0027The volume %s to be created is a hyperswap \u0027"},{"line_number":4667,"context_line":"                      \u0027volume.\u0027, volume.name)"},{"line_number":4668,"context_line":"            # Ensures the vdisk is not part of FC mapping."},{"line_number":4669,"context_line":"            # Otherwize convert it to hyperswap volume will be failed."},{"line_number":4670,"context_line":"            self._helpers.ensure_vdisk_no_fc_mappings(volume[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"4ce0b0f3_e3ffd19c","line":4667,"in_reply_to":"d8869e2b_decde737","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4667,"context_line":"                      \u0027volume.\u0027, volume.name)"},{"line_number":4668,"context_line":"            # Ensures the vdisk is not part of FC mapping."},{"line_number":4669,"context_line":"            # Otherwize convert it to hyperswap volume will be failed."},{"line_number":4670,"context_line":"            self._helpers.ensure_vdisk_no_fc_mappings(volume[\u0027name\u0027],"},{"line_number":4671,"context_line":"                                                      allow_snaps\u003dTrue,"},{"line_number":4672,"context_line":"                                                      allow_fctgt\u003dFalse)"},{"line_number":4673,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"d872f140_2cdd5665","line":4670,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4667,"context_line":"                      \u0027volume.\u0027, volume.name)"},{"line_number":4668,"context_line":"            # Ensures the vdisk is not part of FC mapping."},{"line_number":4669,"context_line":"            # Otherwize convert it to hyperswap volume will be failed."},{"line_number":4670,"context_line":"            self._helpers.ensure_vdisk_no_fc_mappings(volume[\u0027name\u0027],"},{"line_number":4671,"context_line":"                                                      allow_snaps\u003dTrue,"},{"line_number":4672,"context_line":"                                                      allow_fctgt\u003dFalse)"},{"line_number":4673,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"8e88f79f_1eda8626","line":4670,"in_reply_to":"d872f140_2cdd5665","updated":"2026-09-22 11:21:41.000000000","message":"Resolved.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4671,"context_line":"                                                      allow_snaps\u003dTrue,"},{"line_number":4672,"context_line":"                                                      allow_fctgt\u003dFalse)"},{"line_number":4673,"context_line":""},{"line_number":4674,"context_line":"            self._helpers.convert_volume_to_hyperswap(volume[\u0027name\u0027],"},{"line_number":4675,"context_line":"                                                      opts,"},{"line_number":4676,"context_line":"                                                      self._state)"},{"line_number":4677,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"94b314c1_ced6da9b","line":4674,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4671,"context_line":"                                                      allow_snaps\u003dTrue,"},{"line_number":4672,"context_line":"                                                      allow_fctgt\u003dFalse)"},{"line_number":4673,"context_line":""},{"line_number":4674,"context_line":"            self._helpers.convert_volume_to_hyperswap(volume[\u0027name\u0027],"},{"line_number":4675,"context_line":"                                                      opts,"},{"line_number":4676,"context_line":"                                                      self._state)"},{"line_number":4677,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9acb3ca8_d0efd466","line":4674,"in_reply_to":"94b314c1_ced6da9b","updated":"2026-09-22 11:21:41.000000000","message":"Resolved.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4707,"context_line":"                                   src_volume[\u0027size\u0027])"},{"line_number":4708,"context_line":""},{"line_number":4709,"context_line":"        if opts[\u0027qos\u0027]:"},{"line_number":4710,"context_line":"            self._helpers.add_vdisk_qos(tgt_volume[\u0027name\u0027], opts[\u0027qos\u0027],"},{"line_number":4711,"context_line":"                                        tgt_volume[\u0027size\u0027])"},{"line_number":4712,"context_line":"            model_update \u003d self._qos_model_update(model_update, tgt_volume)"},{"line_number":4713,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"e410ff6a_e695a345","line":4710,"updated":"2026-08-18 23:41:19.000000000","message":"``tgt_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4707,"context_line":"                                   src_volume[\u0027size\u0027])"},{"line_number":4708,"context_line":""},{"line_number":4709,"context_line":"        if opts[\u0027qos\u0027]:"},{"line_number":4710,"context_line":"            self._helpers.add_vdisk_qos(tgt_volume[\u0027name\u0027], opts[\u0027qos\u0027],"},{"line_number":4711,"context_line":"                                        tgt_volume[\u0027size\u0027])"},{"line_number":4712,"context_line":"            model_update \u003d self._qos_model_update(model_update, tgt_volume)"},{"line_number":4713,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9230418d_5bc12ce9","line":4710,"in_reply_to":"e410ff6a_e695a345","updated":"2026-09-22 11:21:41.000000000","message":"Resolved.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4713,"context_line":""},{"line_number":4714,"context_line":"        if opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027:"},{"line_number":4715,"context_line":"            LOG.debug(\u0027The source volume %s to be cloned is a hyperswap \u0027"},{"line_number":4716,"context_line":"                      \u0027volume.\u0027, src_volume.name)"},{"line_number":4717,"context_line":"            # Ensures the vdisk is not part of FC mapping."},{"line_number":4718,"context_line":"            # Otherwize convert it to hyperswap volume will be failed."},{"line_number":4719,"context_line":"            self._helpers.ensure_vdisk_no_fc_mappings(tgt_volume[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"1945bfc8_46386636","line":4716,"updated":"2026-08-18 23:41:19.000000000","message":"``src_volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4713,"context_line":""},{"line_number":4714,"context_line":"        if opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027:"},{"line_number":4715,"context_line":"            LOG.debug(\u0027The source volume %s to be cloned is a hyperswap \u0027"},{"line_number":4716,"context_line":"                      \u0027volume.\u0027, src_volume.name)"},{"line_number":4717,"context_line":"            # Ensures the vdisk is not part of FC mapping."},{"line_number":4718,"context_line":"            # Otherwize convert it to hyperswap volume will be failed."},{"line_number":4719,"context_line":"            self._helpers.ensure_vdisk_no_fc_mappings(tgt_volume[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"d9068f1d_c5ee8738","line":4716,"in_reply_to":"1945bfc8_46386636","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4716,"context_line":"                      \u0027volume.\u0027, src_volume.name)"},{"line_number":4717,"context_line":"            # Ensures the vdisk is not part of FC mapping."},{"line_number":4718,"context_line":"            # Otherwize convert it to hyperswap volume will be failed."},{"line_number":4719,"context_line":"            self._helpers.ensure_vdisk_no_fc_mappings(tgt_volume[\u0027name\u0027],"},{"line_number":4720,"context_line":"                                                      allow_snaps\u003dTrue,"},{"line_number":4721,"context_line":"                                                      allow_fctgt\u003dFalse)"},{"line_number":4722,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"733331c6_e3c0b54b","line":4719,"updated":"2026-08-18 23:41:19.000000000","message":"``tgt_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4716,"context_line":"                      \u0027volume.\u0027, src_volume.name)"},{"line_number":4717,"context_line":"            # Ensures the vdisk is not part of FC mapping."},{"line_number":4718,"context_line":"            # Otherwize convert it to hyperswap volume will be failed."},{"line_number":4719,"context_line":"            self._helpers.ensure_vdisk_no_fc_mappings(tgt_volume[\u0027name\u0027],"},{"line_number":4720,"context_line":"                                                      allow_snaps\u003dTrue,"},{"line_number":4721,"context_line":"                                                      allow_fctgt\u003dFalse)"},{"line_number":4722,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"590d5832_bb40002c","line":4719,"in_reply_to":"733331c6_e3c0b54b","updated":"2026-09-22 11:21:41.000000000","message":"Resolved.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":4720,"context_line":"                                                      allow_snaps\u003dTrue,"},{"line_number":4721,"context_line":"                                                      allow_fctgt\u003dFalse)"},{"line_number":4722,"context_line":""},{"line_number":4723,"context_line":"            self._helpers.convert_volume_to_hyperswap(tgt_volume[\u0027name\u0027],"},{"line_number":4724,"context_line":"                                                      opts,"},{"line_number":4725,"context_line":"                                                      self._state)"},{"line_number":4726,"context_line":"            # Updating Hyperswap volume replication properties"}],"source_content_type":"text/x-python","patch_set":18,"id":"a7b84c2a_108706b2","line":4723,"updated":"2026-08-18 23:41:19.000000000","message":"``tgt_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":4720,"context_line":"                                                      allow_snaps\u003dTrue,"},{"line_number":4721,"context_line":"                                                      allow_fctgt\u003dFalse)"},{"line_number":4722,"context_line":""},{"line_number":4723,"context_line":"            self._helpers.convert_volume_to_hyperswap(tgt_volume[\u0027name\u0027],"},{"line_number":4724,"context_line":"                                                      opts,"},{"line_number":4725,"context_line":"                                                      self._state)"},{"line_number":4726,"context_line":"            # Updating Hyperswap volume replication properties"}],"source_content_type":"text/x-python","patch_set":18,"id":"a25870f4_8b14f541","line":4723,"in_reply_to":"a7b84c2a_108706b2","updated":"2026-09-22 11:21:41.000000000","message":"Resolved.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5098,"context_line":"        for vol_id, copy_ops in copy_items:"},{"line_number":5099,"context_line":"            try:"},{"line_number":5100,"context_line":"                volume \u003d self.db.volume_get(ctxt, vol_id)"},{"line_number":5101,"context_line":"                volume_name \u003d (volume[\u0027provider_id\u0027]"},{"line_number":5102,"context_line":"                               if volume[\u0027provider_id\u0027]"},{"line_number":5103,"context_line":"                               else volume[\u0027name\u0027])"},{"line_number":5104,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":18,"id":"37dec4ba_7fea95c3","line":5101,"updated":"2026-08-18 23:41:19.000000000","message":"Why not use the new ``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5098,"context_line":"        for vol_id, copy_ops in copy_items:"},{"line_number":5099,"context_line":"            try:"},{"line_number":5100,"context_line":"                volume \u003d self.db.volume_get(ctxt, vol_id)"},{"line_number":5101,"context_line":"                volume_name \u003d (volume[\u0027provider_id\u0027]"},{"line_number":5102,"context_line":"                               if volume[\u0027provider_id\u0027]"},{"line_number":5103,"context_line":"                               else volume[\u0027name\u0027])"},{"line_number":5104,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":18,"id":"caad7e37_d66da68d","line":5101,"in_reply_to":"37dec4ba_7fea95c3","updated":"2026-09-22 11:21:41.000000000","message":"Resolved.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5201,"context_line":"        for volume in rep_volumes:"},{"line_number":5202,"context_line":"            rep_type \u003d self._get_volume_replicated_type(ctxt, volume)"},{"line_number":5203,"context_line":"            replica_obj \u003d self._get_replica_obj(rep_type)"},{"line_number":5204,"context_line":"            tgt_volume \u003d storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027]"},{"line_number":5205,"context_line":"            rep_info \u003d self._helpers.get_relationship_info(tgt_volume)"},{"line_number":5206,"context_line":"            if not rep_info:"},{"line_number":5207,"context_line":"                volumes_update.append("}],"source_content_type":"text/x-python","patch_set":18,"id":"1ddef515_a19b3242","line":5204,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5201,"context_line":"        for volume in rep_volumes:"},{"line_number":5202,"context_line":"            rep_type \u003d self._get_volume_replicated_type(ctxt, volume)"},{"line_number":5203,"context_line":"            replica_obj \u003d self._get_replica_obj(rep_type)"},{"line_number":5204,"context_line":"            tgt_volume \u003d storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027]"},{"line_number":5205,"context_line":"            rep_info \u003d self._helpers.get_relationship_info(tgt_volume)"},{"line_number":5206,"context_line":"            if not rep_info:"},{"line_number":5207,"context_line":"                volumes_update.append("}],"source_content_type":"text/x-python","patch_set":18,"id":"858c8eb7_08c85d1e","line":5204,"in_reply_to":"1ddef515_a19b3242","updated":"2026-09-22 11:21:41.000000000","message":"Resolved.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5215,"context_line":"                          \u0027aux %(aux)s. Please re-establish the \u0027"},{"line_number":5216,"context_line":"                          \u0027relationship and synchronize the volumes on \u0027"},{"line_number":5217,"context_line":"                          \u0027backend storage.\u0027,"},{"line_number":5218,"context_line":"                          {\u0027master\u0027: volume[\u0027name\u0027], \u0027aux\u0027: tgt_volume})"},{"line_number":5219,"context_line":"                continue"},{"line_number":5220,"context_line":"            LOG.debug(\u0027_failover_replica_volumes: vol\u003d%(vol)s, master_vol\u003d\u0027"},{"line_number":5221,"context_line":"                      \u0027%(master_vol)s, aux_vol\u003d%(aux_vol)s, state\u003d%(state)s, \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"3b353c66_e51c6477","line":5218,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5215,"context_line":"                          \u0027aux %(aux)s. Please re-establish the \u0027"},{"line_number":5216,"context_line":"                          \u0027relationship and synchronize the volumes on \u0027"},{"line_number":5217,"context_line":"                          \u0027backend storage.\u0027,"},{"line_number":5218,"context_line":"                          {\u0027master\u0027: volume[\u0027name\u0027], \u0027aux\u0027: tgt_volume})"},{"line_number":5219,"context_line":"                continue"},{"line_number":5220,"context_line":"            LOG.debug(\u0027_failover_replica_volumes: vol\u003d%(vol)s, master_vol\u003d\u0027"},{"line_number":5221,"context_line":"                      \u0027%(master_vol)s, aux_vol\u003d%(aux_vol)s, state\u003d%(state)s, \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"8d3cc54a_73060d19","line":5218,"in_reply_to":"3b353c66_e51c6477","updated":"2026-09-22 11:21:41.000000000","message":"Resolved.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5220,"context_line":"            LOG.debug(\u0027_failover_replica_volumes: vol\u003d%(vol)s, master_vol\u003d\u0027"},{"line_number":5221,"context_line":"                      \u0027%(master_vol)s, aux_vol\u003d%(aux_vol)s, state\u003d%(state)s, \u0027"},{"line_number":5222,"context_line":"                      \u0027primary\u003d%(primary)s\u0027,"},{"line_number":5223,"context_line":"                      {\u0027vol\u0027: volume[\u0027name\u0027],"},{"line_number":5224,"context_line":"                       \u0027master_vol\u0027: rep_info[\u0027master_vdisk_name\u0027],"},{"line_number":5225,"context_line":"                       \u0027aux_vol\u0027: rep_info[\u0027aux_vdisk_name\u0027],"},{"line_number":5226,"context_line":"                       \u0027state\u0027: rep_info[\u0027state\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"04fa67a0_245008d3","line":5223,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5220,"context_line":"            LOG.debug(\u0027_failover_replica_volumes: vol\u003d%(vol)s, master_vol\u003d\u0027"},{"line_number":5221,"context_line":"                      \u0027%(master_vol)s, aux_vol\u003d%(aux_vol)s, state\u003d%(state)s, \u0027"},{"line_number":5222,"context_line":"                      \u0027primary\u003d%(primary)s\u0027,"},{"line_number":5223,"context_line":"                      {\u0027vol\u0027: volume[\u0027name\u0027],"},{"line_number":5224,"context_line":"                       \u0027master_vol\u0027: rep_info[\u0027master_vdisk_name\u0027],"},{"line_number":5225,"context_line":"                       \u0027aux_vol\u0027: rep_info[\u0027aux_vdisk_name\u0027],"},{"line_number":5226,"context_line":"                       \u0027state\u0027: rep_info[\u0027state\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"42ffb369_130cfc11","line":5223,"in_reply_to":"04fa67a0_245008d3","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5228,"context_line":"            if volume.status \u003d\u003d \u0027in-use\u0027:"},{"line_number":5229,"context_line":"                LOG.warning(\u0027_failback_replica_volumes: failback in-use \u0027"},{"line_number":5230,"context_line":"                            \u0027volume: %(volume)s is not recommended.\u0027,"},{"line_number":5231,"context_line":"                            {\u0027volume\u0027: volume.name})"},{"line_number":5232,"context_line":"            try:"},{"line_number":5233,"context_line":"                replica_obj.replication_failback(volume)"},{"line_number":5234,"context_line":"                model_updates \u003d {"}],"source_content_type":"text/x-python","patch_set":18,"id":"cd62fe66_a79e0c12","line":5231,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5228,"context_line":"            if volume.status \u003d\u003d \u0027in-use\u0027:"},{"line_number":5229,"context_line":"                LOG.warning(\u0027_failback_replica_volumes: failback in-use \u0027"},{"line_number":5230,"context_line":"                            \u0027volume: %(volume)s is not recommended.\u0027,"},{"line_number":5231,"context_line":"                            {\u0027volume\u0027: volume.name})"},{"line_number":5232,"context_line":"            try:"},{"line_number":5233,"context_line":"                replica_obj.replication_failback(volume)"},{"line_number":5234,"context_line":"                model_updates \u003d {"}],"source_content_type":"text/x-python","patch_set":18,"id":"49a2c4a4_5238f6dd","line":5231,"in_reply_to":"cd62fe66_a79e0c12","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5309,"context_line":"            LOG.warning(\u0027Fail to establish partnership in backend. \u0027"},{"line_number":5310,"context_line":"                        \u0027error\u003d%(ex)s\u0027, {\u0027error\u0027: ex})"},{"line_number":5311,"context_line":"        for volume in volumes:"},{"line_number":5312,"context_line":"            tgt_volume \u003d storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027]"},{"line_number":5313,"context_line":"            rep_info \u003d self._helpers.get_relationship_info(tgt_volume)"},{"line_number":5314,"context_line":"            if not rep_info:"},{"line_number":5315,"context_line":"                LOG.error(\u0027_sync_with_aux: no rc-releationship is \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"716cf693_4fdd9da6","line":5312,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5309,"context_line":"            LOG.warning(\u0027Fail to establish partnership in backend. \u0027"},{"line_number":5310,"context_line":"                        \u0027error\u003d%(ex)s\u0027, {\u0027error\u0027: ex})"},{"line_number":5311,"context_line":"        for volume in volumes:"},{"line_number":5312,"context_line":"            tgt_volume \u003d storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027]"},{"line_number":5313,"context_line":"            rep_info \u003d self._helpers.get_relationship_info(tgt_volume)"},{"line_number":5314,"context_line":"            if not rep_info:"},{"line_number":5315,"context_line":"                LOG.error(\u0027_sync_with_aux: no rc-releationship is \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"2b3f52a8_4bb20b7c","line":5312,"in_reply_to":"716cf693_4fdd9da6","updated":"2026-09-22 11:21:41.000000000","message":"Resolved.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5316,"context_line":"                          \u0027established between master: %(master)s and aux \u0027"},{"line_number":5317,"context_line":"                          \u0027%(aux)s. Please re-establish the relationship \u0027"},{"line_number":5318,"context_line":"                          \u0027and synchronize the volumes on backend \u0027"},{"line_number":5319,"context_line":"                          \u0027storage.\u0027, {\u0027master\u0027: volume[\u0027name\u0027],"},{"line_number":5320,"context_line":"                                       \u0027aux\u0027: tgt_volume})"},{"line_number":5321,"context_line":"                continue"},{"line_number":5322,"context_line":"            LOG.debug(\u0027_sync_with_aux: volume: %(volume)s rep_info:master_vol\u003d\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"4da0f145_64d5f9cf","line":5319,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5316,"context_line":"                          \u0027established between master: %(master)s and aux \u0027"},{"line_number":5317,"context_line":"                          \u0027%(aux)s. Please re-establish the relationship \u0027"},{"line_number":5318,"context_line":"                          \u0027and synchronize the volumes on backend \u0027"},{"line_number":5319,"context_line":"                          \u0027storage.\u0027, {\u0027master\u0027: volume[\u0027name\u0027],"},{"line_number":5320,"context_line":"                                       \u0027aux\u0027: tgt_volume})"},{"line_number":5321,"context_line":"                continue"},{"line_number":5322,"context_line":"            LOG.debug(\u0027_sync_with_aux: volume: %(volume)s rep_info:master_vol\u003d\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"26966a58_108a24d8","line":5319,"in_reply_to":"4da0f145_64d5f9cf","updated":"2026-09-22 11:21:41.000000000","message":"Resolved.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5322,"context_line":"            LOG.debug(\u0027_sync_with_aux: volume: %(volume)s rep_info:master_vol\u003d\u0027"},{"line_number":5323,"context_line":"                      \u0027%(master_vol)s, aux_vol\u003d%(aux_vol)s, state\u003d%(state)s, \u0027"},{"line_number":5324,"context_line":"                      \u0027primary\u003d%(primary)s\u0027,"},{"line_number":5325,"context_line":"                      {\u0027volume\u0027: volume[\u0027name\u0027],"},{"line_number":5326,"context_line":"                       \u0027master_vol\u0027: rep_info[\u0027master_vdisk_name\u0027],"},{"line_number":5327,"context_line":"                       \u0027aux_vol\u0027: rep_info[\u0027aux_vdisk_name\u0027],"},{"line_number":5328,"context_line":"                       \u0027state\u0027: rep_info[\u0027state\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"136eb50f_433e8fc3","line":5325,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5322,"context_line":"            LOG.debug(\u0027_sync_with_aux: volume: %(volume)s rep_info:master_vol\u003d\u0027"},{"line_number":5323,"context_line":"                      \u0027%(master_vol)s, aux_vol\u003d%(aux_vol)s, state\u003d%(state)s, \u0027"},{"line_number":5324,"context_line":"                      \u0027primary\u003d%(primary)s\u0027,"},{"line_number":5325,"context_line":"                      {\u0027volume\u0027: volume[\u0027name\u0027],"},{"line_number":5326,"context_line":"                       \u0027master_vol\u0027: rep_info[\u0027master_vdisk_name\u0027],"},{"line_number":5327,"context_line":"                       \u0027aux_vol\u0027: rep_info[\u0027aux_vdisk_name\u0027],"},{"line_number":5328,"context_line":"                       \u0027state\u0027: rep_info[\u0027state\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"e12ee9e5_7e0ce5b4","line":5325,"in_reply_to":"136eb50f_433e8fc3","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5345,"context_line":"                            \u0027 %(master)s and aux %(aux)s. Please \u0027"},{"line_number":5346,"context_line":"                            \u0027re-establish the relationship and synchronize\u0027"},{"line_number":5347,"context_line":"                            \u0027 the volumes on backend storage. error\u003d\u0027"},{"line_number":5348,"context_line":"                            \u0027%(ex)s\u0027, {\u0027master\u0027: volume[\u0027name\u0027],"},{"line_number":5349,"context_line":"                                       \u0027aux\u0027: tgt_volume,"},{"line_number":5350,"context_line":"                                       \u0027error\u0027: ex})"},{"line_number":5351,"context_line":"        LOG.debug(\u0027leave: _sync_with_aux.\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"15d27732_1b0fa755","line":5348,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5345,"context_line":"                            \u0027 %(master)s and aux %(aux)s. Please \u0027"},{"line_number":5346,"context_line":"                            \u0027re-establish the relationship and synchronize\u0027"},{"line_number":5347,"context_line":"                            \u0027 the volumes on backend storage. error\u003d\u0027"},{"line_number":5348,"context_line":"                            \u0027%(ex)s\u0027, {\u0027master\u0027: volume[\u0027name\u0027],"},{"line_number":5349,"context_line":"                                       \u0027aux\u0027: tgt_volume,"},{"line_number":5350,"context_line":"                                       \u0027error\u0027: ex})"},{"line_number":5351,"context_line":"        LOG.debug(\u0027leave: _sync_with_aux.\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"52fa7bc7_c5bfbe72","line":5348,"in_reply_to":"15d27732_1b0fa755","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5352,"context_line":""},{"line_number":5353,"context_line":"    def _wait_replica_ready(self, ctxt, volumes):"},{"line_number":5354,"context_line":"        for volume in volumes:"},{"line_number":5355,"context_line":"            tgt_volume \u003d storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027]"},{"line_number":5356,"context_line":"            try:"},{"line_number":5357,"context_line":"                self._wait_replica_vol_ready(ctxt, tgt_volume)"},{"line_number":5358,"context_line":"            except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":18,"id":"821728f7_4e469653","line":5355,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5352,"context_line":""},{"line_number":5353,"context_line":"    def _wait_replica_ready(self, ctxt, volumes):"},{"line_number":5354,"context_line":"        for volume in volumes:"},{"line_number":5355,"context_line":"            tgt_volume \u003d storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027]"},{"line_number":5356,"context_line":"            try:"},{"line_number":5357,"context_line":"                self._wait_replica_vol_ready(ctxt, tgt_volume)"},{"line_number":5358,"context_line":"            except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":18,"id":"51e02ee3_be8a8ed7","line":5355,"in_reply_to":"821728f7_4e469653","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5459,"context_line":"            # Try do the fail-over."},{"line_number":5460,"context_line":"            try:"},{"line_number":5461,"context_line":"                rep_info \u003d self._aux_backend_helpers.get_relationship_info("},{"line_number":5462,"context_line":"                    storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027])"},{"line_number":5463,"context_line":"                if not rep_info:"},{"line_number":5464,"context_line":"                    volumes_update.append("},{"line_number":5465,"context_line":"                        {\u0027volume_id\u0027: volume[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"ef54fa93_6dda3208","line":5462,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5459,"context_line":"            # Try do the fail-over."},{"line_number":5460,"context_line":"            try:"},{"line_number":5461,"context_line":"                rep_info \u003d self._aux_backend_helpers.get_relationship_info("},{"line_number":5462,"context_line":"                    storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027])"},{"line_number":5463,"context_line":"                if not rep_info:"},{"line_number":5464,"context_line":"                    volumes_update.append("},{"line_number":5465,"context_line":"                        {\u0027volume_id\u0027: volume[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"f646e85d_557c454c","line":5462,"in_reply_to":"ef54fa93_6dda3208","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5472,"context_line":"                              \u0027%(volume)s. Please re-establish the rc-\u0027"},{"line_number":5473,"context_line":"                              \u0027relationship and synchronize the volumes on\u0027"},{"line_number":5474,"context_line":"                              \u0027 backend storage.\u0027,"},{"line_number":5475,"context_line":"                              {\u0027volume\u0027: volume.name})"},{"line_number":5476,"context_line":"                    continue"},{"line_number":5477,"context_line":"                LOG.debug(\u0027_failover_replica_volumes: vol\u003d%(vol)s, \u0027"},{"line_number":5478,"context_line":"                          \u0027master_vol\u003d%(master_vol)s, aux_vol\u003d%(aux_vol)s, \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"d515fda8_15dcbf66","line":5475,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5472,"context_line":"                              \u0027%(volume)s. Please re-establish the rc-\u0027"},{"line_number":5473,"context_line":"                              \u0027relationship and synchronize the volumes on\u0027"},{"line_number":5474,"context_line":"                              \u0027 backend storage.\u0027,"},{"line_number":5475,"context_line":"                              {\u0027volume\u0027: volume.name})"},{"line_number":5476,"context_line":"                    continue"},{"line_number":5477,"context_line":"                LOG.debug(\u0027_failover_replica_volumes: vol\u003d%(vol)s, \u0027"},{"line_number":5478,"context_line":"                          \u0027master_vol\u003d%(master_vol)s, aux_vol\u003d%(aux_vol)s, \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"1537d8c4_e769d6af","line":5475,"in_reply_to":"d515fda8_15dcbf66","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5477,"context_line":"                LOG.debug(\u0027_failover_replica_volumes: vol\u003d%(vol)s, \u0027"},{"line_number":5478,"context_line":"                          \u0027master_vol\u003d%(master_vol)s, aux_vol\u003d%(aux_vol)s, \u0027"},{"line_number":5479,"context_line":"                          \u0027state\u003d%(state)s, primary\u003d%(primary)s\u0027,"},{"line_number":5480,"context_line":"                          {\u0027vol\u0027: volume[\u0027name\u0027],"},{"line_number":5481,"context_line":"                           \u0027master_vol\u0027: rep_info[\u0027master_vdisk_name\u0027],"},{"line_number":5482,"context_line":"                           \u0027aux_vol\u0027: rep_info[\u0027aux_vdisk_name\u0027],"},{"line_number":5483,"context_line":"                           \u0027state\u0027: rep_info[\u0027state\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"90883901_9f08b947","line":5480,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5477,"context_line":"                LOG.debug(\u0027_failover_replica_volumes: vol\u003d%(vol)s, \u0027"},{"line_number":5478,"context_line":"                          \u0027master_vol\u003d%(master_vol)s, aux_vol\u003d%(aux_vol)s, \u0027"},{"line_number":5479,"context_line":"                          \u0027state\u003d%(state)s, primary\u003d%(primary)s\u0027,"},{"line_number":5480,"context_line":"                          {\u0027vol\u0027: volume[\u0027name\u0027],"},{"line_number":5481,"context_line":"                           \u0027master_vol\u0027: rep_info[\u0027master_vdisk_name\u0027],"},{"line_number":5482,"context_line":"                           \u0027aux_vol\u0027: rep_info[\u0027aux_vdisk_name\u0027],"},{"line_number":5483,"context_line":"                           \u0027state\u0027: rep_info[\u0027state\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ee69a42_d137aeb1","line":5480,"in_reply_to":"90883901_9f08b947","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5485,"context_line":"                if volume.status \u003d\u003d \u0027in-use\u0027:"},{"line_number":5486,"context_line":"                    LOG.warning(\u0027_failover_replica_volumes: failover in-use \u0027"},{"line_number":5487,"context_line":"                                \u0027volume: %(volume)s is not recommended.\u0027,"},{"line_number":5488,"context_line":"                                {\u0027volume\u0027: volume.name})"},{"line_number":5489,"context_line":"                replica_obj.failover_volume_host(ctxt, volume)"},{"line_number":5490,"context_line":"                model_updates \u003d {"},{"line_number":5491,"context_line":"                    \u0027replication_status\u0027: fields.ReplicationStatus.FAILED_OVER}"}],"source_content_type":"text/x-python","patch_set":18,"id":"9f6bf820_af7ad5e4","line":5488,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5485,"context_line":"                if volume.status \u003d\u003d \u0027in-use\u0027:"},{"line_number":5486,"context_line":"                    LOG.warning(\u0027_failover_replica_volumes: failover in-use \u0027"},{"line_number":5487,"context_line":"                                \u0027volume: %(volume)s is not recommended.\u0027,"},{"line_number":5488,"context_line":"                                {\u0027volume\u0027: volume.name})"},{"line_number":5489,"context_line":"                replica_obj.failover_volume_host(ctxt, volume)"},{"line_number":5490,"context_line":"                model_updates \u003d {"},{"line_number":5491,"context_line":"                    \u0027replication_status\u0027: fields.ReplicationStatus.FAILED_OVER}"}],"source_content_type":"text/x-python","patch_set":18,"id":"5e872850_2b147aa1","line":5488,"in_reply_to":"9f6bf820_af7ad5e4","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":5571,"context_line":"            rep_type \u003d self._get_volume_replicated_type(ctxt, volume)"},{"line_number":5572,"context_line":"            if rep_type:"},{"line_number":5573,"context_line":"                tgt_vol \u003d (storwize_const.REPLICA_AUX_VOL_PREFIX +"},{"line_number":5574,"context_line":"                           volume[\u0027name\u0027])"},{"line_number":5575,"context_line":"        return tgt_vol"},{"line_number":5576,"context_line":""},{"line_number":5577,"context_line":"    def _validate_replication_enabled(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"f54462f6_819593b3","line":5574,"updated":"2026-08-18 23:41:19.000000000","message":"Need to use ``tgt_vol`` here I think?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":5571,"context_line":"            rep_type \u003d self._get_volume_replicated_type(ctxt, volume)"},{"line_number":5572,"context_line":"            if rep_type:"},{"line_number":5573,"context_line":"                tgt_vol \u003d (storwize_const.REPLICA_AUX_VOL_PREFIX +"},{"line_number":5574,"context_line":"                           volume[\u0027name\u0027])"},{"line_number":5575,"context_line":"        return tgt_vol"},{"line_number":5576,"context_line":""},{"line_number":5577,"context_line":"    def _validate_replication_enabled(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"9e527db7_b74bcb26","line":5574,"in_reply_to":"f54462f6_819593b3","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6009,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":6010,"context_line":""},{"line_number":6011,"context_line":"    def migrate_volume(self, ctxt, volume, host):"},{"line_number":6012,"context_line":"        volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":6013,"context_line":"        \"\"\"Migrate directly if source and dest are managed by same storage."},{"line_number":6014,"context_line":""},{"line_number":6015,"context_line":"        We create a new vdisk copy in the desired pool, and add the original"}],"source_content_type":"text/x-python","patch_set":18,"id":"b022cc60_fc4f8025","line":6012,"updated":"2026-08-18 23:41:19.000000000","message":"Redundant call","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6009,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":6010,"context_line":""},{"line_number":6011,"context_line":"    def migrate_volume(self, ctxt, volume, host):"},{"line_number":6012,"context_line":"        volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":6013,"context_line":"        \"\"\"Migrate directly if source and dest are managed by same storage."},{"line_number":6014,"context_line":""},{"line_number":6015,"context_line":"        We create a new vdisk copy in the desired pool, and add the original"}],"source_content_type":"text/x-python","patch_set":18,"id":"a29c6b16_f8e26c67","line":6012,"in_reply_to":"b022cc60_fc4f8025","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6097,"context_line":"        resp \u003d self._helpers.lsvdiskcopy(volume_name)"},{"line_number":6098,"context_line":"        if old_opts[\u0027mirror_pool\u0027] and len(resp) \u003d\u003d 1:"},{"line_number":6099,"context_line":"            msg \u003d (_(\u0027Unable to retype: volume %s is a mirrorred vol. But it \u0027"},{"line_number":6100,"context_line":"                     \u0027has only one copy in storage.\u0027) % volume.name)"},{"line_number":6101,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":6102,"context_line":""},{"line_number":6103,"context_line":"        is_old_type_dr_pool \u003d self._helpers.is_volume_type_dr_pools("}],"source_content_type":"text/x-python","patch_set":18,"id":"546dc6c3_ebd923d2","line":6100,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6097,"context_line":"        resp \u003d self._helpers.lsvdiskcopy(volume_name)"},{"line_number":6098,"context_line":"        if old_opts[\u0027mirror_pool\u0027] and len(resp) \u003d\u003d 1:"},{"line_number":6099,"context_line":"            msg \u003d (_(\u0027Unable to retype: volume %s is a mirrorred vol. But it \u0027"},{"line_number":6100,"context_line":"                     \u0027has only one copy in storage.\u0027) % volume.name)"},{"line_number":6101,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":6102,"context_line":""},{"line_number":6103,"context_line":"        is_old_type_dr_pool \u003d self._helpers.is_volume_type_dr_pools("}],"source_content_type":"text/x-python","patch_set":18,"id":"89b81d95_aca7d266","line":6100,"in_reply_to":"546dc6c3_ebd923d2","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6115,"context_line":"            if len(resp) \u003e 1:"},{"line_number":6116,"context_line":"                msg \u003d (_(\u0027Unable to retype: current action needs volume-copy. \u0027"},{"line_number":6117,"context_line":"                         \u0027A copy of volume %s exists. Adding another copy \u0027"},{"line_number":6118,"context_line":"                         \u0027would exceed the limit of 2 copies.\u0027) % volume.name)"},{"line_number":6119,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":6120,"context_line":"            if old_opts[\u0027mirror_pool\u0027] or new_opts[\u0027mirror_pool\u0027]:"},{"line_number":6121,"context_line":"                msg \u003d (_(\u0027Unable to retype: current action needs volume-copy, \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"4ae7358d_1d3c0f95","line":6118,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6115,"context_line":"            if len(resp) \u003e 1:"},{"line_number":6116,"context_line":"                msg \u003d (_(\u0027Unable to retype: current action needs volume-copy. \u0027"},{"line_number":6117,"context_line":"                         \u0027A copy of volume %s exists. Adding another copy \u0027"},{"line_number":6118,"context_line":"                         \u0027would exceed the limit of 2 copies.\u0027) % volume.name)"},{"line_number":6119,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":6120,"context_line":"            if old_opts[\u0027mirror_pool\u0027] or new_opts[\u0027mirror_pool\u0027]:"},{"line_number":6121,"context_line":"                msg \u003d (_(\u0027Unable to retype: current action needs volume-copy, \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"14eaa9fc_972da6b9","line":6118,"in_reply_to":"4ae7358d_1d3c0f95","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6120,"context_line":"            if old_opts[\u0027mirror_pool\u0027] or new_opts[\u0027mirror_pool\u0027]:"},{"line_number":6121,"context_line":"                msg \u003d (_(\u0027Unable to retype: current action needs volume-copy, \u0027"},{"line_number":6122,"context_line":"                         \u0027it is not allowed for mirror volume \u0027"},{"line_number":6123,"context_line":"                         \u0027%s.\u0027) % volume.name)"},{"line_number":6124,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":6125,"context_line":"            need_check_dr_pool_param \u003d True"},{"line_number":6126,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5ccba221_5e44763f","line":6123,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6120,"context_line":"            if old_opts[\u0027mirror_pool\u0027] or new_opts[\u0027mirror_pool\u0027]:"},{"line_number":6121,"context_line":"                msg \u003d (_(\u0027Unable to retype: current action needs volume-copy, \u0027"},{"line_number":6122,"context_line":"                         \u0027it is not allowed for mirror volume \u0027"},{"line_number":6123,"context_line":"                         \u0027%s.\u0027) % volume.name)"},{"line_number":6124,"context_line":"                raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":6125,"context_line":"            need_check_dr_pool_param \u003d True"},{"line_number":6126,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9e84604d_3b349d96","line":6123,"in_reply_to":"5ccba221_5e44763f","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6199,"context_line":"        if new_opts[\u0027mirror_pool\u0027] or old_opts[\u0027mirror_pool\u0027]:"},{"line_number":6200,"context_line":"            msg \u003d (_(\u0027Unable to retype volume %s: current action needs \u0027"},{"line_number":6201,"context_line":"                     \u0027volume-copy, it is not allowed for hyperswap \u0027"},{"line_number":6202,"context_line":"                     \u0027type.\u0027) % volume.name)"},{"line_number":6203,"context_line":"            LOG.error(msg)"},{"line_number":6204,"context_line":"            raise exception.InvalidInput(message\u003dmsg)"},{"line_number":6205,"context_line":"        if new_rep_type or old_rep_type:"}],"source_content_type":"text/x-python","patch_set":18,"id":"070c8fe6_ae876bcd","line":6202,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6199,"context_line":"        if new_opts[\u0027mirror_pool\u0027] or old_opts[\u0027mirror_pool\u0027]:"},{"line_number":6200,"context_line":"            msg \u003d (_(\u0027Unable to retype volume %s: current action needs \u0027"},{"line_number":6201,"context_line":"                     \u0027volume-copy, it is not allowed for hyperswap \u0027"},{"line_number":6202,"context_line":"                     \u0027type.\u0027) % volume.name)"},{"line_number":6203,"context_line":"            LOG.error(msg)"},{"line_number":6204,"context_line":"            raise exception.InvalidInput(message\u003dmsg)"},{"line_number":6205,"context_line":"        if new_rep_type or old_rep_type:"}],"source_content_type":"text/x-python","patch_set":18,"id":"d6221655_43209839","line":6202,"in_reply_to":"070c8fe6_ae876bcd","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6218,"context_line":"            if old_pool !\u003d new_pool:"},{"line_number":6219,"context_line":"                msg \u003d (_(\u0027Unable to retype volume %s: current action needs \u0027"},{"line_number":6220,"context_line":"                         \u0027volume pool change, hyperswap volume does not \u0027"},{"line_number":6221,"context_line":"                         \u0027support pool change.\u0027) % volume.name)"},{"line_number":6222,"context_line":"                LOG.error(msg)"},{"line_number":6223,"context_line":"                raise exception.InvalidInput(message\u003dmsg)"},{"line_number":6224,"context_line":"            if not new_opts[\u0027easytier\u0027]:"}],"source_content_type":"text/x-python","patch_set":18,"id":"aacce8b1_83540a77","line":6221,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6218,"context_line":"            if old_pool !\u003d new_pool:"},{"line_number":6219,"context_line":"                msg \u003d (_(\u0027Unable to retype volume %s: current action needs \u0027"},{"line_number":6220,"context_line":"                         \u0027volume pool change, hyperswap volume does not \u0027"},{"line_number":6221,"context_line":"                         \u0027support pool change.\u0027) % volume.name)"},{"line_number":6222,"context_line":"                LOG.error(msg)"},{"line_number":6223,"context_line":"                raise exception.InvalidInput(message\u003dmsg)"},{"line_number":6224,"context_line":"            if not new_opts[\u0027easytier\u0027]:"}],"source_content_type":"text/x-python","patch_set":18,"id":"cb8e697c_dd98c8bd","line":6221,"in_reply_to":"aacce8b1_83540a77","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6257,"context_line":"        if (old_opts[\u0027volume_topology\u0027] !\u003d \u0027hyperswap\u0027 and"},{"line_number":6258,"context_line":"                new_opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027):"},{"line_number":6259,"context_line":"            LOG.debug(\u0027retype: Convert a normal volume %s to hyperswap \u0027"},{"line_number":6260,"context_line":"                      \u0027volume.\u0027, volume.name)"},{"line_number":6261,"context_line":"            self._helpers.convert_volume_to_hyperswap(volume_name,"},{"line_number":6262,"context_line":"                                                      new_opts,"},{"line_number":6263,"context_line":"                                                      self._state)"}],"source_content_type":"text/x-python","patch_set":18,"id":"8396b816_52b4aca0","line":6260,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6257,"context_line":"        if (old_opts[\u0027volume_topology\u0027] !\u003d \u0027hyperswap\u0027 and"},{"line_number":6258,"context_line":"                new_opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027):"},{"line_number":6259,"context_line":"            LOG.debug(\u0027retype: Convert a normal volume %s to hyperswap \u0027"},{"line_number":6260,"context_line":"                      \u0027volume.\u0027, volume.name)"},{"line_number":6261,"context_line":"            self._helpers.convert_volume_to_hyperswap(volume_name,"},{"line_number":6262,"context_line":"                                                      new_opts,"},{"line_number":6263,"context_line":"                                                      self._state)"}],"source_content_type":"text/x-python","patch_set":18,"id":"70455869_1614c5fe","line":6260,"in_reply_to":"8396b816_52b4aca0","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6264,"context_line":"        elif (old_opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027 and"},{"line_number":6265,"context_line":"                new_opts[\u0027volume_topology\u0027] !\u003d \u0027hyperswap\u0027):"},{"line_number":6266,"context_line":"            LOG.debug(\u0027retype: Convert a hyperswap volume %s to normal \u0027"},{"line_number":6267,"context_line":"                      \u0027volume.\u0027, volume.name)"},{"line_number":6268,"context_line":"            if new_pool \u003d\u003d old_pool:"},{"line_number":6269,"context_line":"                self._helpers.convert_hyperswap_volume_to_normal("},{"line_number":6270,"context_line":"                    volume_name,"}],"source_content_type":"text/x-python","patch_set":18,"id":"aa430acb_9e442303","line":6267,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6264,"context_line":"        elif (old_opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027 and"},{"line_number":6265,"context_line":"                new_opts[\u0027volume_topology\u0027] !\u003d \u0027hyperswap\u0027):"},{"line_number":6266,"context_line":"            LOG.debug(\u0027retype: Convert a hyperswap volume %s to normal \u0027"},{"line_number":6267,"context_line":"                      \u0027volume.\u0027, volume.name)"},{"line_number":6268,"context_line":"            if new_pool \u003d\u003d old_pool:"},{"line_number":6269,"context_line":"                self._helpers.convert_hyperswap_volume_to_normal("},{"line_number":6270,"context_line":"                    volume_name,"}],"source_content_type":"text/x-python","patch_set":18,"id":"686e64df_cbe8abab","line":6267,"in_reply_to":"aa430acb_9e442303","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6293,"context_line":""},{"line_number":6294,"context_line":"    # flake8: noqa: C901"},{"line_number":6295,"context_line":"    def retype(self, ctxt, volume, new_type, diff, host):"},{"line_number":6296,"context_line":"        volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":6297,"context_line":"        \"\"\"Convert the volume to be of the new type."},{"line_number":6298,"context_line":""},{"line_number":6299,"context_line":"        Returns a boolean indicating whether the retype occurred."}],"source_content_type":"text/x-python","patch_set":18,"id":"ff35d859_ca45f147","line":6296,"updated":"2026-08-18 23:41:19.000000000","message":"This call seems to be redundant.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6293,"context_line":""},{"line_number":6294,"context_line":"    # flake8: noqa: C901"},{"line_number":6295,"context_line":"    def retype(self, ctxt, volume, new_type, diff, host):"},{"line_number":6296,"context_line":"        volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":6297,"context_line":"        \"\"\"Convert the volume to be of the new type."},{"line_number":6298,"context_line":""},{"line_number":6299,"context_line":"        Returns a boolean indicating whether the retype occurred."}],"source_content_type":"text/x-python","patch_set":18,"id":"ebc6dd39_2f8e983c","line":6296,"in_reply_to":"ff35d859_ca45f147","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6356,"context_line":"        model_update \u003d dict()"},{"line_number":6357,"context_line":"        new_rep_type \u003d self._get_specs_replicated_type(new_type)"},{"line_number":6358,"context_line":"        old_rep_type \u003d self._get_volume_replicated_type(ctxt, volume)"},{"line_number":6359,"context_line":"        old_io_grp \u003d self._helpers.get_volume_io_group(volume[\u0027name\u0027])"},{"line_number":6360,"context_line":"        new_io_grp \u003d self._helpers.select_io_group(self._state,"},{"line_number":6361,"context_line":"                                                   new_opts, new_pool)"},{"line_number":6362,"context_line":"        self._verify_retype_params(volume, new_opts, old_opts, need_copy,"}],"source_content_type":"text/x-python","patch_set":18,"id":"45b9abca_a6c077d3","line":6359,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6356,"context_line":"        model_update \u003d dict()"},{"line_number":6357,"context_line":"        new_rep_type \u003d self._get_specs_replicated_type(new_type)"},{"line_number":6358,"context_line":"        old_rep_type \u003d self._get_volume_replicated_type(ctxt, volume)"},{"line_number":6359,"context_line":"        old_io_grp \u003d self._helpers.get_volume_io_group(volume[\u0027name\u0027])"},{"line_number":6360,"context_line":"        new_io_grp \u003d self._helpers.select_io_group(self._state,"},{"line_number":6361,"context_line":"                                                   new_opts, new_pool)"},{"line_number":6362,"context_line":"        self._verify_retype_params(volume, new_opts, old_opts, need_copy,"}],"source_content_type":"text/x-python","patch_set":18,"id":"df4c386d_9ed7e1cd","line":6359,"in_reply_to":"45b9abca_a6c077d3","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6409,"context_line":"            else:"},{"line_number":6410,"context_line":"                retype_iogrp_property(volume, new_io_grp, old_io_grp)"},{"line_number":6411,"context_line":""},{"line_number":6412,"context_line":"                self._helpers.change_vdisk_options(volume[\u0027name\u0027],"},{"line_number":6413,"context_line":"                                                   vdisk_changes,"},{"line_number":6414,"context_line":"                                                   new_opts, self._state)"},{"line_number":6415,"context_line":"                if change_mirror:"}],"source_content_type":"text/x-python","patch_set":18,"id":"804fc3a0_142e3eba","line":6412,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6409,"context_line":"            else:"},{"line_number":6410,"context_line":"                retype_iogrp_property(volume, new_io_grp, old_io_grp)"},{"line_number":6411,"context_line":""},{"line_number":6412,"context_line":"                self._helpers.change_vdisk_options(volume[\u0027name\u0027],"},{"line_number":6413,"context_line":"                                                   vdisk_changes,"},{"line_number":6414,"context_line":"                                                   new_opts, self._state)"},{"line_number":6415,"context_line":"                if change_mirror:"}],"source_content_type":"text/x-python","patch_set":18,"id":"71411c4f_6b3cf213","line":6412,"in_reply_to":"804fc3a0_142e3eba","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6416,"context_line":"                    copies \u003d self._helpers.get_vdisk_copies(volume_name)"},{"line_number":6417,"context_line":"                    if not old_opts[\u0027mirror_pool\u0027] and new_opts[\u0027mirror_pool\u0027]:"},{"line_number":6418,"context_line":"                        # retype from non mirror vol to mirror vol"},{"line_number":6419,"context_line":"                        self.add_vdisk_copy(volume[\u0027name\u0027],"},{"line_number":6420,"context_line":"                                            new_opts[\u0027mirror_pool\u0027], new_type)"},{"line_number":6421,"context_line":"                    elif (old_opts[\u0027mirror_pool\u0027] and"},{"line_number":6422,"context_line":"                            not new_opts[\u0027mirror_pool\u0027]):"}],"source_content_type":"text/x-python","patch_set":18,"id":"614a399d_2bdee0bd","line":6419,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6416,"context_line":"                    copies \u003d self._helpers.get_vdisk_copies(volume_name)"},{"line_number":6417,"context_line":"                    if not old_opts[\u0027mirror_pool\u0027] and new_opts[\u0027mirror_pool\u0027]:"},{"line_number":6418,"context_line":"                        # retype from non mirror vol to mirror vol"},{"line_number":6419,"context_line":"                        self.add_vdisk_copy(volume[\u0027name\u0027],"},{"line_number":6420,"context_line":"                                            new_opts[\u0027mirror_pool\u0027], new_type)"},{"line_number":6421,"context_line":"                    elif (old_opts[\u0027mirror_pool\u0027] and"},{"line_number":6422,"context_line":"                            not new_opts[\u0027mirror_pool\u0027]):"}],"source_content_type":"text/x-python","patch_set":18,"id":"937a34d6_38f6f145","line":6419,"in_reply_to":"614a399d_2bdee0bd","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6433,"context_line":"        if new_opts[\u0027qos\u0027]:"},{"line_number":6434,"context_line":"            # Add the new QoS setting to the volume. If the volume has an"},{"line_number":6435,"context_line":"            # old QoS setting, it will be overwritten."},{"line_number":6436,"context_line":"            self._helpers.update_vdisk_qos(volume[\u0027name\u0027], new_opts[\u0027qos\u0027],"},{"line_number":6437,"context_line":"                                           volume[\u0027size\u0027])"},{"line_number":6438,"context_line":"            model_update \u003d self._qos_model_update(model_update, volume)"},{"line_number":6439,"context_line":"        elif old_opts[\u0027qos\u0027]:"}],"source_content_type":"text/x-python","patch_set":18,"id":"93fed293_81520074","line":6436,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6433,"context_line":"        if new_opts[\u0027qos\u0027]:"},{"line_number":6434,"context_line":"            # Add the new QoS setting to the volume. If the volume has an"},{"line_number":6435,"context_line":"            # old QoS setting, it will be overwritten."},{"line_number":6436,"context_line":"            self._helpers.update_vdisk_qos(volume[\u0027name\u0027], new_opts[\u0027qos\u0027],"},{"line_number":6437,"context_line":"                                           volume[\u0027size\u0027])"},{"line_number":6438,"context_line":"            model_update \u003d self._qos_model_update(model_update, volume)"},{"line_number":6439,"context_line":"        elif old_opts[\u0027qos\u0027]:"}],"source_content_type":"text/x-python","patch_set":18,"id":"2ea3e006_6c884450","line":6436,"in_reply_to":"93fed293_81520074","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6438,"context_line":"            model_update \u003d self._qos_model_update(model_update, volume)"},{"line_number":6439,"context_line":"        elif old_opts[\u0027qos\u0027]:"},{"line_number":6440,"context_line":"            # If the old_opts contain QoS keys, disable them."},{"line_number":6441,"context_line":"            self._helpers.disable_vdisk_qos(volume[\u0027name\u0027], old_opts[\u0027qos\u0027])"},{"line_number":6442,"context_line":"            model_update \u003d self._qos_model_update(model_update, volume)"},{"line_number":6443,"context_line":""},{"line_number":6444,"context_line":"        if new_opts[\u0027flashcopy_rate\u0027] !\u003d old_opts[\u0027flashcopy_rate\u0027]:"}],"source_content_type":"text/x-python","patch_set":18,"id":"31519fc2_faa131f9","line":6441,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6438,"context_line":"            model_update \u003d self._qos_model_update(model_update, volume)"},{"line_number":6439,"context_line":"        elif old_opts[\u0027qos\u0027]:"},{"line_number":6440,"context_line":"            # If the old_opts contain QoS keys, disable them."},{"line_number":6441,"context_line":"            self._helpers.disable_vdisk_qos(volume[\u0027name\u0027], old_opts[\u0027qos\u0027])"},{"line_number":6442,"context_line":"            model_update \u003d self._qos_model_update(model_update, volume)"},{"line_number":6443,"context_line":""},{"line_number":6444,"context_line":"        if new_opts[\u0027flashcopy_rate\u0027] !\u003d old_opts[\u0027flashcopy_rate\u0027]:"}],"source_content_type":"text/x-python","patch_set":18,"id":"53c21326_fb06d55b","line":6441,"in_reply_to":"31519fc2_faa131f9","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6469,"context_line":"                    \u0027storwize_svc_retain_aux_volume\u0027))"},{"line_number":6470,"context_line":"            if storwize_const.GMCV \u003d\u003d old_rep_type:"},{"line_number":6471,"context_line":"                self._helpers.delete_vdisk("},{"line_number":6472,"context_line":"                    storwize_const.REPLICA_CHG_VOL_PREFIX + volume[\u0027name\u0027],"},{"line_number":6473,"context_line":"                    force_unmap\u003dforce_unmap, force_delete\u003dFalse)"},{"line_number":6474,"context_line":"            if aux_change_mirror:"},{"line_number":6475,"context_line":"                aux_change_mirror \u003d False"}],"source_content_type":"text/x-python","patch_set":18,"id":"136d5808_381aaa00","line":6472,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6469,"context_line":"                    \u0027storwize_svc_retain_aux_volume\u0027))"},{"line_number":6470,"context_line":"            if storwize_const.GMCV \u003d\u003d old_rep_type:"},{"line_number":6471,"context_line":"                self._helpers.delete_vdisk("},{"line_number":6472,"context_line":"                    storwize_const.REPLICA_CHG_VOL_PREFIX + volume[\u0027name\u0027],"},{"line_number":6473,"context_line":"                    force_unmap\u003dforce_unmap, force_delete\u003dFalse)"},{"line_number":6474,"context_line":"            if aux_change_mirror:"},{"line_number":6475,"context_line":"                aux_change_mirror \u003d False"}],"source_content_type":"text/x-python","patch_set":18,"id":"d13f7f7f_10c36f17","line":6472,"in_reply_to":"136d5808_381aaa00","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6488,"context_line":"                replica_obj.volume_replication_setup(ctxt, volume, new_type)"},{"line_number":6489,"context_line":"                # Set cycle_period_seconds if needed"},{"line_number":6490,"context_line":"                self._helpers.change_relationship_cycleperiod("},{"line_number":6491,"context_line":"                    volume[\u0027name\u0027],"},{"line_number":6492,"context_line":"                    new_opts.get(\u0027cycle_period_seconds\u0027))"},{"line_number":6493,"context_line":"            else:"},{"line_number":6494,"context_line":"                replica_obj.volume_replication_setup(ctxt, volume)"}],"source_content_type":"text/x-python","patch_set":18,"id":"aa45d2eb_12e4f721","line":6491,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6488,"context_line":"                replica_obj.volume_replication_setup(ctxt, volume, new_type)"},{"line_number":6489,"context_line":"                # Set cycle_period_seconds if needed"},{"line_number":6490,"context_line":"                self._helpers.change_relationship_cycleperiod("},{"line_number":6491,"context_line":"                    volume[\u0027name\u0027],"},{"line_number":6492,"context_line":"                    new_opts.get(\u0027cycle_period_seconds\u0027))"},{"line_number":6493,"context_line":"            else:"},{"line_number":6494,"context_line":"                replica_obj.volume_replication_setup(ctxt, volume)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ec989ccc_87c11c1a","line":6491,"in_reply_to":"aa45d2eb_12e4f721","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6529,"context_line":""},{"line_number":6530,"context_line":"    def update_migrated_volume(self, ctxt, volume, new_volume,"},{"line_number":6531,"context_line":"                               original_volume_status):"},{"line_number":6532,"context_line":"        volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":6533,"context_line":"        new_volume_name \u003d self._helpers.get_volume_name(new_volume)"},{"line_number":6534,"context_line":"        \"\"\"Return model update from Storwize for migrated volume."},{"line_number":6535,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"4362bb47_5b2edb26","line":6532,"updated":"2026-08-18 23:41:19.000000000","message":"These don\u0027t appear to be used, and are redundant with later calls.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6529,"context_line":""},{"line_number":6530,"context_line":"    def update_migrated_volume(self, ctxt, volume, new_volume,"},{"line_number":6531,"context_line":"                               original_volume_status):"},{"line_number":6532,"context_line":"        volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":6533,"context_line":"        new_volume_name \u003d self._helpers.get_volume_name(new_volume)"},{"line_number":6534,"context_line":"        \"\"\"Return model update from Storwize for migrated volume."},{"line_number":6535,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"6002f97c_8c930e7e","line":6532,"in_reply_to":"4362bb47_5b2edb26","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6570,"context_line":"        return model_update"},{"line_number":6571,"context_line":""},{"line_number":6572,"context_line":"    def manage_existing(self, volume, ref):"},{"line_number":6573,"context_line":"        volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":6574,"context_line":"        \"\"\"Manages an existing vdisk."},{"line_number":6575,"context_line":""},{"line_number":6576,"context_line":"        Renames the vdisk to match the expected name for the volume."}],"source_content_type":"text/x-python","patch_set":18,"id":"ce07ae1e_cfdca8a3","line":6573,"updated":"2026-08-18 23:41:19.000000000","message":"This doesn\u0027t appear to be used.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6570,"context_line":"        return model_update"},{"line_number":6571,"context_line":""},{"line_number":6572,"context_line":"    def manage_existing(self, volume, ref):"},{"line_number":6573,"context_line":"        volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":6574,"context_line":"        \"\"\"Manages an existing vdisk."},{"line_number":6575,"context_line":""},{"line_number":6576,"context_line":"        Renames the vdisk to match the expected name for the volume."}],"source_content_type":"text/x-python","patch_set":18,"id":"27e0ec04_253a17ab","line":6573,"in_reply_to":"ce07ae1e_cfdca8a3","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6745,"context_line":"                        reason\u003dmsg)"},{"line_number":6746,"context_line":"        model_update \u003d {\u0027replication_status\u0027:"},{"line_number":6747,"context_line":"                        fields.ReplicationStatus.NOT_CAPABLE}"},{"line_number":6748,"context_line":"        self._helpers.rename_vdisk(vdisk[\u0027name\u0027], volume[\u0027name\u0027])"},{"line_number":6749,"context_line":"        if vol_rep_type:"},{"line_number":6750,"context_line":"            aux_vol \u003d storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027]"},{"line_number":6751,"context_line":"            self._aux_backend_helpers.rename_vdisk(rel_info[\u0027aux_vdisk_name\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"fc07df91_3c8bc2c3","line":6748,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6745,"context_line":"                        reason\u003dmsg)"},{"line_number":6746,"context_line":"        model_update \u003d {\u0027replication_status\u0027:"},{"line_number":6747,"context_line":"                        fields.ReplicationStatus.NOT_CAPABLE}"},{"line_number":6748,"context_line":"        self._helpers.rename_vdisk(vdisk[\u0027name\u0027], volume[\u0027name\u0027])"},{"line_number":6749,"context_line":"        if vol_rep_type:"},{"line_number":6750,"context_line":"            aux_vol \u003d storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027]"},{"line_number":6751,"context_line":"            self._aux_backend_helpers.rename_vdisk(rel_info[\u0027aux_vdisk_name\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"a2a1b945_badb2a9a","line":6748,"in_reply_to":"fc07df91_3c8bc2c3","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6747,"context_line":"                        fields.ReplicationStatus.NOT_CAPABLE}"},{"line_number":6748,"context_line":"        self._helpers.rename_vdisk(vdisk[\u0027name\u0027], volume[\u0027name\u0027])"},{"line_number":6749,"context_line":"        if vol_rep_type:"},{"line_number":6750,"context_line":"            aux_vol \u003d storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027]"},{"line_number":6751,"context_line":"            self._aux_backend_helpers.rename_vdisk(rel_info[\u0027aux_vdisk_name\u0027],"},{"line_number":6752,"context_line":"                                                   aux_vol)"},{"line_number":6753,"context_line":"            if storwize_const.GMCV \u003d\u003d vol_rep_type:"}],"source_content_type":"text/x-python","patch_set":18,"id":"3b92fd04_117b4cc9","line":6750,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6747,"context_line":"                        fields.ReplicationStatus.NOT_CAPABLE}"},{"line_number":6748,"context_line":"        self._helpers.rename_vdisk(vdisk[\u0027name\u0027], volume[\u0027name\u0027])"},{"line_number":6749,"context_line":"        if vol_rep_type:"},{"line_number":6750,"context_line":"            aux_vol \u003d storwize_const.REPLICA_AUX_VOL_PREFIX + volume[\u0027name\u0027]"},{"line_number":6751,"context_line":"            self._aux_backend_helpers.rename_vdisk(rel_info[\u0027aux_vdisk_name\u0027],"},{"line_number":6752,"context_line":"                                                   aux_vol)"},{"line_number":6753,"context_line":"            if storwize_const.GMCV \u003d\u003d vol_rep_type:"}],"source_content_type":"text/x-python","patch_set":18,"id":"a2be7095_c4e160f5","line":6750,"in_reply_to":"3b92fd04_117b4cc9","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6753,"context_line":"            if storwize_const.GMCV \u003d\u003d vol_rep_type:"},{"line_number":6754,"context_line":"                self._helpers.rename_vdisk("},{"line_number":6755,"context_line":"                    rel_info[\u0027master_change_vdisk_name\u0027],"},{"line_number":6756,"context_line":"                    storwize_const.REPLICA_CHG_VOL_PREFIX + volume[\u0027name\u0027])"},{"line_number":6757,"context_line":"                self._aux_backend_helpers.rename_vdisk("},{"line_number":6758,"context_line":"                    rel_info[\u0027aux_change_vdisk_name\u0027],"},{"line_number":6759,"context_line":"                    storwize_const.REPLICA_CHG_VOL_PREFIX + aux_vol)"}],"source_content_type":"text/x-python","patch_set":18,"id":"b5cd5350_73aaa1dc","line":6756,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6753,"context_line":"            if storwize_const.GMCV \u003d\u003d vol_rep_type:"},{"line_number":6754,"context_line":"                self._helpers.rename_vdisk("},{"line_number":6755,"context_line":"                    rel_info[\u0027master_change_vdisk_name\u0027],"},{"line_number":6756,"context_line":"                    storwize_const.REPLICA_CHG_VOL_PREFIX + volume[\u0027name\u0027])"},{"line_number":6757,"context_line":"                self._aux_backend_helpers.rename_vdisk("},{"line_number":6758,"context_line":"                    rel_info[\u0027aux_change_vdisk_name\u0027],"},{"line_number":6759,"context_line":"                    storwize_const.REPLICA_CHG_VOL_PREFIX + aux_vol)"}],"source_content_type":"text/x-python","patch_set":18,"id":"8a799dee_a3e22799","line":6756,"in_reply_to":"b5cd5350_73aaa1dc","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":6762,"context_line":"        return model_update"},{"line_number":6763,"context_line":""},{"line_number":6764,"context_line":"    def manage_existing_get_size(self, volume, ref):"},{"line_number":6765,"context_line":"        volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":6766,"context_line":"        \"\"\"Return size of an existing Vdisk for manage_existing."},{"line_number":6767,"context_line":""},{"line_number":6768,"context_line":"        existing_ref is a dictionary of the form:"}],"source_content_type":"text/x-python","patch_set":18,"id":"bb51a75f_c63183b5","line":6765,"updated":"2026-08-18 23:41:19.000000000","message":"This doesn\u0027t appear to be used.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":6762,"context_line":"        return model_update"},{"line_number":6763,"context_line":""},{"line_number":6764,"context_line":"    def manage_existing_get_size(self, volume, ref):"},{"line_number":6765,"context_line":"        volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":6766,"context_line":"        \"\"\"Return size of an existing Vdisk for manage_existing."},{"line_number":6767,"context_line":""},{"line_number":6768,"context_line":"        existing_ref is a dictionary of the form:"}],"source_content_type":"text/x-python","patch_set":18,"id":"dc20d706_3e80f931","line":6765,"in_reply_to":"bb51a75f_c63183b5","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7047,"context_line":"                        fields.GroupStatus.ERROR_DELETING)"},{"line_number":7048,"context_line":"                    LOG.error(\"Failed to delete the volume %(vol)s of CG. \""},{"line_number":7049,"context_line":"                              \"Exception: %(exception)s.\","},{"line_number":7050,"context_line":"                              {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7051,"context_line":"                    volumes_model_update.append("},{"line_number":7052,"context_line":"                        {\u0027id\u0027: volume.id,"},{"line_number":7053,"context_line":"                         \u0027status\u0027: fields.GroupStatus.ERROR_DELETING})"}],"source_content_type":"text/x-python","patch_set":18,"id":"7711a1a0_c560f81d","line":7050,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7047,"context_line":"                        fields.GroupStatus.ERROR_DELETING)"},{"line_number":7048,"context_line":"                    LOG.error(\"Failed to delete the volume %(vol)s of CG. \""},{"line_number":7049,"context_line":"                              \"Exception: %(exception)s.\","},{"line_number":7050,"context_line":"                              {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7051,"context_line":"                    volumes_model_update.append("},{"line_number":7052,"context_line":"                        {\u0027id\u0027: volume.id,"},{"line_number":7053,"context_line":"                         \u0027status\u0027: fields.GroupStatus.ERROR_DELETING})"}],"source_content_type":"text/x-python","patch_set":18,"id":"ab22dba8_175f0d12","line":7050,"in_reply_to":"7711a1a0_c560f81d","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7232,"context_line":"                                              vol.get(\u0027volume_metadata\u0027)))"},{"line_number":7233,"context_line":"            if opts[\u0027qos\u0027]:"},{"line_number":7234,"context_line":"                # Updating QoS properties for a volume"},{"line_number":7235,"context_line":"                self._helpers.add_vdisk_qos(vol[\u0027name\u0027], opts[\u0027qos\u0027],"},{"line_number":7236,"context_line":"                                            vol[\u0027size\u0027])"},{"line_number":7237,"context_line":"                self._qos_model_update(volume_model, vol)"},{"line_number":7238,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"01c8d49d_ff23dbea","line":7235,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7232,"context_line":"                                              vol.get(\u0027volume_metadata\u0027)))"},{"line_number":7233,"context_line":"            if opts[\u0027qos\u0027]:"},{"line_number":7234,"context_line":"                # Updating QoS properties for a volume"},{"line_number":7235,"context_line":"                self._helpers.add_vdisk_qos(vol[\u0027name\u0027], opts[\u0027qos\u0027],"},{"line_number":7236,"context_line":"                                            vol[\u0027size\u0027])"},{"line_number":7237,"context_line":"                self._qos_model_update(volume_model, vol)"},{"line_number":7238,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"a4dc27e3_db46bebe","line":7235,"in_reply_to":"01c8d49d_ff23dbea","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7237,"context_line":"                self._qos_model_update(volume_model, vol)"},{"line_number":7238,"context_line":""},{"line_number":7239,"context_line":"            if is_hyper_group:"},{"line_number":7240,"context_line":"                self._helpers.ensure_vdisk_no_fc_mappings(vol[\u0027name\u0027],"},{"line_number":7241,"context_line":"                                                          allow_snaps\u003dTrue,"},{"line_number":7242,"context_line":"                                                          allow_fctgt\u003dFalse)"},{"line_number":7243,"context_line":"                opts \u003d self._get_vdisk_params(vol[\u0027volume_type_id\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"8f74763c_212886db","line":7240,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7237,"context_line":"                self._qos_model_update(volume_model, vol)"},{"line_number":7238,"context_line":""},{"line_number":7239,"context_line":"            if is_hyper_group:"},{"line_number":7240,"context_line":"                self._helpers.ensure_vdisk_no_fc_mappings(vol[\u0027name\u0027],"},{"line_number":7241,"context_line":"                                                          allow_snaps\u003dTrue,"},{"line_number":7242,"context_line":"                                                          allow_fctgt\u003dFalse)"},{"line_number":7243,"context_line":"                opts \u003d self._get_vdisk_params(vol[\u0027volume_type_id\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"2cd08627_2d19bb1c","line":7240,"in_reply_to":"8f74763c_212886db","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7243,"context_line":"                opts \u003d self._get_vdisk_params(vol[\u0027volume_type_id\u0027],"},{"line_number":7244,"context_line":"                                              volume_metadata\u003d("},{"line_number":7245,"context_line":"                                                  vol.get(\u0027volume_metadata\u0027)))"},{"line_number":7246,"context_line":"                self._helpers.convert_volume_to_hyperswap(vol[\u0027name\u0027],"},{"line_number":7247,"context_line":"                                                          opts,"},{"line_number":7248,"context_line":"                                                          self._state)"},{"line_number":7249,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5632a470_fc7f76af","line":7246,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7243,"context_line":"                opts \u003d self._get_vdisk_params(vol[\u0027volume_type_id\u0027],"},{"line_number":7244,"context_line":"                                              volume_metadata\u003d("},{"line_number":7245,"context_line":"                                                  vol.get(\u0027volume_metadata\u0027)))"},{"line_number":7246,"context_line":"                self._helpers.convert_volume_to_hyperswap(vol[\u0027name\u0027],"},{"line_number":7247,"context_line":"                                                          opts,"},{"line_number":7248,"context_line":"                                                          self._state)"},{"line_number":7249,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9f2d4efb_18532afb","line":7246,"in_reply_to":"5632a470_fc7f76af","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7389,"context_line":""},{"line_number":7390,"context_line":"    @volume_utils.trace"},{"line_number":7391,"context_line":"    def revert_to_snapshot(self, context, volume, snapshot):"},{"line_number":7392,"context_line":"        volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":7393,"context_line":"        \"\"\"Revert volume to snapshot.\"\"\""},{"line_number":7394,"context_line":"        if snapshot.volume_size !\u003d volume.size:"},{"line_number":7395,"context_line":"            raise exception.InvalidInput("}],"source_content_type":"text/x-python","patch_set":18,"id":"1c22d6c7_48ebf14d","line":7392,"updated":"2026-08-18 23:41:19.000000000","message":"This is redundant.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7389,"context_line":""},{"line_number":7390,"context_line":"    @volume_utils.trace"},{"line_number":7391,"context_line":"    def revert_to_snapshot(self, context, volume, snapshot):"},{"line_number":7392,"context_line":"        volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":7393,"context_line":"        \"\"\"Revert volume to snapshot.\"\"\""},{"line_number":7394,"context_line":"        if snapshot.volume_size !\u003d volume.size:"},{"line_number":7395,"context_line":"            raise exception.InvalidInput("}],"source_content_type":"text/x-python","patch_set":18,"id":"5fece3c2_1cbf1936","line":7392,"in_reply_to":"1c22d6c7_48ebf14d","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7411,"context_line":"                msg \u003d (_(\"Stop RC or rccg relationship has failed for %(vol)s \""},{"line_number":7412,"context_line":"                         \"due to: %(err)s.\")"},{"line_number":7413,"context_line":"                       % {\"vol\": volume.name, \"err\": err})"},{"line_number":7414,"context_line":"                LOG.error(msg)"},{"line_number":7415,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":7416,"context_line":"        try:"},{"line_number":7417,"context_line":"            self._helpers.pretreatment_before_revert(volume_name)"}],"source_content_type":"text/x-python","patch_set":18,"id":"15902622_09f51c97","line":7414,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7411,"context_line":"                msg \u003d (_(\"Stop RC or rccg relationship has failed for %(vol)s \""},{"line_number":7412,"context_line":"                         \"due to: %(err)s.\")"},{"line_number":7413,"context_line":"                       % {\"vol\": volume.name, \"err\": err})"},{"line_number":7414,"context_line":"                LOG.error(msg)"},{"line_number":7415,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":7416,"context_line":"        try:"},{"line_number":7417,"context_line":"            self._helpers.pretreatment_before_revert(volume_name)"}],"source_content_type":"text/x-python","patch_set":18,"id":"4071dde0_7ed055c7","line":7414,"in_reply_to":"15902622_09f51c97","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7418,"context_line":"        except Exception as err:"},{"line_number":7419,"context_line":"            msg \u003d (_(\"Pretreatment before revert volume %(vol)s to snapshot \""},{"line_number":7420,"context_line":"                     \"%(snap)s failed due to: %(err)s.\")"},{"line_number":7421,"context_line":"                   % {\"vol\": volume.name, \"snap\": snapshot.name, \"err\": err})"},{"line_number":7422,"context_line":"            LOG.error(msg)"},{"line_number":7423,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":7424,"context_line":"        opts \u003d self._get_vdisk_params(volume.volume_type_id)"}],"source_content_type":"text/x-python","patch_set":18,"id":"a3a6da43_daa2f91c","line":7421,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7418,"context_line":"        except Exception as err:"},{"line_number":7419,"context_line":"            msg \u003d (_(\"Pretreatment before revert volume %(vol)s to snapshot \""},{"line_number":7420,"context_line":"                     \"%(snap)s failed due to: %(err)s.\")"},{"line_number":7421,"context_line":"                   % {\"vol\": volume.name, \"snap\": snapshot.name, \"err\": err})"},{"line_number":7422,"context_line":"            LOG.error(msg)"},{"line_number":7423,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":7424,"context_line":"        opts \u003d self._get_vdisk_params(volume.volume_type_id)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ca7fe902_ae456b41","line":7421,"in_reply_to":"a3a6da43_daa2f91c","updated":"2026-09-22 11:21:41.000000000","message":"not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7435,"context_line":"        except Exception as err:"},{"line_number":7436,"context_line":"            msg \u003d (_(\"Reverting volume %(vol)s to snapshot %(snap)s failed \""},{"line_number":7437,"context_line":"                     \"due to: %(err)s.\")"},{"line_number":7438,"context_line":"                   % {\"vol\": volume.name, \"snap\": snapshot.name, \"err\": err})"},{"line_number":7439,"context_line":"            LOG.error(msg)"},{"line_number":7440,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":7441,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"b8596363_b74ded6d","line":7438,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7435,"context_line":"        except Exception as err:"},{"line_number":7436,"context_line":"            msg \u003d (_(\"Reverting volume %(vol)s to snapshot %(snap)s failed \""},{"line_number":7437,"context_line":"                     \"due to: %(err)s.\")"},{"line_number":7438,"context_line":"                   % {\"vol\": volume.name, \"snap\": snapshot.name, \"err\": err})"},{"line_number":7439,"context_line":"            LOG.error(msg)"},{"line_number":7440,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":7441,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"eb1344bf_5bd1873c","line":7438,"in_reply_to":"b8596363_b74ded6d","updated":"2026-09-22 11:21:41.000000000","message":"not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7672,"context_line":"                    fields.GroupStatus.ERROR_DELETING)"},{"line_number":7673,"context_line":"                LOG.error(\"Failed to delete the volume %(vol)s of CG. \""},{"line_number":7674,"context_line":"                          \"Exception: %(exception)s.\","},{"line_number":7675,"context_line":"                          {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7676,"context_line":"                volumes_model_update.append("},{"line_number":7677,"context_line":"                    {\u0027id\u0027: volume.id,"},{"line_number":7678,"context_line":"                     \u0027status\u0027: fields.GroupStatus.ERROR_DELETING})"}],"source_content_type":"text/x-python","patch_set":18,"id":"d14c4697_54e7b0c0","line":7675,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7672,"context_line":"                    fields.GroupStatus.ERROR_DELETING)"},{"line_number":7673,"context_line":"                LOG.error(\"Failed to delete the volume %(vol)s of CG. \""},{"line_number":7674,"context_line":"                          \"Exception: %(exception)s.\","},{"line_number":7675,"context_line":"                          {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7676,"context_line":"                volumes_model_update.append("},{"line_number":7677,"context_line":"                    {\u0027id\u0027: volume.id,"},{"line_number":7678,"context_line":"                     \u0027status\u0027: fields.GroupStatus.ERROR_DELETING})"}],"source_content_type":"text/x-python","patch_set":18,"id":"a2d656a1_49ae41c7","line":7675,"in_reply_to":"d14c4697_54e7b0c0","updated":"2026-09-22 11:21:41.000000000","message":"not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7773,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":7774,"context_line":"                LOG.error(\"Failed to add the remote copy of volume %(vol)s to \""},{"line_number":7775,"context_line":"                          \"group. Exception: %(exception)s.\","},{"line_number":7776,"context_line":"                          {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7777,"context_line":"                self._helpers.start_relationship(vol_name)"},{"line_number":7778,"context_line":""},{"line_number":7779,"context_line":"        if (rccg and len(add_volumes) \u003e 0 and"}],"source_content_type":"text/x-python","patch_set":18,"id":"86bfe99c_18f6d26a","line":7776,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7773,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":7774,"context_line":"                LOG.error(\"Failed to add the remote copy of volume %(vol)s to \""},{"line_number":7775,"context_line":"                          \"group. Exception: %(exception)s.\","},{"line_number":7776,"context_line":"                          {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7777,"context_line":"                self._helpers.start_relationship(vol_name)"},{"line_number":7778,"context_line":""},{"line_number":7779,"context_line":"        if (rccg and len(add_volumes) \u003e 0 and"}],"source_content_type":"text/x-python","patch_set":18,"id":"288673b5_a07d8d7c","line":7776,"in_reply_to":"86bfe99c_18f6d26a","updated":"2026-09-22 11:21:41.000000000","message":"not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7807,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":7808,"context_line":"                LOG.error(\"Failed to remove the remote copy of volume %(vol)s \""},{"line_number":7809,"context_line":"                          \"from group. Exception: %(exception)s.\","},{"line_number":7810,"context_line":"                          {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7811,"context_line":"        return model_update, added_vols, removed_vols"},{"line_number":7812,"context_line":""},{"line_number":7813,"context_line":"    def _delete_volumegroup(self, group, volumes):"}],"source_content_type":"text/x-python","patch_set":18,"id":"47005859_0ce0119b","line":7810,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7807,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":7808,"context_line":"                LOG.error(\"Failed to remove the remote copy of volume %(vol)s \""},{"line_number":7809,"context_line":"                          \"from group. Exception: %(exception)s.\","},{"line_number":7810,"context_line":"                          {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7811,"context_line":"        return model_update, added_vols, removed_vols"},{"line_number":7812,"context_line":""},{"line_number":7813,"context_line":"    def _delete_volumegroup(self, group, volumes):"}],"source_content_type":"text/x-python","patch_set":18,"id":"1554f5c8_7a70ac94","line":7810,"in_reply_to":"47005859_0ce0119b","updated":"2026-09-22 11:21:41.000000000","message":"not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7836,"context_line":"                        fields.GroupStatus.ERROR_DELETING)"},{"line_number":7837,"context_line":"                    LOG.error(\"Failed to delete the volume %(vol)s of CG. \""},{"line_number":7838,"context_line":"                              \"Exception: %(exception)s.\","},{"line_number":7839,"context_line":"                              {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7840,"context_line":"                    volumes_model_update.append("},{"line_number":7841,"context_line":"                        {\u0027id\u0027: volume.id,"},{"line_number":7842,"context_line":"                         \u0027status\u0027: fields.GroupStatus.ERROR_DELETING})"}],"source_content_type":"text/x-python","patch_set":18,"id":"cfe3c001_c988bd5e","line":7839,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7836,"context_line":"                        fields.GroupStatus.ERROR_DELETING)"},{"line_number":7837,"context_line":"                    LOG.error(\"Failed to delete the volume %(vol)s of CG. \""},{"line_number":7838,"context_line":"                              \"Exception: %(exception)s.\","},{"line_number":7839,"context_line":"                              {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7840,"context_line":"                    volumes_model_update.append("},{"line_number":7841,"context_line":"                        {\u0027id\u0027: volume.id,"},{"line_number":7842,"context_line":"                         \u0027status\u0027: fields.GroupStatus.ERROR_DELETING})"}],"source_content_type":"text/x-python","patch_set":18,"id":"640d7518_3b112568","line":7839,"in_reply_to":"cfe3c001_c988bd5e","updated":"2026-09-22 11:21:41.000000000","message":"not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7882,"context_line":"        added_vols \u003d []"},{"line_number":7883,"context_line":"        if not migrate_from_flashcopy:"},{"line_number":7884,"context_line":"            for volume in add_volumes:"},{"line_number":7885,"context_line":"                vol_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":7886,"context_line":"                try:"},{"line_number":7887,"context_line":"                    volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":7888,"context_line":"                    if self._helpers._get_vdisk_fc_mappings(volume_name):"}],"source_content_type":"text/x-python","patch_set":18,"id":"abe39707_06828fa8","line":7885,"updated":"2026-08-18 23:41:19.000000000","message":"Redundant","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7882,"context_line":"        added_vols \u003d []"},{"line_number":7883,"context_line":"        if not migrate_from_flashcopy:"},{"line_number":7884,"context_line":"            for volume in add_volumes:"},{"line_number":7885,"context_line":"                vol_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":7886,"context_line":"                try:"},{"line_number":7887,"context_line":"                    volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":7888,"context_line":"                    if self._helpers._get_vdisk_fc_mappings(volume_name):"}],"source_content_type":"text/x-python","patch_set":18,"id":"25b78990_3988ec9c","line":7885,"in_reply_to":"abe39707_06828fa8","updated":"2026-09-22 11:21:41.000000000","message":"Resolved","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7889,"context_line":"                        reason \u003d (_(\"Adding volume %(vol)s failed because \""},{"line_number":7890,"context_line":"                                    \"it has legacy FlashCopy mappings and \""},{"line_number":7891,"context_line":"                                    \"migrate_from_flashcopy flag is set to \""},{"line_number":7892,"context_line":"                                    \"False. \") % {\u0027vol\u0027: volume.name})"},{"line_number":7893,"context_line":"                        model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":7894,"context_line":"                        raise exception.InvalidInput(reason\u003dreason)"},{"line_number":7895,"context_line":"                    self._helpers.add_vdisk_to_volumegroup(vol_name,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a8115b4_1a6285e6","line":7892,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7889,"context_line":"                        reason \u003d (_(\"Adding volume %(vol)s failed because \""},{"line_number":7890,"context_line":"                                    \"it has legacy FlashCopy mappings and \""},{"line_number":7891,"context_line":"                                    \"migrate_from_flashcopy flag is set to \""},{"line_number":7892,"context_line":"                                    \"False. \") % {\u0027vol\u0027: volume.name})"},{"line_number":7893,"context_line":"                        model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":7894,"context_line":"                        raise exception.InvalidInput(reason\u003dreason)"},{"line_number":7895,"context_line":"                    self._helpers.add_vdisk_to_volumegroup(vol_name,"}],"source_content_type":"text/x-python","patch_set":18,"id":"4c21ef60_62c8b4af","line":7892,"in_reply_to":"1a8115b4_1a6285e6","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7914,"context_line":"                    model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":7915,"context_line":"                    LOG.error(\"Failed to add the volume %(vol)s to \""},{"line_number":7916,"context_line":"                              \"group. Exception: %(exception)s.\","},{"line_number":7917,"context_line":"                              {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7918,"context_line":""},{"line_number":7919,"context_line":"        # Remove volume(s) from the volume group"},{"line_number":7920,"context_line":"        removed_vols \u003d []"}],"source_content_type":"text/x-python","patch_set":18,"id":"39f99071_5167e0ea","line":7917,"updated":"2026-08-18 23:41:19.000000000","message":"``vol_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7914,"context_line":"                    model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":7915,"context_line":"                    LOG.error(\"Failed to add the volume %(vol)s to \""},{"line_number":7916,"context_line":"                              \"group. Exception: %(exception)s.\","},{"line_number":7917,"context_line":"                              {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7918,"context_line":""},{"line_number":7919,"context_line":"        # Remove volume(s) from the volume group"},{"line_number":7920,"context_line":"        removed_vols \u003d []"}],"source_content_type":"text/x-python","patch_set":18,"id":"a8e70236_cfe171c7","line":7917,"in_reply_to":"39f99071_5167e0ea","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7929,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":7930,"context_line":"                LOG.error(\"Failed to remove the volume %(vol)s from \""},{"line_number":7931,"context_line":"                          \"group. Exception: %(exception)s.\","},{"line_number":7932,"context_line":"                          {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7933,"context_line":""},{"line_number":7934,"context_line":"        return model_update, added_vols, removed_vols"},{"line_number":7935,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"026b901e_347e324a","line":7932,"updated":"2026-08-18 23:41:19.000000000","message":"``vol_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7929,"context_line":"                model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":7930,"context_line":"                LOG.error(\"Failed to remove the volume %(vol)s from \""},{"line_number":7931,"context_line":"                          \"group. Exception: %(exception)s.\","},{"line_number":7932,"context_line":"                          {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7933,"context_line":""},{"line_number":7934,"context_line":"        return model_update, added_vols, removed_vols"},{"line_number":7935,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"a2a0f7bc_cd7be1ee","line":7932,"in_reply_to":"026b901e_347e324a","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7946,"context_line":"                        reason \u003d (_(\"Adding volume %(vol)s failed because \""},{"line_number":7947,"context_line":"                                    \"it has legacy FlashCopy mappings and \""},{"line_number":7948,"context_line":"                                    \"migrate_from_flashcopy flag is set to \""},{"line_number":7949,"context_line":"                                    \"False. \") % {\u0027vol\u0027: volume.name})"},{"line_number":7950,"context_line":"                        model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":7951,"context_line":"                        raise exception.InvalidInput(reason\u003dreason)"},{"line_number":7952,"context_line":"                    added_vols.append({\u0027id\u0027: volume.id,"}],"source_content_type":"text/x-python","patch_set":18,"id":"cc4da244_f05934c9","line":7949,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7946,"context_line":"                        reason \u003d (_(\"Adding volume %(vol)s failed because \""},{"line_number":7947,"context_line":"                                    \"it has legacy FlashCopy mappings and \""},{"line_number":7948,"context_line":"                                    \"migrate_from_flashcopy flag is set to \""},{"line_number":7949,"context_line":"                                    \"False. \") % {\u0027vol\u0027: volume.name})"},{"line_number":7950,"context_line":"                        model_update[\u0027status\u0027] \u003d fields.GroupStatus.ERROR"},{"line_number":7951,"context_line":"                        raise exception.InvalidInput(reason\u003dreason)"},{"line_number":7952,"context_line":"                    added_vols.append({\u0027id\u0027: volume.id,"}],"source_content_type":"text/x-python","patch_set":18,"id":"fda48f10_41838dd8","line":7949,"in_reply_to":"cc4da244_f05934c9","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7954,"context_line":"                except exception.InvalidInput as err:"},{"line_number":7955,"context_line":"                    LOG.error(\"Failed to add the volume %(vol)s to \""},{"line_number":7956,"context_line":"                              \"group. Exception: %(exception)s.\","},{"line_number":7957,"context_line":"                              {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7958,"context_line":"        else:"},{"line_number":7959,"context_line":"            for volume in add_volumes:"},{"line_number":7960,"context_line":"                added_vols.append({\u0027id\u0027: volume.id,"}],"source_content_type":"text/x-python","patch_set":18,"id":"ec46f2ab_36a2c86e","line":7957,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7954,"context_line":"                except exception.InvalidInput as err:"},{"line_number":7955,"context_line":"                    LOG.error(\"Failed to add the volume %(vol)s to \""},{"line_number":7956,"context_line":"                              \"group. Exception: %(exception)s.\","},{"line_number":7957,"context_line":"                              {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7958,"context_line":"        else:"},{"line_number":7959,"context_line":"            for volume in add_volumes:"},{"line_number":7960,"context_line":"                added_vols.append({\u0027id\u0027: volume.id,"}],"source_content_type":"text/x-python","patch_set":18,"id":"980c65ee_5beb955f","line":7957,"in_reply_to":"ec46f2ab_36a2c86e","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":7982,"context_line":"            except exception.VolumeDriverException as err:"},{"line_number":7983,"context_line":"                LOG.error(\"Failed to delete the volume %(vol)s of CG. \""},{"line_number":7984,"context_line":"                          \"Exception: %(exception)s.\","},{"line_number":7985,"context_line":"                          {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7986,"context_line":"                volumes_model_update.append("},{"line_number":7987,"context_line":"                    {\u0027id\u0027: volume.id,"},{"line_number":7988,"context_line":"                     \u0027status\u0027: \u0027error_deleting\u0027})"}],"source_content_type":"text/x-python","patch_set":18,"id":"eac50c72_07d13b48","line":7985,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":7982,"context_line":"            except exception.VolumeDriverException as err:"},{"line_number":7983,"context_line":"                LOG.error(\"Failed to delete the volume %(vol)s of CG. \""},{"line_number":7984,"context_line":"                          \"Exception: %(exception)s.\","},{"line_number":7985,"context_line":"                          {\u0027vol\u0027: volume.name, \u0027exception\u0027: err})"},{"line_number":7986,"context_line":"                volumes_model_update.append("},{"line_number":7987,"context_line":"                    {\u0027id\u0027: volume.id,"},{"line_number":7988,"context_line":"                     \u0027status\u0027: \u0027error_deleting\u0027})"}],"source_content_type":"text/x-python","patch_set":18,"id":"e73bbc71_463a5536","line":7985,"in_reply_to":"eac50c72_07d13b48","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":true,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"INTERVAL_1_SEC \u003d 1"},{"line_number":57,"context_line":"DEFAULT_TIMEOUT \u003d 15"},{"line_number":58,"context_line":"CMMVC5753E \u003d \"CMMVC5753E\""},{"line_number":59,"context_line":"# Retention time in minutes for temporary volume group snapshots"},{"line_number":60,"context_line":"TEMP_VG_SNAPSHOT_RETENTION_MINUTES \u003d 5"},{"line_number":61,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":21,"id":"805d6db7_a4c8ce07","line":58,"range":{"start_line":58,"start_character":0,"end_line":58,"end_character":25},"updated":"2026-09-24 12:40:49.000000000","message":"``CMMVC5753E`` is defined but never used.","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":true,"context_lines":[{"line_number":557,"context_line":"        ssh_cmd \u003d [\u0027svctask\u0027, \u0027rmhost\u0027, \u0027\"%s\"\u0027 % host]"},{"line_number":558,"context_line":"        self.run_ssh_assert_no_output(ssh_cmd)"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"    def mkvolumegroup(self, volumegroup_name,"},{"line_number":561,"context_line":"                      volumegroup_snapshot_svc_id\u003dNone,"},{"line_number":562,"context_line":"                      clone_type\u003dNone, pool\u003dNone):"},{"line_number":563,"context_line":"        \"\"\"Create a volume group (VG)."}],"source_content_type":"text/x-python","patch_set":21,"id":"a242cfe9_f9eca0bb","line":560,"range":{"start_line":560,"start_character":0,"end_line":560,"end_character":45},"updated":"2026-09-24 12:40:49.000000000","message":"Nit: the if ``clone_type / else`` both extend with ``-type X -fromsnapshotid``; ``ssh_cmd.extend([\u0027-type\u0027, clone_type or \u0027clone\u0027, \u0027-fromsnapshotid\u0027, ...])`` says the same thing in one line.","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":true,"context_lines":[{"line_number":2567,"context_line":"                        \u0027:\u0027.join(list_of_source_volumes))"},{"line_number":2568,"context_line":""},{"line_number":2569,"context_line":"                params[\"name\"] \u003d temp_volumegroup_snapshot_name"},{"line_number":2570,"context_line":"                params[\u0027retentionminutes\u0027] \u003d str("},{"line_number":2571,"context_line":"                    TEMP_VG_SNAPSHOT_RETENTION_MINUTES)"},{"line_number":2572,"context_line":""},{"line_number":2573,"context_line":"                source_volumegroup_snapshot_svc_id \u003d self.ssh.addsnapshot("}],"source_content_type":"text/x-python","patch_set":21,"id":"57ac1966_372e655f","line":2570,"range":{"start_line":2570,"start_character":0,"end_line":2570,"end_character":49},"updated":"2026-09-24 12:40:49.000000000","message":"For ``clone_type\u003dthinclone`` the clone depends on this snapshot for its lifetime, so the 5-minute retention never actually fires and the source volume group cannot be deleted until the thin clone is. Akshay\u0027s dependent_deleting explanation covers full clones. Please add a sentence to the thin-clone doc section saying the driver-created ``vg_snap-temp-...`` snapshot persists for the life of the thin clone.","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":true,"context_lines":[{"line_number":2583,"context_line":"            group_type \u003d objects.GroupType.get_by_id(context,"},{"line_number":2584,"context_line":"                                                     group.group_type_id)"},{"line_number":2585,"context_line":"            group_specs \u003d group_type.get(\u0027group_specs\u0027, {})"},{"line_number":2586,"context_line":"            clone_type \u003d group_specs.get(\u0027clone_type\u0027, None)"},{"line_number":2587,"context_line":""},{"line_number":2588,"context_line":"            # Fetching the pool for the volumes of the clone volumegroup"},{"line_number":2589,"context_line":"            clone_pool \u003d volume_utils.extract_host("}],"source_content_type":"text/x-python","patch_set":21,"id":"0969ff23_a5b98e1e","line":2586,"range":{"start_line":2586,"start_character":0,"end_line":2586,"end_character":60},"updated":"2026-09-24 12:40:49.000000000","message":"``clone_type`` is passed straight to the CLI. A typo in the group spec fails with an opaque CMMVC error after the temporary snapshot has already been taken. Please validate against (``\u0027clone\u0027``, ``\u0027thinclone\u0027``) before touching the backend and raise InvalidInput.","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":true,"context_lines":[{"line_number":2586,"context_line":"            clone_type \u003d group_specs.get(\u0027clone_type\u0027, None)"},{"line_number":2587,"context_line":""},{"line_number":2588,"context_line":"            # Fetching the pool for the volumes of the clone volumegroup"},{"line_number":2589,"context_line":"            clone_pool \u003d volume_utils.extract_host("},{"line_number":2590,"context_line":"                cinder_clone_volumes[0].host, \u0027pool\u0027)"},{"line_number":2591,"context_line":""},{"line_number":2592,"context_line":"            # Create the clone volumegroup using SVC ID of"}],"source_content_type":"text/x-python","patch_set":21,"id":"b7c7801f_46c15555","line":2589,"range":{"start_line":2589,"start_character":0,"end_line":2589,"end_character":51},"updated":"2026-09-24 12:40:49.000000000","message":"``clone_pool`` is taken from the first clone volume\u0027s host and applied to every volume in the group via ``mkvolumegroup -pool``. If the group\u0027s volume types place volumes in different pools, the others land in the wrong pool. Either check that all ``cinder_clone_volumes`` share a pool and raise InvalidInput otherwise, or document the single-pool limitation. Related question: is ``-pool`` accepted together with ``-type thinclone``, given a thin clone shares extents with the source?","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":true,"context_lines":[{"line_number":2602,"context_line":"            svc_clone_volumes \u003d self.get_volumes_in_volumegroup("},{"line_number":2603,"context_line":"                clone_volumegroup_name)"},{"line_number":2604,"context_line":"            svc_clone_volumes_map \u003d {"},{"line_number":2605,"context_line":"                volume[\"name\"].rsplit(\"-\", 1)[0]: volume[\"name\"]"},{"line_number":2606,"context_line":"                for volume in svc_clone_volumes}"},{"line_number":2607,"context_line":""},{"line_number":2608,"context_line":"            for source_volume, cinder_clone_volume in zip("}],"source_content_type":"text/x-python","patch_set":21,"id":"ad1b409e_88aff5f1","line":2605,"range":{"start_line":2605,"start_character":0,"end_line":2605,"end_character":64},"updated":"2026-09-24 12:40:49.000000000","message":"Works for ``volume-\u003cuuid\u003e-N`` and for clone-of-clone names, but the assumption about backend naming is load-bearing. A one-line comment stating that the backend names clone vdisks ``\u003csource_vdisk_name\u003e-\u003cn\u003e`` would help the next reader.","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":true,"context_lines":[{"line_number":2608,"context_line":"            for source_volume, cinder_clone_volume in zip("},{"line_number":2609,"context_line":"                    list_of_source_volumes, cinder_clone_volumes):"},{"line_number":2610,"context_line":"                if source_volume in svc_clone_volumes_map:"},{"line_number":2611,"context_line":"                    cinder_clone_volume[\u0027provider_id\u0027] \u003d ("},{"line_number":2612,"context_line":"                        svc_clone_volumes_map[source_volume])"},{"line_number":2613,"context_line":""},{"line_number":2614,"context_line":"            # In case of temporary_volumegroup type, we do not need"}],"source_content_type":"text/x-python","patch_set":21,"id":"984da360_1a1dac97","line":2611,"range":{"start_line":2611,"start_character":0,"end_line":2611,"end_character":58},"updated":"2026-09-24 12:40:49.000000000","message":"``provider_id`` is set on the OVO here but not included in ``volumes_model_update`` (see ``_get_volume_model_updates``). It only reaches the DB because ``_update_volumegroup_properties`` in create_group_from_src calls ``volume.save()`` afterwards. Please add ``provider_id`` to the model update so the persistence is explicit rather than a side effect of the metadata loop.","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":true,"context_lines":[{"line_number":2641,"context_line":"            if clone_volumegroup_name:"},{"line_number":2642,"context_line":"                try:"},{"line_number":2643,"context_line":"                    self.delete_volumegroup(clone_volumegroup_name,"},{"line_number":2644,"context_line":"                                            evictvolumes\u003dFalse)"},{"line_number":2645,"context_line":"                except Exception:"},{"line_number":2646,"context_line":"                    LOG.error(\"Failed to rollback clone group creation for %s\","},{"line_number":2647,"context_line":"                              clone_volumegroup_name)"}],"source_content_type":"text/x-python","patch_set":21,"id":"54f061d9_5a3a2e89","line":2644,"range":{"start_line":2644,"start_character":0,"end_line":2644,"end_character":63},"updated":"2026-09-24 12:40:49.000000000","message":"This rollback calls ``rmvolumegroup`` without ``-evictvolumes`` on a group that may already contain the clone vdisks, so on a real system the command fails (the simulator\u0027s ``_cmd_rmvolumegroup`` just deletes the dict entry, which is why the tests do not see it).\n\nIt also does not delete the clone vdisks themselves. If the failure happened before the ``provider_id`` mapping at 2611, the cinder volumes still carry ``volume-\u003cuuid\u003e`` names, so a later ``delete_group`` on the errored group deletes nothing on the backend and the ``\u003csource\u003e-N`` clones are stranded. Please delete the vdisks returned by get_volumes_in_volumegroup first, then remove the group.","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":true,"context_lines":[{"line_number":3335,"context_line":"        \"\"\"Check if volumegroup snapshot exists.\"\"\""},{"line_number":3336,"context_line":""},{"line_number":3337,"context_line":"        attrs \u003d self.ssh.lsvolumegroupsnapshot(params)"},{"line_number":3338,"context_line":"        return attrs is not None and len(attrs) \u003e 0"},{"line_number":3339,"context_line":""},{"line_number":3340,"context_line":"    def delete_volumegroup_snapshot(self, group_snapshot, snapshots,"},{"line_number":3341,"context_line":"                                    group_type):"}],"source_content_type":"text/x-python","patch_set":21,"id":"e21249c6_57edeef5","line":3338,"range":{"start_line":3338,"start_character":0,"end_line":3338,"end_character":51},"updated":"2026-09-24 12:40:49.000000000","message":"For the still-open PS5 thread from Eric and jayaanand: this now returns a bool, and all three callers (3358, 3402, 3436) only test truthiness, so the empty-list case is handled. Worth a short reply on that thread so it can be resolved.","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":true,"context_lines":[{"line_number":4974,"context_line":"            master_helper.change_consistgrp_cyclingmode(rccg_name, \u0027multi\u0027)"},{"line_number":4975,"context_line":"        else:"},{"line_number":4976,"context_line":"            # Update volume cyclingmode to \u0027multi\u0027"},{"line_number":4977,"context_line":"            volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":4978,"context_line":"            master_helper.stop_relationship(volume_name, rcrel\u003drc_name)"},{"line_number":4979,"context_line":"            master_helper.change_relationship_cyclingmode(volume_name, \u0027multi\u0027,"},{"line_number":4980,"context_line":"                                                          rc_name)"}],"source_content_type":"text/x-python","patch_set":21,"id":"d67b212d_a4e1b0c9","line":4977,"range":{"start_line":4977,"start_character":0,"end_line":4977,"end_character":63},"updated":"2026-09-24 12:40:49.000000000","message":"``volume_name`` is already computed at 4940; this and the recomputations at 4983 and 5006 are redundant. Same pattern in storwize_svc_fc.py ``_retype_hyperswap_volume``, where it is recomputed nine times (461 through 537). Compute once at the top of each method.","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":true,"context_lines":[{"line_number":7212,"context_line":"              volume_utils.is_group_a_type("},{"line_number":7213,"context_line":"                  group, \"temporary_volume_group_enabled\")):"},{"line_number":7214,"context_line":"            try:"},{"line_number":7215,"context_line":"                model_update, volumes_model \u003d ("},{"line_number":7216,"context_line":"                    self._helpers.create_volumegroup_from_source("},{"line_number":7217,"context_line":"                        context, group, volumes, group_snapshot,"},{"line_number":7218,"context_line":"                        snapshots, source_group, source_vols))"}],"source_content_type":"text/x-python","patch_set":21,"id":"3065c471_cfcf0375","line":7215,"range":{"start_line":7215,"start_character":0,"end_line":7215,"end_character":47},"updated":"2026-09-24 12:40:49.000000000","message":"``volumes_model`` is only assigned inside the try. When create_volumegroup_from_source raises, the except at 7224 sets ``model_update`` and falls through to the loop at 7236, which reads ``volumes_model`` and raises UnboundLocalError. The CG branch above avoids this by assigning before its inner try. Please ``set volumes_model \u003d []`` in the except block, and add a unit test that makes the helper raise VolumeBackendAPIException so both this and the 7227 issue are covered.","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":true,"context_lines":[{"line_number":7224,"context_line":"            except exception.VolumeBackendAPIException as err:"},{"line_number":7225,"context_line":"                LOG.error(\"Failed to clone the volumegroup \""},{"line_number":7226,"context_line":"                          \"%(source_group)s. Exception: %(exception)s.\","},{"line_number":7227,"context_line":"                          {\u0027source_group\u0027: group_snapshot.group_id,"},{"line_number":7228,"context_line":"                           \u0027exception\u0027: err})"},{"line_number":7229,"context_line":"                model_update \u003d {\u0027status\u0027: fields.GroupStatus.ERROR}"},{"line_number":7230,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"2e9810fc_7c3a5bff","line":7227,"range":{"start_line":7227,"start_character":0,"end_line":7227,"end_character":67},"updated":"2026-09-24 12:40:49.000000000","message":"On the source-group path ``group_snapshot`` is None, so this LOG.error raises AttributeError and the real backend error is lost. Vrinda asked about this on PS17; the answer covered the snapshot path but not this one. Please log ``group.id`` (or ``source_group.id`` when ``group_snapshot`` is None).","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_fc.py":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":183,"context_line":"        # The host_site is necessary for hyperswap volume."},{"line_number":184,"context_line":"        if is_hyper_volume and host_site is None:"},{"line_number":185,"context_line":"            msg \u003d (_(\u0027There is no correct storwize_preferred_host_site \u0027"},{"line_number":186,"context_line":"                     \u0027configured for a hyperswap volume %s.\u0027) % volume.name)"},{"line_number":187,"context_line":"            LOG.error(msg)"},{"line_number":188,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"fd0cd6b0_c3e4dc33","line":186,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        # The host_site is necessary for hyperswap volume."},{"line_number":184,"context_line":"        if is_hyper_volume and host_site is None:"},{"line_number":185,"context_line":"            msg \u003d (_(\u0027There is no correct storwize_preferred_host_site \u0027"},{"line_number":186,"context_line":"                     \u0027configured for a hyperswap volume %s.\u0027) % volume.name)"},{"line_number":187,"context_line":"            LOG.error(msg)"},{"line_number":188,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"442b0d8b_dfe1aa7d","line":186,"in_reply_to":"fd0cd6b0_c3e4dc33","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":289,"context_line":"        except Exception as ex:"},{"line_number":290,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":291,"context_line":"                LOG.error(\u0027initialize_connection: Failed to export volume \u0027"},{"line_number":292,"context_line":"                          \u0027%(vol)s due to %(ex)s.\u0027, {\u0027vol\u0027: volume.name,"},{"line_number":293,"context_line":"                                                     \u0027ex\u0027: ex})"},{"line_number":294,"context_line":"                self._do_terminate_connection(volume, connector)"},{"line_number":295,"context_line":"                LOG.error(\u0027initialize_connection: Failed \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"d0ce4f93_1515d438","line":292,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        except Exception as ex:"},{"line_number":290,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":291,"context_line":"                LOG.error(\u0027initialize_connection: Failed to export volume \u0027"},{"line_number":292,"context_line":"                          \u0027%(vol)s due to %(ex)s.\u0027, {\u0027vol\u0027: volume.name,"},{"line_number":293,"context_line":"                                                     \u0027ex\u0027: ex})"},{"line_number":294,"context_line":"                self._do_terminate_connection(volume, connector)"},{"line_number":295,"context_line":"                LOG.error(\u0027initialize_connection: Failed \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a737129_8c8e1de6","line":292,"in_reply_to":"d0ce4f93_1515d438","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":346,"context_line":"                LOG.debug(\"Volume %(volume)s is attached to multiple \""},{"line_number":347,"context_line":"                          \"instances on host %(host_name)s, \""},{"line_number":348,"context_line":"                          \"skip terminate volume connection\","},{"line_number":349,"context_line":"                          {\u0027volume\u0027: volume.name,"},{"line_number":350,"context_line":"                           \u0027host_name\u0027: volume.host.split(\u0027@\u0027)[0]})"},{"line_number":351,"context_line":"                return"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"19d718ba_b5e2930c","line":349,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":346,"context_line":"                LOG.debug(\"Volume %(volume)s is attached to multiple \""},{"line_number":347,"context_line":"                          \"instances on host %(host_name)s, \""},{"line_number":348,"context_line":"                          \"skip terminate volume connection\","},{"line_number":349,"context_line":"                          {\u0027volume\u0027: volume.name,"},{"line_number":350,"context_line":"                           \u0027host_name\u0027: volume.host.split(\u0027@\u0027)[0]})"},{"line_number":351,"context_line":"                return"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"13e3449d_3979bf30","line":349,"in_reply_to":"19d718ba_b5e2930c","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":452,"context_line":"        if (old_opts[\u0027volume_topology\u0027] !\u003d \u0027hyperswap\u0027 and"},{"line_number":453,"context_line":"                new_opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027):"},{"line_number":454,"context_line":"            LOG.debug(\u0027retype: Convert a normal volume %s to hyperswap \u0027"},{"line_number":455,"context_line":"                      \u0027volume.\u0027, volume.name)"},{"line_number":456,"context_line":"            conn_info \u003d {}"},{"line_number":457,"context_line":"            if volume.previous_status \u003d\u003d \u0027in-use\u0027:"},{"line_number":458,"context_line":"                volume_name \u003d self._helpers.get_volume_name(volume)"}],"source_content_type":"text/x-python","patch_set":18,"id":"063ce1de_1732fcc6","line":455,"updated":"2026-08-18 23:41:19.000000000","message":"``get_volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":452,"context_line":"        if (old_opts[\u0027volume_topology\u0027] !\u003d \u0027hyperswap\u0027 and"},{"line_number":453,"context_line":"                new_opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027):"},{"line_number":454,"context_line":"            LOG.debug(\u0027retype: Convert a normal volume %s to hyperswap \u0027"},{"line_number":455,"context_line":"                      \u0027volume.\u0027, volume.name)"},{"line_number":456,"context_line":"            conn_info \u003d {}"},{"line_number":457,"context_line":"            if volume.previous_status \u003d\u003d \u0027in-use\u0027:"},{"line_number":458,"context_line":"                volume_name \u003d self._helpers.get_volume_name(volume)"}],"source_content_type":"text/x-python","patch_set":18,"id":"f24fda0f_dd9fe0d4","line":455,"in_reply_to":"063ce1de_1732fcc6","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":490,"context_line":"                            volume_name, new_opts[\u0027peer_pool\u0027])"},{"line_number":491,"context_line":"                        msg \u003d _(\u0027Zoning failed for volume %(vol)s and host \u0027"},{"line_number":492,"context_line":"                                \u0027%(host)s due to %(ex)s.\u0027,"},{"line_number":493,"context_line":"                                {\u0027vol\u0027: volume.name, \u0027host\u0027: host, \u0027ex\u0027: ex})"},{"line_number":494,"context_line":"                        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":495,"context_line":"        elif (old_opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027 and"},{"line_number":496,"context_line":"                new_opts[\u0027volume_topology\u0027] !\u003d \u0027hyperswap\u0027):"}],"source_content_type":"text/x-python","patch_set":18,"id":"9b97a6f3_93284967","line":493,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":490,"context_line":"                            volume_name, new_opts[\u0027peer_pool\u0027])"},{"line_number":491,"context_line":"                        msg \u003d _(\u0027Zoning failed for volume %(vol)s and host \u0027"},{"line_number":492,"context_line":"                                \u0027%(host)s due to %(ex)s.\u0027,"},{"line_number":493,"context_line":"                                {\u0027vol\u0027: volume.name, \u0027host\u0027: host, \u0027ex\u0027: ex})"},{"line_number":494,"context_line":"                        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":495,"context_line":"        elif (old_opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027 and"},{"line_number":496,"context_line":"                new_opts[\u0027volume_topology\u0027] !\u003d \u0027hyperswap\u0027):"}],"source_content_type":"text/x-python","patch_set":18,"id":"3d45b096_fb80300d","line":493,"in_reply_to":"9b97a6f3_93284967","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":495,"context_line":"        elif (old_opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027 and"},{"line_number":496,"context_line":"                new_opts[\u0027volume_topology\u0027] !\u003d \u0027hyperswap\u0027):"},{"line_number":497,"context_line":"            LOG.debug(\u0027retype: Convert a hyperswap volume %s to normal \u0027"},{"line_number":498,"context_line":"                      \u0027volume.\u0027, volume.name)"},{"line_number":499,"context_line":"            if new_pool \u003d\u003d old_pool:"},{"line_number":500,"context_line":"                volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":501,"context_line":"                self._helpers.convert_hyperswap_volume_to_normal("}],"source_content_type":"text/x-python","patch_set":18,"id":"1e297e3d_c47cdc6f","line":498,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``?","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":495,"context_line":"        elif (old_opts[\u0027volume_topology\u0027] \u003d\u003d \u0027hyperswap\u0027 and"},{"line_number":496,"context_line":"                new_opts[\u0027volume_topology\u0027] !\u003d \u0027hyperswap\u0027):"},{"line_number":497,"context_line":"            LOG.debug(\u0027retype: Convert a hyperswap volume %s to normal \u0027"},{"line_number":498,"context_line":"                      \u0027volume.\u0027, volume.name)"},{"line_number":499,"context_line":"            if new_pool \u003d\u003d old_pool:"},{"line_number":500,"context_line":"                volume_name \u003d self._helpers.get_volume_name(volume)"},{"line_number":501,"context_line":"                self._helpers.convert_hyperswap_volume_to_normal("}],"source_content_type":"text/x-python","patch_set":18,"id":"07f5f944_f4482866","line":498,"in_reply_to":"1e297e3d_c47cdc6f","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_iscsi.py":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":177,"context_line":"        is_hyper_volume \u003d self.is_volume_hyperswap(volume)"},{"line_number":178,"context_line":"        if is_hyper_volume and host_site is None:"},{"line_number":179,"context_line":"            msg \u003d (_(\u0027There is no correct storwize_preferred_host_site \u0027"},{"line_number":180,"context_line":"                     \u0027configured for a hyperswap volume %s.\u0027) % volume.name)"},{"line_number":181,"context_line":"            LOG.error(msg)"},{"line_number":182,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":183,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1ccdd888_8a4ca459","line":180,"updated":"2026-08-18 23:41:19.000000000","message":"``volume_name``","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        is_hyper_volume \u003d self.is_volume_hyperswap(volume)"},{"line_number":178,"context_line":"        if is_hyper_volume and host_site is None:"},{"line_number":179,"context_line":"            msg \u003d (_(\u0027There is no correct storwize_preferred_host_site \u0027"},{"line_number":180,"context_line":"                     \u0027configured for a hyperswap volume %s.\u0027) % volume.name)"},{"line_number":181,"context_line":"            LOG.error(msg)"},{"line_number":182,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":183,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"d1d00ec9_c0f2e743","line":180,"in_reply_to":"1ccdd888_8a4ca459","updated":"2026-09-22 11:21:41.000000000","message":"Not needed here","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"}],"doc/source/configuration/block-storage/drivers/ibm-storwize-svc-driver.rst":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"030fc75c8e63bac7f61941352b10d1f9ef92ee44","unresolved":true,"context_lines":[{"line_number":765,"context_line":""},{"line_number":766,"context_line":".. note::"},{"line_number":767,"context_line":""},{"line_number":768,"context_line":"   When using **thin clones** (``clone_type\u003dthinclone``), the parent volume"},{"line_number":769,"context_line":"   group cannot be deleted until all cloned volume groups created from it are"},{"line_number":770,"context_line":"   deleted first. This is because thin clones maintain a dependency on the"},{"line_number":771,"context_line":"   source volumes."}],"source_content_type":"text/x-rst","patch_set":18,"id":"2d9b1904_e75465a2","line":768,"updated":"2026-08-18 23:41:19.000000000","message":"You may want to rethink this a bit as it may cause issues with resizing and other things too (depending on your storage features).\n\nOne way we handled the same situation was to create a parent for these types of objects and clone it to begin with, serving up the first clone initially.  That way all volumes can be removed, resized, etc.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"4cd4e2104b457a30c14a62483a0706a37d74cad2","unresolved":false,"context_lines":[{"line_number":765,"context_line":""},{"line_number":766,"context_line":".. note::"},{"line_number":767,"context_line":""},{"line_number":768,"context_line":"   When using **thin clones** (``clone_type\u003dthinclone``), the parent volume"},{"line_number":769,"context_line":"   group cannot be deleted until all cloned volume groups created from it are"},{"line_number":770,"context_line":"   deleted first. This is because thin clones maintain a dependency on the"},{"line_number":771,"context_line":"   source volumes."}],"source_content_type":"text/x-rst","patch_set":18,"id":"cb139f06_c73f2f7c","line":768,"in_reply_to":"2d9b1904_e75465a2","updated":"2026-09-22 11:21:41.000000000","message":"In our storage there is transitive dependency on the clones with the parent volume group. This is only in the case of thin-clones as they need the volumegroup-snapshot to retrive its data.","commit_id":"df3066c36fb43a23f5150061ea19f0fef0026ad3"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":true,"context_lines":[{"line_number":760,"context_line":"   $ cinder group-type-key vg-thin-clone-type set volume_group_enabled\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":761,"context_line":"   $ cinder group-type-key vg-thin-clone-type set clone_type\u003dthinclone"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"Volume Group Deletion Restrictions"},{"line_number":764,"context_line":"\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c"},{"line_number":765,"context_line":""},{"line_number":766,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":21,"id":"0db0dc39_070af32d","line":763,"range":{"start_line":763,"start_character":0,"end_line":763,"end_character":34},"updated":"2026-09-24 12:40:49.000000000","message":"This heading uses ``\u003c\u003c\u003c`` underline, which nests one level below \"Volume Group Clone\" at 721. If deletion restrictions are meant to be a sibling section, use ``---``.","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"}],"releasenotes/notes/ibm-svf-support-for-vgs-clone-operation-8521d60641edbb89.yaml":[{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@everpuredata.com","username":"sdodsley"},"change_message_id":"01965e598d7743c2321c100307b1614524719915","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    IBM Storage Virtualize Family driver: Added support for creating"},{"line_number":5,"context_line":"    clone volume groups from source volume groups or volume group snapshots."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"d8e2c934_78de0622","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":68},"updated":"2026-09-24 12:40:49.000000000","message":"Please mention the ``clone_type`` group spec (``clone`` default, ``thinclone``) and the firmware floor (8.5.1.0) so operators can find the feature from the release note.","commit_id":"0dd349d54c95362c46ffc09f6fbcbf9e823c7ff1"}]}
