Skip to content

Commit dd9c88c

Browse files
Fixing #2003 and #2004 issues
1 parent e7ffe6d commit dd9c88c

File tree

3 files changed

+47
-13
lines changed

3 files changed

+47
-13
lines changed

plugins/module_utils/data_set.py

+15-11
Original file line numberDiff line numberDiff line change
@@ -2414,7 +2414,7 @@ def ensure_present(self, replace):
24142414
else:
24152415
if not replace:
24162416
return changed
2417-
changed = self.ensure_absent()
2417+
changed = self.ensure_absent(True)
24182418
gdg = gdgs.create(**arguments)
24192419
if isinstance(gdg, gdgs.GenerationDataGroupView):
24202420
changed = True
@@ -2434,17 +2434,21 @@ def ensure_absent(self, force):
24342434
int
24352435
Indicates if changes were made.
24362436
"""
2437-
# Try to delete
2438-
rc = datasets.delete(self.name)
2439-
if rc > 0:
2440-
if force:
2441-
if isinstance(self.gdg, gdgs.GenerationDataGroupView):
2442-
self.gdg.delete()
2437+
# Check whether GDG exists or not
2438+
if gdgs.exists(name=self.name):
2439+
# Try to delete
2440+
rc = datasets.delete(self.name)
2441+
if rc > 0:
2442+
if force:
2443+
if isinstance(self.gdg, gdgs.GenerationDataGroupView):
2444+
self.gdg.delete()
2445+
else:
2446+
gdg_view = gdgs.GenerationDataGroupView(name=self.name)
2447+
gdg_view.delete()
24432448
else:
2444-
gdg_view = gdgs.GenerationDataGroupView(name=self.name)
2445-
gdg_view.delete()
2446-
else:
2447-
raise DatasetDeleteError(self.raw_name, rc)
2449+
raise DatasetDeleteError(self.raw_name, rc)
2450+
else:
2451+
return False
24482452
return True
24492453

24502454
def clear(self):

tests/functional/modules/test_zos_data_set_func.py

+30
Original file line numberDiff line numberDiff line change
@@ -1103,3 +1103,33 @@ def test_create_member_special_chars(ansible_zos_module):
11031103
finally:
11041104
hosts.all.zos_data_set(name=data_set_name, state="absent")
11051105

1106+
1107+
def test_gdg_create_and_replace(ansible_zos_module):
1108+
try:
1109+
hosts = ansible_zos_module
1110+
data_set_name = get_tmp_ds_name()
1111+
results = hosts.all.zos_data_set(name=data_set_name, empty=False, force=True, record_format="u",
1112+
record_length=0, replace=True, space_primary=5, space_secondary=3,
1113+
space_type="cyl", state="present", type="gdg", limit=3)
1114+
for result in results.contacted.values():
1115+
assert result.get("changed") is True
1116+
assert result.get("module_stderr") is None
1117+
results = hosts.all.zos_data_set(name=data_set_name, empty=False, force=True, record_format="u",
1118+
record_length=0, replace=True, space_primary=5, space_secondary=3,
1119+
space_type="cyl", state="present", type="gdg", limit=3)
1120+
for result in results.contacted.values():
1121+
assert result.get("changed") is True
1122+
assert result.get("module_stderr") is None
1123+
finally:
1124+
hosts.all.zos_data_set(name=data_set_name, state="absent", force=True, type="gdg")
1125+
1126+
1127+
def test_gdg_deletion_when_absent(ansible_zos_module):
1128+
hosts = ansible_zos_module
1129+
data_set_name = get_tmp_ds_name()
1130+
results = hosts.all.zos_data_set(name=data_set_name, force=False, record_format="fb", replace=False,
1131+
space_primary=5, space_secondary=3, space_type="m", state="absent", type="gdg")
1132+
for result in results.contacted.values():
1133+
assert result.get("changed") is False
1134+
assert result.get("module_stderr") is None
1135+
assert result.get("failed") is None

tests/functional/modules/test_zos_unarchive_func.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1164,8 +1164,8 @@ def test_gdg_unarchive(ansible_zos_module, dstype, format):
11641164

11651165
hosts.all.zos_data_set(
11661166
batch=[
1167-
{"name": f"{data_set_name}(-1)", "state": "absent", "type": "gdg"},
1168-
{"name": f"{data_set_name}(0)", "state": "absent", "type": "gdg"},
1167+
{"name": f"{data_set_name}(-1)", "state": "absent"},
1168+
{"name": f"{data_set_name}(0)", "state": "absent"},
11691169
]
11701170
)
11711171
unarchive_result = hosts.all.zos_unarchive(

0 commit comments

Comments
 (0)