)]}'
{"/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":"1f9cecf2ef353be8b621b4dd2c750b02b4102009","unresolved":true,"context_lines":[{"line_number":9,"context_line":"With delete_retention_hours, NetApp backend deployment can decide how"},{"line_number":10,"context_line":"long shares/volumes will remain in recovery queue. But this is global"},{"line_number":11,"context_line":"config option and for debugging the value is kept close to higher limit."},{"line_number":12,"context_line":"However, sometime large number of shares created and deleted within"},{"line_number":13,"context_line":"short span of time and if such shares goes to recovery queue, the volume"},{"line_number":14,"context_line":"creation limit hits. So these volumes dont need to stay in recovery"},{"line_number":15,"context_line":"queue at all i.e. they can be force deleted."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Added config option \u0027netapp_force_delete_time\u0027 which can be configured"},{"line_number":18,"context_line":"to non-zero value to specify hours. If share alive time is less than"},{"line_number":19,"context_line":"configured value, share will be force deleted. Config value 0 signify"},{"line_number":20,"context_line":"shares will always go in recovery queue."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Icb02c880c305ad380b9dc9c0f96747640f396b51"},{"line_number":23,"context_line":"Co-authored-by: Maurice Escher \u003cmaurice.escher@sap.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3ab402e4_cf38c954","line":20,"range":{"start_line":12,"start_character":0,"end_line":20,"end_character":40},"updated":"2026-03-12 16:08:22.000000000","message":"The reason for bringing this change up is to recover the volumes deleted in short span of time, but we are expecting the configuration to be set in hours. I feel thats contradicting and we should allow it to be set in minutes? \n\nIf its a cloud deployment and someone is trying to test the features by creating hundreds of volumes and would like them to be forced delete and short lived in the recovery queue, we can help with such scenarios as well.","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"39d89c3de122900696f6392b5d4075da7a0ec635","unresolved":false,"context_lines":[{"line_number":9,"context_line":"With delete_retention_hours, NetApp backend deployment can decide how"},{"line_number":10,"context_line":"long shares/volumes will remain in recovery queue. But this is global"},{"line_number":11,"context_line":"config option and for debugging the value is kept close to higher limit."},{"line_number":12,"context_line":"However, sometime large number of shares created and deleted within"},{"line_number":13,"context_line":"short span of time and if such shares goes to recovery queue, the volume"},{"line_number":14,"context_line":"creation limit hits. So these volumes dont need to stay in recovery"},{"line_number":15,"context_line":"queue at all i.e. they can be force deleted."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Added config option \u0027netapp_force_delete_time\u0027 which can be configured"},{"line_number":18,"context_line":"to non-zero value to specify hours. If share alive time is less than"},{"line_number":19,"context_line":"configured value, share will be force deleted. Config value 0 signify"},{"line_number":20,"context_line":"shares will always go in recovery queue."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Icb02c880c305ad380b9dc9c0f96747640f396b51"},{"line_number":23,"context_line":"Co-authored-by: Maurice Escher \u003cmaurice.escher@sap.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"b288fabd_a116a12d","line":20,"range":{"start_line":12,"start_character":0,"end_line":20,"end_character":40},"in_reply_to":"3ab402e4_cf38c954","updated":"2026-03-16 14:01:50.000000000","message":"ok, I changed to minutes.","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"c2c3ce406518e26f2862d8f54a48c9121cb690df","unresolved":true,"context_lines":[{"line_number":19,"context_line":"configured value, share will be force deleted. Config value 0 signify"},{"line_number":20,"context_line":"shares will always go in recovery queue."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Icb02c880c305ad380b9dc9c0f96747640f396b51"},{"line_number":23,"context_line":"Co-authored-by: Maurice Escher \u003cmaurice.escher@sap.com\u003e"},{"line_number":24,"context_line":"Signed-off-by: Kiran Pawar \u003ckinpaa@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"e1dba473_3917b4b6","line":22,"updated":"2026-03-12 16:06:21.000000000","message":"Closes-bug: #2143047","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"39d89c3de122900696f6392b5d4075da7a0ec635","unresolved":false,"context_lines":[{"line_number":19,"context_line":"configured value, share will be force deleted. Config value 0 signify"},{"line_number":20,"context_line":"shares will always go in recovery queue."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Icb02c880c305ad380b9dc9c0f96747640f396b51"},{"line_number":23,"context_line":"Co-authored-by: Maurice Escher \u003cmaurice.escher@sap.com\u003e"},{"line_number":24,"context_line":"Signed-off-by: Kiran Pawar \u003ckinpaa@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"cbc83a09_576b8fbe","line":22,"in_reply_to":"e1dba473_3917b4b6","updated":"2026-03-16 14:01:50.000000000","message":"Done","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"}],"/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":"1f9cecf2ef353be8b621b4dd2c750b02b4102009","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6566fca5_95ec3230","updated":"2026-03-12 16:08:22.000000000","message":"Please look at the comments.","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"306a8d2584d0e78c7063b2ca9f25acc52640744e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"bd49ce0d_1de1b7ab","updated":"2026-05-05 06:30:34.000000000","message":"Run-NetApp CI","commit_id":"4fe7d9875a07817e36685c141d085cc389c7ba71"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"0aed1b937c5170da86cf04820f7b1c2f3bf230a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f1db6b51_46c3b103","updated":"2026-05-26 14:13:54.000000000","message":"Need to add UT for a method introduced. Otherwise code looks fine to me.","commit_id":"4462683f689ce6e7655a86f44473befeec0bb33a"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"0755271529128355040b6518faebfe453dc7c3bc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"7864a973_2d03699b","updated":"2026-05-27 07:26:14.000000000","message":"minor remarks inline","commit_id":"9702f9b1324fcd567e712c2ea194ac4a3ce74df5"}],"manila/share/drivers/netapp/dataontap/client/client_cmode.py":[{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"6058789517924a0c6a25b2f66f62af9ab195db2f","unresolved":true,"context_lines":[{"line_number":116,"context_line":"        self.features.add_feature(\u0027UNIFIED_AGGR\u0027, supported\u003dontap_9_10_1)"},{"line_number":117,"context_line":"        self.features.add_feature(\u0027DELETE_RETENTION_HOURS\u0027,"},{"line_number":118,"context_line":"                                  supported\u003dontap_9_11_1)"},{"line_number":119,"context_line":"        self.features.add_feature(\u0027FORCE_DELETE\u0027, supported\u003dontap_9_12)"},{"line_number":120,"context_line":"        self.features.add_feature(\u0027AES_ENCRYPTION_TYPES\u0027,"},{"line_number":121,"context_line":"                                  supported\u003dontap_9_12_1)"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"31411a97_6e012563","line":119,"range":{"start_line":119,"start_character":8,"end_line":119,"end_character":71},"updated":"2026-03-09 10:11:43.000000000","message":"more a question to NetApp folks: 9.12 is already out of full support - do you think it makes sense to implement support for older releases that may be only on limited support or self-service support?\n\nThis influences, wether the else-condition of force_delete_volume() with the dangerous system-cli command should be added or not.","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"1f9cecf2ef353be8b621b4dd2c750b02b4102009","unresolved":true,"context_lines":[{"line_number":116,"context_line":"        self.features.add_feature(\u0027UNIFIED_AGGR\u0027, supported\u003dontap_9_10_1)"},{"line_number":117,"context_line":"        self.features.add_feature(\u0027DELETE_RETENTION_HOURS\u0027,"},{"line_number":118,"context_line":"                                  supported\u003dontap_9_11_1)"},{"line_number":119,"context_line":"        self.features.add_feature(\u0027FORCE_DELETE\u0027, supported\u003dontap_9_12)"},{"line_number":120,"context_line":"        self.features.add_feature(\u0027AES_ENCRYPTION_TYPES\u0027,"},{"line_number":121,"context_line":"                                  supported\u003dontap_9_12_1)"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"e5bcbb24_5b60bd7a","line":119,"range":{"start_line":119,"start_character":8,"end_line":119,"end_character":71},"in_reply_to":"31411a97_6e012563","updated":"2026-03-12 16:08:22.000000000","message":"Most of our customer base is on ONTAP 9.14 and onwards. I can get this information from the PM team to see if we can limit this as a feature that works for \u003e9.15 customers which would make sense as we do not want customers to linger on older releases.","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"4b9af424c869a6fbceac6d424108e53ac807ca8a","unresolved":true,"context_lines":[{"line_number":116,"context_line":"        self.features.add_feature(\u0027UNIFIED_AGGR\u0027, supported\u003dontap_9_10_1)"},{"line_number":117,"context_line":"        self.features.add_feature(\u0027DELETE_RETENTION_HOURS\u0027,"},{"line_number":118,"context_line":"                                  supported\u003dontap_9_11_1)"},{"line_number":119,"context_line":"        self.features.add_feature(\u0027FORCE_DELETE\u0027, supported\u003dontap_9_12)"},{"line_number":120,"context_line":"        self.features.add_feature(\u0027AES_ENCRYPTION_TYPES\u0027,"},{"line_number":121,"context_line":"                                  supported\u003dontap_9_12_1)"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"a8b4e6d8_4ef627be","line":119,"range":{"start_line":119,"start_character":8,"end_line":119,"end_character":71},"in_reply_to":"7db25966_d5703f99","updated":"2026-03-17 09:45:03.000000000","message":"I checked with our PM, and found that we do not need to support older versions of ONTAP for new features. We can do it as \u003e 9.15.1 or later versions.","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"29458cb696ebf0da974db3b7dafbb958f78874ce","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.features.add_feature(\u0027UNIFIED_AGGR\u0027, supported\u003dontap_9_10_1)"},{"line_number":117,"context_line":"        self.features.add_feature(\u0027DELETE_RETENTION_HOURS\u0027,"},{"line_number":118,"context_line":"                                  supported\u003dontap_9_11_1)"},{"line_number":119,"context_line":"        self.features.add_feature(\u0027FORCE_DELETE\u0027, supported\u003dontap_9_12)"},{"line_number":120,"context_line":"        self.features.add_feature(\u0027AES_ENCRYPTION_TYPES\u0027,"},{"line_number":121,"context_line":"                                  supported\u003dontap_9_12_1)"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f73d5f8f_c7cbe06f","line":119,"range":{"start_line":119,"start_character":8,"end_line":119,"end_character":71},"in_reply_to":"a8b4e6d8_4ef627be","updated":"2026-03-17 12:07:24.000000000","message":"Thanks for confirming, removing system-cli i.e. else part.","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"39d89c3de122900696f6392b5d4075da7a0ec635","unresolved":true,"context_lines":[{"line_number":116,"context_line":"        self.features.add_feature(\u0027UNIFIED_AGGR\u0027, supported\u003dontap_9_10_1)"},{"line_number":117,"context_line":"        self.features.add_feature(\u0027DELETE_RETENTION_HOURS\u0027,"},{"line_number":118,"context_line":"                                  supported\u003dontap_9_11_1)"},{"line_number":119,"context_line":"        self.features.add_feature(\u0027FORCE_DELETE\u0027, supported\u003dontap_9_12)"},{"line_number":120,"context_line":"        self.features.add_feature(\u0027AES_ENCRYPTION_TYPES\u0027,"},{"line_number":121,"context_line":"                                  supported\u003dontap_9_12_1)"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7db25966_d5703f99","line":119,"range":{"start_line":119,"start_character":8,"end_line":119,"end_character":71},"in_reply_to":"e5bcbb24_5b60bd7a","updated":"2026-03-16 14:01:50.000000000","message":"can you share the information ? I will update next patchset accordingly,","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"0755271529128355040b6518faebfe453dc7c3bc","unresolved":true,"context_lines":[{"line_number":3971,"context_line":"        if force_delete:"},{"line_number":3972,"context_line":"            try:"},{"line_number":3973,"context_line":"                self.force_delete_volume(volume_name)"},{"line_number":3974,"context_line":"            except exception.NetAppException:"},{"line_number":3975,"context_line":"                self.soft_delete_volume(volume_name)"},{"line_number":3976,"context_line":"        else:"},{"line_number":3977,"context_line":"            self.soft_delete_volume(volume_name)"}],"source_content_type":"text/x-python","patch_set":9,"id":"380f7f03_daaebf78","line":3974,"updated":"2026-05-27 07:26:14.000000000","message":"can we please log the error why force_delete is not working and we fallback to normal soft_delete?","commit_id":"9702f9b1324fcd567e712c2ea194ac4a3ce74df5"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"49a8a7e293a399ad4498b9bdb1b7c1b95dcf3654","unresolved":false,"context_lines":[{"line_number":3971,"context_line":"        if force_delete:"},{"line_number":3972,"context_line":"            try:"},{"line_number":3973,"context_line":"                self.force_delete_volume(volume_name)"},{"line_number":3974,"context_line":"            except exception.NetAppException:"},{"line_number":3975,"context_line":"                self.soft_delete_volume(volume_name)"},{"line_number":3976,"context_line":"        else:"},{"line_number":3977,"context_line":"            self.soft_delete_volume(volume_name)"}],"source_content_type":"text/x-python","patch_set":9,"id":"504726f0_4cb04328","line":3974,"in_reply_to":"380f7f03_daaebf78","updated":"2026-05-27 09:36:56.000000000","message":"Done","commit_id":"9702f9b1324fcd567e712c2ea194ac4a3ce74df5"}],"manila/share/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"0755271529128355040b6518faebfe453dc7c3bc","unresolved":true,"context_lines":[{"line_number":1898,"context_line":"        if force_delete:"},{"line_number":1899,"context_line":"            try:"},{"line_number":1900,"context_line":"                self.force_delete_volume(volume_name)"},{"line_number":1901,"context_line":"            except exception.NetAppException:"},{"line_number":1902,"context_line":"                self.soft_delete_volume(volume_name)"},{"line_number":1903,"context_line":"        else:"},{"line_number":1904,"context_line":"            return self.soft_delete_volume("}],"source_content_type":"text/x-python","patch_set":9,"id":"62bfb4e5_1f644f0e","line":1901,"updated":"2026-05-27 07:26:14.000000000","message":"same here, please add logging for the fact and the reason why we are not force deleting","commit_id":"9702f9b1324fcd567e712c2ea194ac4a3ce74df5"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"49a8a7e293a399ad4498b9bdb1b7c1b95dcf3654","unresolved":false,"context_lines":[{"line_number":1898,"context_line":"        if force_delete:"},{"line_number":1899,"context_line":"            try:"},{"line_number":1900,"context_line":"                self.force_delete_volume(volume_name)"},{"line_number":1901,"context_line":"            except exception.NetAppException:"},{"line_number":1902,"context_line":"                self.soft_delete_volume(volume_name)"},{"line_number":1903,"context_line":"        else:"},{"line_number":1904,"context_line":"            return self.soft_delete_volume("}],"source_content_type":"text/x-python","patch_set":9,"id":"d88887b3_30c4e275","line":1901,"in_reply_to":"62bfb4e5_1f644f0e","updated":"2026-05-27 09:36:56.000000000","message":"Done","commit_id":"9702f9b1324fcd567e712c2ea194ac4a3ce74df5"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_base.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":"1f9cecf2ef353be8b621b4dd2c750b02b4102009","unresolved":true,"context_lines":[{"line_number":2153,"context_line":"        # Share doesn\u0027t need to exist to be assigned to a fpolicy scope"},{"line_number":2154,"context_line":"        self._delete_fpolicy_for_share(share, vserver, vserver_client)"},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"        duration_sec \u003d share.get(\u0027duration_seconds\u0027, 24 * 60 * 60)  # 24 Hrs"},{"line_number":2157,"context_line":"        delete_sec \u003d self.configuration.netapp_force_delete_time * 60 * 60"},{"line_number":2158,"context_line":"        force_delete \u003d False"},{"line_number":2159,"context_line":"        if delete_sec \u003e 0 and duration_sec \u003c delete_sec:"},{"line_number":2160,"context_line":"            force_delete \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"fde47ea1_2029ae9f","line":2157,"range":{"start_line":2156,"start_character":5,"end_line":2157,"end_character":74},"updated":"2026-03-12 16:08:22.000000000","message":"Doesnt this make the implementation equivalent to delete_retention_hours config? If I can configure delete_retention_hours as default, is the only differentiation I get with the new configuration is that I can set it at backend level?","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"29458cb696ebf0da974db3b7dafbb958f78874ce","unresolved":false,"context_lines":[{"line_number":2153,"context_line":"        # Share doesn\u0027t need to exist to be assigned to a fpolicy scope"},{"line_number":2154,"context_line":"        self._delete_fpolicy_for_share(share, vserver, vserver_client)"},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"        duration_sec \u003d share.get(\u0027duration_seconds\u0027, 24 * 60 * 60)  # 24 Hrs"},{"line_number":2157,"context_line":"        delete_sec \u003d self.configuration.netapp_force_delete_time * 60 * 60"},{"line_number":2158,"context_line":"        force_delete \u003d False"},{"line_number":2159,"context_line":"        if delete_sec \u003e 0 and duration_sec \u003c delete_sec:"},{"line_number":2160,"context_line":"            force_delete \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"ee52ac75_b4a60695","line":2157,"range":{"start_line":2156,"start_character":5,"end_line":2157,"end_character":74},"in_reply_to":"0e195adf_895215d6","updated":"2026-03-17 12:07:24.000000000","message":"Done","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"3cbc671ea6f0b135cb4e4a7f0c0a069567934042","unresolved":true,"context_lines":[{"line_number":2153,"context_line":"        # Share doesn\u0027t need to exist to be assigned to a fpolicy scope"},{"line_number":2154,"context_line":"        self._delete_fpolicy_for_share(share, vserver, vserver_client)"},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"        duration_sec \u003d share.get(\u0027duration_seconds\u0027, 24 * 60 * 60)  # 24 Hrs"},{"line_number":2157,"context_line":"        delete_sec \u003d self.configuration.netapp_force_delete_time * 60 * 60"},{"line_number":2158,"context_line":"        force_delete \u003d False"},{"line_number":2159,"context_line":"        if delete_sec \u003e 0 and duration_sec \u003c delete_sec:"},{"line_number":2160,"context_line":"            force_delete \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"0e195adf_895215d6","line":2157,"range":{"start_line":2156,"start_character":5,"end_line":2157,"end_character":74},"in_reply_to":"884ecdad_3bd1d705","updated":"2026-03-17 09:41:48.000000000","message":"depends on what values you have configured.\ndelete_rentention_hours \u003d 12 and netapp_force_delete_time_minutes \u003d 120, the share which are live less than 120 minutes will skip recovery queue and force deleted.\n\n1. shares which are deleted less than 120 minutes will stay on backend for same time duration they are deleted in manila. so actual backend time \u003d manila time\n\n2. shares which are deleted more than 120 minutes will stay additional retention_hours on backed. so actual backend time \u003d manila time + retention hours.","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"bceef56c6d9f0b40ebe25d9ed2b1f29e875430ea","unresolved":true,"context_lines":[{"line_number":2153,"context_line":"        # Share doesn\u0027t need to exist to be assigned to a fpolicy scope"},{"line_number":2154,"context_line":"        self._delete_fpolicy_for_share(share, vserver, vserver_client)"},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"        duration_sec \u003d share.get(\u0027duration_seconds\u0027, 24 * 60 * 60)  # 24 Hrs"},{"line_number":2157,"context_line":"        delete_sec \u003d self.configuration.netapp_force_delete_time * 60 * 60"},{"line_number":2158,"context_line":"        force_delete \u003d False"},{"line_number":2159,"context_line":"        if delete_sec \u003e 0 and duration_sec \u003c delete_sec:"},{"line_number":2160,"context_line":"            force_delete \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"884ecdad_3bd1d705","line":2157,"range":{"start_line":2156,"start_character":5,"end_line":2157,"end_character":74},"in_reply_to":"996b33da_a0db00a7","updated":"2026-03-17 09:30:01.000000000","message":"What would happen if I have delete_retention_hours and netapp_force_delete both configured at the same time?","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"bdd7f5a388a0379f4a0e8d86091a55c40125c7e9","unresolved":false,"context_lines":[{"line_number":2153,"context_line":"        # Share doesn\u0027t need to exist to be assigned to a fpolicy scope"},{"line_number":2154,"context_line":"        self._delete_fpolicy_for_share(share, vserver, vserver_client)"},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"        duration_sec \u003d share.get(\u0027duration_seconds\u0027, 24 * 60 * 60)  # 24 Hrs"},{"line_number":2157,"context_line":"        delete_sec \u003d self.configuration.netapp_force_delete_time * 60 * 60"},{"line_number":2158,"context_line":"        force_delete \u003d False"},{"line_number":2159,"context_line":"        if delete_sec \u003e 0 and duration_sec \u003c delete_sec:"},{"line_number":2160,"context_line":"            force_delete \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"9dbf2303_58ef4a7e","line":2157,"range":{"start_line":2156,"start_character":5,"end_line":2157,"end_character":74},"in_reply_to":"ee52ac75_b4a60695","updated":"2026-03-17 12:30:02.000000000","message":"Okay. so I guess the behaviour is whichever comes first. Thanks for confirming.","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"39d89c3de122900696f6392b5d4075da7a0ec635","unresolved":true,"context_lines":[{"line_number":2153,"context_line":"        # Share doesn\u0027t need to exist to be assigned to a fpolicy scope"},{"line_number":2154,"context_line":"        self._delete_fpolicy_for_share(share, vserver, vserver_client)"},{"line_number":2155,"context_line":""},{"line_number":2156,"context_line":"        duration_sec \u003d share.get(\u0027duration_seconds\u0027, 24 * 60 * 60)  # 24 Hrs"},{"line_number":2157,"context_line":"        delete_sec \u003d self.configuration.netapp_force_delete_time * 60 * 60"},{"line_number":2158,"context_line":"        force_delete \u003d False"},{"line_number":2159,"context_line":"        if delete_sec \u003e 0 and duration_sec \u003c delete_sec:"},{"line_number":2160,"context_line":"            force_delete \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"996b33da_a0db00a7","line":2157,"range":{"start_line":2156,"start_character":5,"end_line":2157,"end_character":74},"in_reply_to":"fde47ea1_2029ae9f","updated":"2026-03-16 14:01:50.000000000","message":"delete_retention_hours is to decide window of retention. This is applicable to all shares. Force delete feature is to skip retention queue completely and only applicable to shares which are deleted within force_delete_time window.\n\ncan you rephrase your second question ?","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"}],"manila/share/drivers/netapp/options.py":[{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"6058789517924a0c6a25b2f66f62af9ab195db2f","unresolved":true,"context_lines":[{"line_number":171,"context_line":"    cfg.IntOpt(\u0027netapp_force_delete_time\u0027,"},{"line_number":172,"context_line":"               default\u003d0,"},{"line_number":173,"context_line":"               min\u003d0,"},{"line_number":174,"context_line":"               max\u003d12,"},{"line_number":175,"context_line":"               help\u003d\u0027Maximum time diff in hours to decide whether share will \u0027"},{"line_number":176,"context_line":"                    \u0027be deleted or force deleted. If time difference between \u0027"},{"line_number":177,"context_line":"                    \u0027share deletion time and creation time is less than \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"a9b49dcb_3ca5868e","line":174,"updated":"2026-03-09 10:11:43.000000000","message":"I would not set a max at all, since this is dynamic depending how the admin sets netapp_delete_retention_hours","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"39d89c3de122900696f6392b5d4075da7a0ec635","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    cfg.IntOpt(\u0027netapp_force_delete_time\u0027,"},{"line_number":172,"context_line":"               default\u003d0,"},{"line_number":173,"context_line":"               min\u003d0,"},{"line_number":174,"context_line":"               max\u003d12,"},{"line_number":175,"context_line":"               help\u003d\u0027Maximum time diff in hours to decide whether share will \u0027"},{"line_number":176,"context_line":"                    \u0027be deleted or force deleted. If time difference between \u0027"},{"line_number":177,"context_line":"                    \u0027share deletion time and creation time is less than \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"cf502272_98c9c051","line":174,"in_reply_to":"a9b49dcb_3ca5868e","updated":"2026-03-16 14:01:50.000000000","message":"sure, removed max. In case admin set force_delete_time more than rentention hours, it will be regularly deleted and we are good with it. In case admin set force_delete_time less than rentetion hours, it will be forced deleted.","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"}],"manila/share/manager.py":[{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"6058789517924a0c6a25b2f66f62af9ab195db2f","unresolved":true,"context_lines":[{"line_number":3739,"context_line":"        if scheduled_at and terminated_at:"},{"line_number":3740,"context_line":"            duration \u003d terminated_at - scheduled_at"},{"line_number":3741,"context_line":"            return duration.total_seconds()"},{"line_number":3742,"context_line":"        return 0"},{"line_number":3743,"context_line":""},{"line_number":3744,"context_line":"    @add_hooks"},{"line_number":3745,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":1,"id":"ab4e9d01_956fec7f","line":3742,"range":{"start_line":3742,"start_character":8,"end_line":3742,"end_character":16},"updated":"2026-03-09 10:11:43.000000000","message":"I think we should be more defensive - setting duration to 0 if scheduled_at or terminated_at are missing, would mean we would always force delete in such case (if force delete is enabled at all, of course).\nRather set it to something high as fallback, I can imagine setting it to a week or something?","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"1f9cecf2ef353be8b621b4dd2c750b02b4102009","unresolved":true,"context_lines":[{"line_number":3739,"context_line":"        if scheduled_at and terminated_at:"},{"line_number":3740,"context_line":"            duration \u003d terminated_at - scheduled_at"},{"line_number":3741,"context_line":"            return duration.total_seconds()"},{"line_number":3742,"context_line":"        return 0"},{"line_number":3743,"context_line":""},{"line_number":3744,"context_line":"    @add_hooks"},{"line_number":3745,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":1,"id":"d913bb62_ec820085","line":3742,"range":{"start_line":3742,"start_character":8,"end_line":3742,"end_character":16},"in_reply_to":"ab4e9d01_956fec7f","updated":"2026-03-12 16:08:22.000000000","message":"OR use the ONTAP default which is 12 hours? https://docs.netapp.com/us-en/ontap/volumes/protection-accidental-volume-deletion-concept.html","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"39d89c3de122900696f6392b5d4075da7a0ec635","unresolved":false,"context_lines":[{"line_number":3739,"context_line":"        if scheduled_at and terminated_at:"},{"line_number":3740,"context_line":"            duration \u003d terminated_at - scheduled_at"},{"line_number":3741,"context_line":"            return duration.total_seconds()"},{"line_number":3742,"context_line":"        return 0"},{"line_number":3743,"context_line":""},{"line_number":3744,"context_line":"    @add_hooks"},{"line_number":3745,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":1,"id":"da7cf5a9_740a4edc","line":3742,"range":{"start_line":3742,"start_character":8,"end_line":3742,"end_character":16},"in_reply_to":"d913bb62_ec820085","updated":"2026-03-16 14:01:50.000000000","message":"Since we are setting in common code, I think we should set to larger possible value and so week is fine.","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"bdd7f5a388a0379f4a0e8d86091a55c40125c7e9","unresolved":false,"context_lines":[{"line_number":3739,"context_line":"        if scheduled_at and terminated_at:"},{"line_number":3740,"context_line":"            duration \u003d terminated_at - scheduled_at"},{"line_number":3741,"context_line":"            return duration.total_seconds()"},{"line_number":3742,"context_line":"        return 0"},{"line_number":3743,"context_line":""},{"line_number":3744,"context_line":"    @add_hooks"},{"line_number":3745,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":1,"id":"f74dbd6d_aed08dfa","line":3742,"range":{"start_line":3742,"start_character":8,"end_line":3742,"end_character":16},"in_reply_to":"da7cf5a9_740a4edc","updated":"2026-03-17 12:30:02.000000000","message":"Isnt a week too long for retention? Anyways, I will not block it for this since its configurable. But since storage and I believe most storage, would not want to keep retention of more than 24 hrs for ensuring space release, I would let either Carlos/Goutham comment on this part.","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6e5a9791acba75964855792c1973825198274b32","unresolved":true,"context_lines":[{"line_number":3739,"context_line":"        if scheduled_at and terminated_at:"},{"line_number":3740,"context_line":"            duration \u003d terminated_at - scheduled_at"},{"line_number":3741,"context_line":"            return duration.total_seconds()"},{"line_number":3742,"context_line":"        return 0"},{"line_number":3743,"context_line":""},{"line_number":3744,"context_line":"    @add_hooks"},{"line_number":3745,"context_line":"    @utils.require_driver_initialized"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa1595a_2893a498","line":3742,"range":{"start_line":3742,"start_character":8,"end_line":3742,"end_character":16},"in_reply_to":"f74dbd6d_aed08dfa","updated":"2026-03-17 14:03:08.000000000","message":"This value is just to make sure if terminated_at and scheduled_at are missing from share, it will be deleted in regular manner instead of force delete. Value can be anything, week is large enough to make sure it wont be force-deleted.\n\nAdding Goutham and Carlos in reviewers.","commit_id":"ea711df9392ac749dd3e6310a1f6776275348c11"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"0aed1b937c5170da86cf04820f7b1c2f3bf230a3","unresolved":true,"context_lines":[{"line_number":3737,"context_line":"        share_server \u003d self._get_share_server(context, share_instance)"},{"line_number":3738,"context_line":"        return (share, share_instance, share_server)"},{"line_number":3739,"context_line":""},{"line_number":3740,"context_line":"    def _get_duration_seconds_for_instances(self, share_instance):"},{"line_number":3741,"context_line":"        scheduled_at \u003d share_instance.get(\u0027scheduled_at\u0027)"},{"line_number":3742,"context_line":"        terminated_at \u003d share_instance.get(\u0027terminated_at\u0027)"},{"line_number":3743,"context_line":"        if scheduled_at and terminated_at:"}],"source_content_type":"text/x-python","patch_set":8,"id":"7dcbfa9f_cc42a9b4","line":3740,"updated":"2026-05-26 14:13:54.000000000","message":"I do not see UT coverage for this new method. Can we add that?","commit_id":"4462683f689ce6e7655a86f44473befeec0bb33a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"20d2ac8beeef3eb41887452fec8ffeeb7a3fb53a","unresolved":false,"context_lines":[{"line_number":3737,"context_line":"        share_server \u003d self._get_share_server(context, share_instance)"},{"line_number":3738,"context_line":"        return (share, share_instance, share_server)"},{"line_number":3739,"context_line":""},{"line_number":3740,"context_line":"    def _get_duration_seconds_for_instances(self, share_instance):"},{"line_number":3741,"context_line":"        scheduled_at \u003d share_instance.get(\u0027scheduled_at\u0027)"},{"line_number":3742,"context_line":"        terminated_at \u003d share_instance.get(\u0027terminated_at\u0027)"},{"line_number":3743,"context_line":"        if scheduled_at and terminated_at:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a80dffe_e99d86b6","line":3740,"in_reply_to":"7dcbfa9f_cc42a9b4","updated":"2026-05-26 15:45:05.000000000","message":"Done","commit_id":"4462683f689ce6e7655a86f44473befeec0bb33a"}]}
