From 35fe2bdf0e9cf8c493a29f9306f3cb5b33930826 Mon Sep 17 00:00:00 2001 From: Dmitriy Smirnov Date: Thu, 23 May 2024 16:41:45 +0300 Subject: [PATCH] Fix disk deleting logic for permanently deleting from recycle bin --- library/decort_disk.py | 3 +++ module_utils/decort_utils.py | 12 ++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/library/decort_disk.py b/library/decort_disk.py index 0a1c838..f779b71 100644 --- a/library/decort_disk.py +++ b/library/decort_disk.py @@ -520,6 +520,9 @@ def main(): elif decon.disk_info['status'] == "DELETED": if amodule.params['state'] in ('present'): decon.action(restore=True) + elif (amodule.params['state'] == 'absent' and + amodule.params['permanently']): + decon.delete() else: decon.nop() else: diff --git a/module_utils/decort_utils.py b/module_utils/decort_utils.py index ccb6261..bd0cfe9 100644 --- a/module_utils/decort_utils.py +++ b/module_utils/decort_utils.py @@ -2859,10 +2859,18 @@ class DecortController(object): return 0, None elif name: if account_id: - api_params = dict(accountId=account_id,name=name) + api_params = { + 'accountId': account_id, + 'name': name, + 'show_all': True + } api_resp = self.decort_api_call(requests.post, "/restmachine/cloudapi/disks/search", api_params) + disks_list = api_resp.json() + # Filtering disks by status + excluded_statuses = ('PURGED', 'DESTROYED') + filter_f = lambda x: x.get('status') not in excluded_statuses + disks_list = [d for d in disks_list if filter_f(d)] # the above call may return more than one matching disk - disks_list = json.loads(api_resp.content.decode('utf8')) if len(disks_list) == 0: return 0, None elif len(disks_list) > 1: