)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"154f27a79abf3bd16ea0b13a5ec6b87aada8839c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4d962ad8_8a832c8a","updated":"2026-09-18 14:55:25.000000000","message":"LGTM (sorry, I don\u0027t have core for backports).","commit_id":"8e087a7cabcf978bcd329caf4f1841cfe2b04c04"}],"cinder/volume/drivers/pure.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"5fde5b36b10646838450139fcca764a8706aa85e","unresolved":true,"context_lines":[{"line_number":811,"context_line":""},{"line_number":812,"context_line":"        # Revert overwrites the volume with the contents of the snapshot,"},{"line_number":813,"context_line":"        # so the volume is the target (names) and the snapshot is the source."},{"line_number":814,"context_line":"        res \u003d current_array.post_volumes(names\u003d[vol_name], overwrite\u003dTrue,"},{"line_number":815,"context_line":"                                         volume\u003dflasharray.VolumePost("},{"line_number":816,"context_line":"                                             source\u003dflasharray.Reference("},{"line_number":817,"context_line":"                                                 name\u003dsnap_name)))"}],"source_content_type":"text/x-python","patch_set":1,"id":"15bcbf29_9580f334","line":814,"updated":"2026-09-21 13:47:39.000000000","message":"names\u003d[vol_name] is now the overwrite target, which is correct API order. vol_name still comes from _generate_purity_vol_name() at 801, not from provider_id.\n\nextend/delete use _get_vol_name() → volume[\u0027provider_id\u0027]. create_in_vgroup stores provider_id as \"\u003cvg\u003e/\u003cvol\u003e-cinder\", and _generate_purity_vol_name() never adds that vg prefix (it only prefixes the sync pod). The snapshot source on this path uses _get_snap_name() → provider_id, so for a vgroup volume the source is \"vg/vol.snap\" and the target is \"vol-cinder\".\n\nThe unit test passes because new_fake_vol() sets provider_id to volume.name + \"-cinder\" with no vg. Now that revert actually runs","commit_id":"8e087a7cabcf978bcd329caf4f1841cfe2b04c04"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"5fde5b36b10646838450139fcca764a8706aa85e","unresolved":true,"context_lines":[{"line_number":827,"context_line":"        the response, otherwise the operation is reported to Cinder as having"},{"line_number":828,"context_line":"        succeeded when the array did nothing."},{"line_number":829,"context_line":"        \"\"\""},{"line_number":830,"context_line":"        if res.status_code !\u003d 400:"},{"line_number":831,"context_line":"            return"},{"line_number":832,"context_line":"        details \u003d _get_error_details(res)"},{"line_number":833,"context_line":"        if ERR_MSG_ARRAY_LIMIT in details:"}],"source_content_type":"text/x-python","patch_set":1,"id":"a839c8e3_a9d535dc","line":830,"updated":"2026-09-21 13:47:39.000000000","message":"Any other status — including 401/403/409/500 — still returns and the caller reports success.\n\nenable_replication (this file #2221), disable_replication, and failover_replication already treat status_code !\u003d 200 as failure. This helper should do the same?","commit_id":"8e087a7cabcf978bcd329caf4f1841cfe2b04c04"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"5fde5b36b10646838450139fcca764a8706aa85e","unresolved":true,"context_lines":[{"line_number":951,"context_line":"                volume\u003dflasharray.VolumePost("},{"line_number":952,"context_line":"                    source\u003dflasharray.Reference("},{"line_number":953,"context_line":"                        name\u003dsnap_name)))"},{"line_number":954,"context_line":"        self._raise_if_failed(res, \"create volume\", vol_name)"},{"line_number":955,"context_line":"        self._extend_if_needed(current_array,"},{"line_number":956,"context_line":"                               vol_name,"},{"line_number":957,"context_line":"                               snapshot[\"volume_size\"],"}],"source_content_type":"text/x-python","patch_set":1,"id":"6c3a9119_8387effa","line":954,"updated":"2026-09-21 13:47:39.000000000","message":"This checks post_volumes, then the next calls are still unchecked:\n\n  self._extend_if_needed(...)          # patch_volumes, no status check\n  self.set_qos(...) / patch_volumes()  # QoS, no status check\n\ncreate_cloned_volume has the same sequence after the new check at #1217.\n\nIf the clone/from-snap is larger than the source and the array rejects the extend, Cinder still reports the volume available at the requested size — the same array/Cinder disagreement this patch is fixing for create","commit_id":"8e087a7cabcf978bcd329caf4f1841cfe2b04c04"}]}
