)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e8333a459874da828598a45612e8c9210fc55663","unresolved":true,"context_lines":[{"line_number":18,"context_line":"The clone paths now determine the setting the same way create_volume()"},{"line_number":19,"context_line":"does and apply it to the new LUN.  ZAPI clone-create cannot set it, so"},{"line_number":20,"context_line":"the cloned LUN is updated afterwards through a new"},{"line_number":21,"context_line":"ensure_lun_space_allocation() client method, cycling the LUN"},{"line_number":22,"context_line":"offline/online as older releases require; it is not mapped to an"},{"line_number":23,"context_line":"initiator yet, so this is safe.  REST passes it in the clone creation"},{"line_number":24,"context_line":"request and verifies it afterwards with the same method, which changes"},{"line_number":25,"context_line":"it in place without an offline cycle.  The REST private CLI clone"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"469ce149_987e85f7","line":22,"range":{"start_line":21,"start_character":45,"end_line":22,"end_character":41},"updated":"2026-11-06 15:16:04.000000000","message":"Which versions of ONTAP require LUNs to be offlined/onlined before and after patch? I think this isnt the case in latest versions of ONTAP i.e. 9.15.1 and later?","commit_id":"8211c21f0fe75c5280cf63faae836694004f3cab"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"655458dd60e6dcbb5b4f71a277625489bfe4253c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"offline/online only when the setting differs. This is a conservative"},{"line_number":20,"context_line":"implementation choice, not a claim that a particular supported ONTAP"},{"line_number":21,"context_line":"release requires that cycle."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Discover newly cloned or copied LUNs with three total attempts, one"},{"line_number":24,"context_line":"second apart, retrying empty results and object-not-found errors. Other"},{"line_number":25,"context_line":"lookup errors fail immediately."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"901f7e63_b6fd4430","line":22,"in_reply_to":"469ce149_987e85f7","updated":"2026-11-08 06:12:40.000000000","message":"Good catch. I couldn\u0027t find a documented ONTAP release that requires the LUN to be offline to change space allocation [1][2]. I dropped \"as older releases require\" and described the ZAPI offline/online cycle as a conservative choice. REST doesn\u0027t offline the LUN.\n\n[1] https://docs.netapp.com/us-en/ontap/san-admin/enable-space-allocation.html\n[2] https://docs.netapp.com/us-en/ontap-cli-9151/lun-modify.html","commit_id":"02fbe7c49214e564161fff9c69784781d5141062"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e8333a459874da828598a45612e8c9210fc55663","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"29349051_b582617b","updated":"2026-11-06 15:16:04.000000000","message":"Please take a look at the comments.","commit_id":"8211c21f0fe75c5280cf63faae836694004f3cab"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"a510022e78b968991d3fbf1adf05a3727a3de076","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9cc7ac94_5757e7c8","updated":"2026-11-11 06:36:28.000000000","message":"Thanks for addressing the comments. I have some follow ups.","commit_id":"02fbe7c49214e564161fff9c69784781d5141062"}],"cinder/volume/drivers/netapp/dataontap/block_cmode.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"d05c1af4f2726b7012d0a629a7d9c84d146dfa50","unresolved":true,"context_lines":[{"line_number":288,"context_line":"                   block_count\u003d0, source_snapshot\u003dNone, is_snapshot\u003dFalse,"},{"line_number":289,"context_line":"                   qos_policy_group_is_adaptive\u003dFalse,"},{"line_number":290,"context_line":"                   space_allocation\u003dNone):"},{"line_number":291,"context_line":"        \"\"\"Clone LUN with the given handle to the new name.\"\"\""},{"line_number":292,"context_line":"        if not space_reserved:"},{"line_number":293,"context_line":"            space_reserved \u003d self.lun_space_reservation"},{"line_number":294,"context_line":"        metadata \u003d self._get_lun_attr(name, \u0027metadata\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"91003899_6867152a","line":291,"updated":"2026-09-15 16:36:17.000000000","message":"what about _clone_snapshot and _copy_lun?","commit_id":"74beeda489936b9495984bdee1f0fba8814b3dd4"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"acb28bbe8c0fd52bc5b5ad26792aafb636f2214c","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                   block_count\u003d0, source_snapshot\u003dNone, is_snapshot\u003dFalse,"},{"line_number":289,"context_line":"                   qos_policy_group_is_adaptive\u003dFalse,"},{"line_number":290,"context_line":"                   space_allocation\u003dNone):"},{"line_number":291,"context_line":"        \"\"\"Clone LUN with the given handle to the new name.\"\"\""},{"line_number":292,"context_line":"        if not space_reserved:"},{"line_number":293,"context_line":"            space_reserved \u003d self.lun_space_reservation"},{"line_number":294,"context_line":"        metadata \u003d self._get_lun_attr(name, \u0027metadata\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"e87d7441_c8857397","line":291,"in_reply_to":"91003899_6867152a","updated":"2026-11-05 08:19:50.000000000","message":"Done in PS4. Revert-to-snapshot and _copy_lun() now apply the setting too.","commit_id":"74beeda489936b9495984bdee1f0fba8814b3dd4"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e8333a459874da828598a45612e8c9210fc55663","unresolved":true,"context_lines":[{"line_number":473,"context_line":"        lun \u003d self.zapi_client.get_lun_by_args("},{"line_number":474,"context_line":"            vserver\u003dself.vserver,"},{"line_number":475,"context_line":"            path\u003ddest_lun_path)"},{"line_number":476,"context_line":"        if not lun:"},{"line_number":477,"context_line":"            # The copy job completed and the destination LUN was"},{"line_number":478,"context_line":"            # configured, but it can no longer be discovered. Treat the"},{"line_number":479,"context_line":"            # operation as failed and attempt best-effort cleanup so a"},{"line_number":480,"context_line":"            # retry or Glance fallback does not encounter the same"},{"line_number":481,"context_line":"            # destination path."},{"line_number":482,"context_line":"            try:"},{"line_number":483,"context_line":"                self.zapi_client.destroy_lun(dest_lun_path)"},{"line_number":484,"context_line":"            except netapp_api.NaApiError as error:"}],"source_content_type":"text/x-python","patch_set":4,"id":"47704d32_647fe8f7","line":481,"range":{"start_line":476,"start_character":7,"end_line":481,"end_character":31},"updated":"2026-11-06 15:16:04.000000000","message":"How is this related to the fix for space-allocation? The get lun by path may end up returning 0 records immediately after LUN is created as we have seen such errors with REST APIs. If the lun creation did not end up with exception, IMO we need to add retry atleast three times before destroying the lun. Otherwise this may end up destroying in case ONTAP failed to report a lun already created on ONTAP.","commit_id":"8211c21f0fe75c5280cf63faae836694004f3cab"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e8333a459874da828598a45612e8c9210fc55663","unresolved":true,"context_lines":[{"line_number":1319,"context_line":"        # Compute the space-allocation setting and get the destination"},{"line_number":1320,"context_line":"        # client before the copy so that a failure here does not leak an"},{"line_number":1321,"context_line":"        # already-copied LUN."},{"line_number":1322,"context_line":"        extra_specs \u003d na_utils.get_volume_extra_specs(volume)"},{"line_number":1323,"context_line":"        space_allocation \u003d self._get_space_allocation(extra_specs)"},{"line_number":1324,"context_line":"        dest_client \u003d dot_utils.get_client_for_backend(dest_backend_name)"},{"line_number":1325,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"0928d1a3_5073b4c1","line":1322,"updated":"2026-11-06 15:16:04.000000000","message":"Do we want to apply source volume\u0027s extra spec to the destination volume here?","commit_id":"8211c21f0fe75c5280cf63faae836694004f3cab"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"655458dd60e6dcbb5b4f71a277625489bfe4253c","unresolved":false,"context_lines":[{"line_number":478,"context_line":"            block_base.NetAppLun("},{"line_number":479,"context_line":"                \u0027%s:%s\u0027 % (clone_lun[\u0027Vserver\u0027], clone_lun[\u0027Path\u0027]),"},{"line_number":480,"context_line":"                destination_name,"},{"line_number":481,"context_line":"                clone_lun[\u0027Size\u0027],"},{"line_number":482,"context_line":"                clone_lun))"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def _retry_clone_lun(self, volume, name, new_name, space_reserved,"}],"source_content_type":"text/x-python","patch_set":5,"id":"954ac4cb_0e5fe780","line":481,"in_reply_to":"47704d32_647fe8f7","updated":"2026-11-08 06:12:40.000000000","message":"Agreed. Discovery is now retried 3 times (1s apart) on empty results or EOBJECTNOTFOUND. A discovery failure no longer deletes the LUN; only a real configuration failure triggers rollback. The same applies to ZAPI, normal clone, and snapshot revert, with tests.","commit_id":"02fbe7c49214e564161fff9c69784781d5141062"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"655458dd60e6dcbb5b4f71a277625489bfe4253c","unresolved":false,"context_lines":[{"line_number":1319,"context_line":"            LOG.debug(\u0027Waiting for LUN copy job to complete. Current \u0027"},{"line_number":1320,"context_line":"                      \u0027status is: %s.\u0027, copy_status[\u0027job-status\u0027])"},{"line_number":1321,"context_line":"            if not copy_status:"},{"line_number":1322,"context_line":"                status_error_msg \u003d (_(\"Error copying LUN %s. The copy\""},{"line_number":1323,"context_line":"                                      \"status could not be retrieved.\"))"},{"line_number":1324,"context_line":"                raise na_utils.NetAppDriverException("},{"line_number":1325,"context_line":"                    status_error_msg % (volume.id))"}],"source_content_type":"text/x-python","patch_set":5,"id":"b7aecbb9_e68e3806","line":1322,"in_reply_to":"0928d1a3_5073b4c1","updated":"2026-11-08 06:12:40.000000000","message":"This is safe for retype. Driver-assisted migration is only used when the old and new types differ in nothing but volume_backend_name and RESKEY:availability_zones (VolumeManager._can_use_driver_migration(), manager.py:2648).\n\n- If the two types have different netapp:space_allocation values (e.g. true -\u003e false), this driver path is never called. Cinder falls back to generic migration, which creates the new volume with the new type, so the new value is applied.\n- If the values are the same, this path can be used, and reading the source spec gives exactly the new type\u0027s value.\n\nSo the destination LUN always ends up with the new type\u0027s space_allocation value.","commit_id":"02fbe7c49214e564161fff9c69784781d5141062"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"7fcafe97da96492a7256fe150833acdc795fa03e","unresolved":true,"context_lines":[{"line_number":1319,"context_line":"            LOG.debug(\u0027Waiting for LUN copy job to complete. Current \u0027"},{"line_number":1320,"context_line":"                      \u0027status is: %s.\u0027, copy_status[\u0027job-status\u0027])"},{"line_number":1321,"context_line":"            if not copy_status:"},{"line_number":1322,"context_line":"                status_error_msg \u003d (_(\"Error copying LUN %s. The copy\""},{"line_number":1323,"context_line":"                                      \"status could not be retrieved.\"))"},{"line_number":1324,"context_line":"                raise na_utils.NetAppDriverException("},{"line_number":1325,"context_line":"                    status_error_msg % (volume.id))"}],"source_content_type":"text/x-python","patch_set":5,"id":"e8229046_04f4523b","line":1322,"in_reply_to":"8e7d13e2_1d5f6a44","updated":"2026-11-11 14:35:29.000000000","message":"@Brian Rosmaita @Rajat Dhasmana @Jon Bernard could you take a look?\n\nThe driver only gets the volume (still on its old type) and the host, so it can\u0027t read the new type here. Core only uses driver-assisted migration when the types differ in nothing but backend name or AZ, so the value is the same either way.","commit_id":"02fbe7c49214e564161fff9c69784781d5141062"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"a510022e78b968991d3fbf1adf05a3727a3de076","unresolved":false,"context_lines":[{"line_number":1319,"context_line":"            LOG.debug(\u0027Waiting for LUN copy job to complete. Current \u0027"},{"line_number":1320,"context_line":"                      \u0027status is: %s.\u0027, copy_status[\u0027job-status\u0027])"},{"line_number":1321,"context_line":"            if not copy_status:"},{"line_number":1322,"context_line":"                status_error_msg \u003d (_(\"Error copying LUN %s. The copy\""},{"line_number":1323,"context_line":"                                      \"status could not be retrieved.\"))"},{"line_number":1324,"context_line":"                raise na_utils.NetAppDriverException("},{"line_number":1325,"context_line":"                    status_error_msg % (volume.id))"}],"source_content_type":"text/x-python","patch_set":5,"id":"8e7d13e2_1d5f6a44","line":1322,"in_reply_to":"b7aecbb9_e68e3806","updated":"2026-11-11 06:36:28.000000000","message":"I would look for core opinion on this. This is a behaviour all drivers should implement in that case, not just one driver. Ideally this should be enforced by the core instead of drivers making this call.","commit_id":"02fbe7c49214e564161fff9c69784781d5141062"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e8333a459874da828598a45612e8c9210fc55663","unresolved":true,"context_lines":[{"line_number":792,"context_line":"        if luns and luns[0][\u0027SpaceAllocated\u0027] \u003d\u003d desired:"},{"line_number":793,"context_line":"            return"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        self._set_lun_state(path, \u0027offline\u0027)"},{"line_number":796,"context_line":"        try:"},{"line_number":797,"context_line":"            lun_set_space_alloc \u003d ("},{"line_number":798,"context_line":"                netapp_api.NaElement.create_node_with_children("}],"source_content_type":"text/x-python","patch_set":4,"id":"c28e129b_c74de056","line":795,"range":{"start_line":795,"start_character":8,"end_line":795,"end_character":44},"updated":"2026-11-06 15:16:04.000000000","message":"Is this step necessary?","commit_id":"8211c21f0fe75c5280cf63faae836694004f3cab"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"a510022e78b968991d3fbf1adf05a3727a3de076","unresolved":true,"context_lines":[{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        luns \u003d client_base.get_lun_by_args_with_retry(self, path\u003dpath)"},{"line_number":794,"context_line":"        if luns[0][\u0027SpaceAllocated\u0027] \u003d\u003d desired:"},{"line_number":795,"context_line":"            return"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"        self._set_lun_state(path, \u0027offline\u0027)"},{"line_number":798,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3c61b326_b5fb7788","line":795,"range":{"start_line":795,"start_character":8,"end_line":795,"end_character":44},"in_reply_to":"2d0c424c_c0d486ff","updated":"2026-11-11 06:36:28.000000000","message":"This step may not be required just to apply space allocation. Please verify once. REST does not require it, so I dont think we need to do this here. The reason why I am flagging this is, bringing a LUN to offline and then failure to bring it online is possible which may end up in permanent offline volume which ends up not being able to be managed from Cinder. So if its unnecessary, we should avoid this.","commit_id":"02fbe7c49214e564161fff9c69784781d5141062"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"7fcafe97da96492a7256fe150833acdc795fa03e","unresolved":false,"context_lines":[{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        luns \u003d client_base.get_lun_by_args_with_retry(self, path\u003dpath)"},{"line_number":794,"context_line":"        if luns[0][\u0027SpaceAllocated\u0027] \u003d\u003d desired:"},{"line_number":795,"context_line":"            return"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"        self._set_lun_state(path, \u0027offline\u0027)"},{"line_number":798,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"08e1cfc4_cfe48bd2","line":795,"in_reply_to":"2d0c424c_c0d486ff","updated":"2026-11-11 14:35:29.000000000","message":"Verified, ONTAP doesn\u0027t need the LUN offline to change space allocation. Removed the offline/online cycle in PS6.","commit_id":"02fbe7c49214e564161fff9c69784781d5141062"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"655458dd60e6dcbb5b4f71a277625489bfe4253c","unresolved":false,"context_lines":[{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        luns \u003d client_base.get_lun_by_args_with_retry(self, path\u003dpath)"},{"line_number":794,"context_line":"        if luns[0][\u0027SpaceAllocated\u0027] \u003d\u003d desired:"},{"line_number":795,"context_line":"            return"},{"line_number":796,"context_line":""},{"line_number":797,"context_line":"        self._set_lun_state(path, \u0027offline\u0027)"},{"line_number":798,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"2d0c424c_c0d486ff","line":795,"in_reply_to":"c28e129b_c74de056","updated":"2026-11-08 06:12:40.000000000","message":"The cycle is already skipped when the value matches. I can\u0027t confirm it is needed on every supported release, so I softened the commit message and docstring. Removing or version-gating it can follow once the ZAPI behavior is confirmed.","commit_id":"02fbe7c49214e564161fff9c69784781d5141062"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"d05c1af4f2726b7012d0a629a7d9c84d146dfa50","unresolved":true,"context_lines":[{"line_number":2315,"context_line":"            }"},{"line_number":2316,"context_line":"        }"},{"line_number":2317,"context_line":""},{"line_number":2318,"context_line":"        if space_allocation is not None:"},{"line_number":2319,"context_line":"            # ONTAP does not propagate the space-allocation setting of the"},{"line_number":2320,"context_line":"            # source LUN to a new LUN clone, so it must be set explicitly."},{"line_number":2321,"context_line":"            body[\u0027space\u0027][\u0027scsi_thin_provisioning_support_enabled\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"3e27f719_e9be5666","line":2318,"updated":"2026-09-15 16:36:17.000000000","message":"ONTAP REST documents space.scsi_thin_provisioning_support_enabled as valid on clone POST and says it is not propagated and is reset on a new clone/copy unless specified. The patch sets it on POST and does not call ensure_lun_space_allocation() on the success path. ZAPI cannot set it on clone-create, so ZAPI always PATCHes afterward. REST private-CLI fallback also PATCHes. Same-pool REST clone is the only path that trusts POST alone.\n\nThe bug was reproduced on ZAPI. If REST firmware ignores the field on clone POST, REST clones stay broken","commit_id":"74beeda489936b9495984bdee1f0fba8814b3dd4"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"acb28bbe8c0fd52bc5b5ad26792aafb636f2214c","unresolved":false,"context_lines":[{"line_number":2315,"context_line":"            }"},{"line_number":2316,"context_line":"        }"},{"line_number":2317,"context_line":""},{"line_number":2318,"context_line":"        if space_allocation is not None:"},{"line_number":2319,"context_line":"            # ONTAP does not propagate the space-allocation setting of the"},{"line_number":2320,"context_line":"            # source LUN to a new LUN clone, so it must be set explicitly."},{"line_number":2321,"context_line":"            body[\u0027space\u0027][\u0027scsi_thin_provisioning_support_enabled\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"6871a00a_e6eb8ff1","line":2318,"in_reply_to":"3e27f719_e9be5666","updated":"2026-11-05 08:19:50.000000000","message":"Done in PS4. The REST clone path now verifies the setting after the POST and destroys the clone on failure.","commit_id":"74beeda489936b9495984bdee1f0fba8814b3dd4"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"d05c1af4f2726b7012d0a629a7d9c84d146dfa50","unresolved":true,"context_lines":[{"line_number":2352,"context_line":"                {\u0027space.scsi_thin_provisioning_support_enabled\u0027:"},{"line_number":2353,"context_line":"                    space_allocation})"},{"line_number":2354,"context_line":"        finally:"},{"line_number":2355,"context_line":"            self._lun_update_by_path(path, {\u0027enabled\u0027: True})"},{"line_number":2356,"context_line":""},{"line_number":2357,"context_line":"    def destroy_lun(self, path, force\u003dTrue):"},{"line_number":2358,"context_line":"        \"\"\"Destroys the LUN at the path.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"6025a200_4033e07f","line":2355,"updated":"2026-09-15 16:36:17.000000000","message":"REST scsi_thin_provisioning_support_enabled is valid in PATCH from 9.10","commit_id":"74beeda489936b9495984bdee1f0fba8814b3dd4"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"acb28bbe8c0fd52bc5b5ad26792aafb636f2214c","unresolved":false,"context_lines":[{"line_number":2352,"context_line":"                {\u0027space.scsi_thin_provisioning_support_enabled\u0027:"},{"line_number":2353,"context_line":"                    space_allocation})"},{"line_number":2354,"context_line":"        finally:"},{"line_number":2355,"context_line":"            self._lun_update_by_path(path, {\u0027enabled\u0027: True})"},{"line_number":2356,"context_line":""},{"line_number":2357,"context_line":"    def destroy_lun(self, path, force\u003dTrue):"},{"line_number":2358,"context_line":"        \"\"\"Destroys the LUN at the path.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"8a5a7bd5_6ef625b8","line":2355,"in_reply_to":"6025a200_4033e07f","updated":"2026-11-05 08:19:50.000000000","message":"Done in PS4. Dropped the offline/online cycle on REST; it is a single PATCH now.","commit_id":"74beeda489936b9495984bdee1f0fba8814b3dd4"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"e8333a459874da828598a45612e8c9210fc55663","unresolved":true,"context_lines":[{"line_number":2258,"context_line":"                LOG.error(\u0027Failed to set space-allocation on cloned \u0027"},{"line_number":2259,"context_line":"                          \u0027LUN %s; destroying the clone.\u0027, path)"},{"line_number":2260,"context_line":"                try:"},{"line_number":2261,"context_line":"                    self.destroy_lun(path)"},{"line_number":2262,"context_line":"                except Exception:"},{"line_number":2263,"context_line":"                    LOG.warning(\u0027Failed to destroy LUN %s after a \u0027"},{"line_number":2264,"context_line":"                                \u0027space-allocation failure. It may need \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"6fe997d8_1af3b9a8","line":2261,"range":{"start_line":2261,"start_character":25,"end_line":2261,"end_character":36},"updated":"2026-11-06 15:16:04.000000000","message":"If ONTAP fails to return the lun by path, the destroy lun by path will end up in false positive. Retry for not found scenario needs to be done in this case before destroying.","commit_id":"8211c21f0fe75c5280cf63faae836694004f3cab"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"655458dd60e6dcbb5b4f71a277625489bfe4253c","unresolved":false,"context_lines":[{"line_number":2258,"context_line":"        except Exception:"},{"line_number":2259,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":2260,"context_line":"                path \u003d \u0027/vol/%s/%s\u0027 % (volume, new_name)"},{"line_number":2261,"context_line":"                LOG.error(\u0027Failed to set space-allocation on cloned \u0027"},{"line_number":2262,"context_line":"                          \u0027LUN %s; destroying the clone.\u0027, path)"},{"line_number":2263,"context_line":"                try:"},{"line_number":2264,"context_line":"                    self.destroy_lun(path)"}],"source_content_type":"text/x-python","patch_set":5,"id":"57509b1c_d79f9f9c","line":2261,"in_reply_to":"6fe997d8_1af3b9a8","updated":"2026-11-08 06:12:40.000000000","message":"Agreed. Discovery now retries and raises LunDiscoveryError without deleting the LUN. PATCH reuses the discovered UUID. Rollback after a config failure still deletes by path, which I\u0027ve left as is.","commit_id":"02fbe7c49214e564161fff9c69784781d5141062"}]}
