From b78c23e858b348b79477d6f5f326dce71a28ea9a Mon Sep 17 00:00:00 2001 From: Datta Date: Wed, 18 Dec 2024 21:51:21 +0530 Subject: [PATCH 1/3] Fixing volume module defect --- plugins/modules/volume.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/plugins/modules/volume.py b/plugins/modules/volume.py index 7910d1b..1914223 100644 --- a/plugins/modules/volume.py +++ b/plugins/modules/volume.py @@ -1658,10 +1658,15 @@ def get_diff_after(self, volume_params, volume_details, fetched_params, before_d "source_timestamp": None }, "protection_policy": { - "id": "", + "id": fetched_params['protection_policy_id'], "name": volume_params['protection_policy'] }, - "protection_policy_id": "", + "protection_policy_id": fetched_params['protection_policy_id'], + "performance_policy": { + "id": fetched_params['performance_policy'], + "name": volume_params['performance_policy'] + }, + "performance_policy_id": fetched_params['performance_policy'], "size": fetched_params['size'], "snapshots": [], "state": "Ready", @@ -1671,6 +1676,18 @@ def get_diff_after(self, volume_params, volume_details, fetched_params, before_d "volume_groups": [], "wwn": "naa.68ccf09800f637b92d1c2289688f128d" } + if fetched_params['host']: + hlu_dict = { + 'host_id': fetched_params['host'], + 'hostgroup_id': None + } + diff_dict['hlu_details'].append(hlu_dict) + if fetched_params['hostgroup_details']: + hlu_dict = { + 'host_id': None, + 'hostgroup_id': fetched_params['hostgroup_details']['id'] + } + diff_dict['hlu_details'].append(hlu_dict) else: diff_dict, before_dict = self.modify_diff(volume_params, volume_details, fetched_params, before_dict) @@ -1834,9 +1851,9 @@ def get_powerstore_volume_parameters(): "Virtualization_Virtual_Servers_VSI", "Virtualization_Containers_Kubernetes", "Virtualization_Virtual_Desktops_VDI", "Other"]), - app_type_other=dict(), - appliance_name=dict(), - appliance_id=dict() + app_type_other=dict(type='str'), + appliance_name=dict(type='str'), + appliance_id=dict(type='str') ) From c9e259978fb581f7fdc0e580f1b032d735b108f4 Mon Sep 17 00:00:00 2001 From: Datta Date: Thu, 19 Dec 2024 11:25:18 +0530 Subject: [PATCH 2/3] Addressing review comments for volume --- plugins/modules/volume.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/plugins/modules/volume.py b/plugins/modules/volume.py index 1914223..417a115 100644 --- a/plugins/modules/volume.py +++ b/plugins/modules/volume.py @@ -1658,15 +1658,15 @@ def get_diff_after(self, volume_params, volume_details, fetched_params, before_d "source_timestamp": None }, "protection_policy": { - "id": fetched_params['protection_policy_id'], - "name": volume_params['protection_policy'] + "id": fetched_params.get('protection_policy_id'), + "name": volume_params.get('protection_policy') }, - "protection_policy_id": fetched_params['protection_policy_id'], + "protection_policy_id": fetched_params.get('protection_policy_id'), "performance_policy": { - "id": fetched_params['performance_policy'], - "name": volume_params['performance_policy'] + "id": fetched_params.get('performance_policy'), + "name": volume_params.get('performance_policy') }, - "performance_policy_id": fetched_params['performance_policy'], + "performance_policy_id": fetched_params.get('performance_policy'), "size": fetched_params['size'], "snapshots": [], "state": "Ready", @@ -1676,18 +1676,18 @@ def get_diff_after(self, volume_params, volume_details, fetched_params, before_d "volume_groups": [], "wwn": "naa.68ccf09800f637b92d1c2289688f128d" } - if fetched_params['host']: + if fetched_params.get('host'): hlu_dict = { - 'host_id': fetched_params['host'], + 'host_id': fetched_params.get('host'), 'hostgroup_id': None } - diff_dict['hlu_details'].append(hlu_dict) + diff_dict.get('hlu_details').append(hlu_dict) if fetched_params['hostgroup_details']: hlu_dict = { 'host_id': None, - 'hostgroup_id': fetched_params['hostgroup_details']['id'] + 'hostgroup_id': fetched_params.get('hostgroup_details')['id'] } - diff_dict['hlu_details'].append(hlu_dict) + diff_dict.get('hlu_details').append(hlu_dict) else: diff_dict, before_dict = self.modify_diff(volume_params, volume_details, fetched_params, before_dict) From 68210211ea6d32151bd07b8d6f51be323445514f Mon Sep 17 00:00:00 2001 From: Datta Date: Fri, 20 Dec 2024 13:40:59 +0530 Subject: [PATCH 3/3] Fixing response in check mode for volume module --- plugins/modules/volume.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/plugins/modules/volume.py b/plugins/modules/volume.py index 417a115..5efb5f0 100644 --- a/plugins/modules/volume.py +++ b/plugins/modules/volume.py @@ -1858,7 +1858,7 @@ def get_powerstore_volume_parameters(): class VolumeExitHandler: - def handle(self, volume_obj, volume_params, volume_id, changed): + def handle(self, volume_obj, volume_params, volume_id, volume_details, changed): volume_obj.result["changed"] = changed if volume_params['state'] == 'present': if volume_id is not None: @@ -1871,6 +1871,11 @@ def handle(self, volume_obj, volume_params, volume_id, changed): volume_obj.result["volume_details"]['id'], all_snapshots=True)[1]) volume_obj.result["volume_details"].update( appliance_name=volume_obj.update_volume_details(volume_obj.result["volume_details"])) + if volume_params['state'] == 'absent': + if volume_obj.module.check_mode: + volume_obj.result['volume_details'] = volume_details + else: + volume_obj.result['volume_details'] = dict() volume_obj.module.exit_json(**volume_obj.result) @@ -1879,7 +1884,7 @@ def handle(self, volume_obj, volume_params, volume_details, volume_id, changed): if volume_params['state'] == 'absent' and volume_details: LOG.info('Deleting volume %s ', volume_details['name']) changed = volume_obj.delete_volume(volume=volume_details) or changed - VolumeExitHandler().handle(volume_obj, volume_params, volume_id, changed) + VolumeExitHandler().handle(volume_obj, volume_params, volume_id, volume_details, changed) class VolumeEndMetroHandler: @@ -1921,7 +1926,8 @@ def handle(self, volume_obj, volume_params, volume_details, fetched_params, volu } volume_obj.result["is_volume_restored"] = False changed = volume_obj.restore_volume(volume=volume_details, restore_details=restore_details) - volume_obj.result["is_volume_restored"] = changed + if not volume_obj.module.check_mode: + volume_obj.result["is_volume_restored"] = changed VolumeConfigureMetroHandler().handle(volume_obj, volume_params, volume_details, fetched_params, volume_id, changed) @@ -1936,7 +1942,8 @@ def handle(self, volume_obj, volume_params, volume_details, fetched_params, volu } volume_obj.result["is_volume_refreshed"] = False changed = volume_obj.refresh_volume(volume=volume_details, refresh_details=refresh_details) - volume_obj.result["is_volume_refreshed"] = changed + if not volume_obj.module.check_mode: + volume_obj.result["is_volume_refreshed"] = changed VolumeRestoreHandler().handle(volume_obj, volume_params, volume_details, fetched_params, volume_id, changed) @@ -1945,7 +1952,8 @@ def handle(self, volume_obj, volume_params, volume_details, fetched_params, volu if volume_params['state'] == 'present' and volume_params['clone_volume'] is not None: volume_obj.result["is_volume_cloned"] = False changed = volume_obj.clone_volume(vol_id=volume_id, clone_details=volume_params['clone_volume']) - volume_obj.result["is_volume_cloned"] = changed + if not volume_obj.module.check_mode: + volume_obj.result["is_volume_cloned"] = changed VolumeRefreshHandler().handle(volume_obj, volume_params, volume_details, fetched_params, volume_id, changed)