Skip to content

Commit ea3e680

Browse files
[zos_backup_restore]Ensure backup name is populated when module runs successfully (#2040)
* showed backup_name in output * added assertion * added fragments * returned backup_name for funcn test_backup_of_data_set * added code to return backup_name in function test_backup_of_data_set_when_backup_dest_exists * added for function test_backup_and_restore_of_data_set * added for test_backup_and_restore_of_multiple_data_sets * added for test_backup_and_restore_of_multiple_data_sets_by_hlq() * added for test_backup_and_restore_exclude_from_pattern() * added for test_backup_gds * added for test_backup_into_gds() * added code in test_backup_into_gds * removed comments as it was written for etsting purposes * comments * added trivial and test_zos_backup_restore for added assertion * fragments fixed * added .yml * added minor changes and changed statements * typo error fixed * fixed lint * added bugfixes in zos_backup_restore * added code to populate backup_name if operation = restore * removed four lines of assertion * written before assert_module_did_not_fail(results) * mainatined same code in test_backup_and_restore_of_data_set * added asserion for restore and made few changes in test_backup_of_data_set * added backup assertion for all condition * removed redundant code
1 parent 0c09aaa commit ea3e680

File tree

3 files changed

+81
-2
lines changed

3 files changed

+81
-2
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
bugfixes:
2+
- zos_backup_restore - Return value `backup_name` was empty upon successful result.
3+
Fix now returns `backup_name` populated.
4+
(https://github.com/ansible-collections/ibm_zos_core/pull/2040).
5+
trivial:
6+
- test_zos_backup_restore - added backup_name assertion for return values in the test suite.
7+
(https://github.com/ansible-collections/ibm_zos_core/pull/2040).

plugins/modules/zos_backup_restore.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,7 @@ def main():
456456
sms_management_class=sms_management_class,
457457
tmp_hlq=tmp_hlq,
458458
)
459+
result["backup_name"] = backup_name
459460
result["changed"] = True
460461

461462
except Exception as e:

tests/functional/modules/test_zos_backup_restore.py

Lines changed: 73 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,9 @@ def test_backup_of_data_set(ansible_zos_module, backup_name, overwrite, recover)
243243
recover=recover,
244244
)
245245
assert_module_did_not_fail(results)
246+
for result in results.contacted.values():
247+
assert result.get("backup_name") == backup_name, \
248+
f"Backup name '{backup_name}' not found in output"
246249
assert_data_set_or_file_exists(hosts, backup_name)
247250
finally:
248251
delete_data_set_or_file(hosts, data_set_name)
@@ -282,6 +285,9 @@ def test_backup_of_data_set_when_backup_dest_exists(
282285
)
283286
if overwrite:
284287
assert_module_did_not_fail(results)
288+
for result in results.contacted.values():
289+
assert result.get("backup_name") == backup_name, \
290+
f"Backup name '{backup_name}' not found in output"
285291
else:
286292
assert_module_failed(results)
287293
assert_data_set_or_file_exists(hosts, backup_name)
@@ -329,6 +335,13 @@ def test_backup_and_restore_of_data_set(
329335
overwrite=overwrite,
330336
recover=recover,
331337
)
338+
assert_module_did_not_fail(results)
339+
# NEW: Assert backup_name appears in output
340+
for result in results.contacted.values():
341+
assert result.get("backup_name") == backup_name, \
342+
f"Backup name '{backup_name}' not found in output"
343+
# Verify backup file/dataset exists
344+
assert_data_set_or_file_exists(hosts, backup_name)
332345
if not overwrite:
333346
new_hlq = "N" + get_random_q(4)
334347
hlqs.append(new_hlq)
@@ -341,6 +354,9 @@ def test_backup_and_restore_of_data_set(
341354
overwrite=overwrite,
342355
)
343356
assert_module_did_not_fail(results)
357+
for result in results.contacted.values():
358+
assert result.get("backup_name") == backup_name, \
359+
"Backup name '{backup_name}' not found in restore output"
344360
finally:
345361
delete_data_set_or_file(hosts, data_set_name)
346362
delete_data_set_or_file(hosts, backup_name)
@@ -391,6 +407,9 @@ def test_backup_and_restore_of_data_set_various_space_measurements(
391407
args["space_type"] = space_type
392408
results = hosts.all.zos_backup_restore(**args)
393409
assert_module_did_not_fail(results)
410+
for result in results.contacted.values():
411+
assert result.get("backup_name") == backup_name, \
412+
f"Backup name '{backup_name}' not found in backup output"
394413
assert_data_set_or_file_exists(hosts, backup_name)
395414
args = dict(
396415
operation="restore",
@@ -403,6 +422,9 @@ def test_backup_and_restore_of_data_set_various_space_measurements(
403422
args["space_type"] = space_type
404423
results = hosts.all.zos_backup_restore(**args)
405424
assert_module_did_not_fail(results)
425+
for result in results.contacted.values():
426+
assert result.get("backup_name") == backup_name, \
427+
f"Backup name '{backup_name}' not found in restore output"
406428
finally:
407429
delete_data_set_or_file(hosts, data_set_name)
408430
delete_data_set_or_file(hosts, backup_name)
@@ -442,13 +464,19 @@ def test_backup_and_restore_of_data_set_when_restore_location_exists(
442464
backup_name=backup_name,
443465
)
444466
assert_module_did_not_fail(results)
467+
for result in results.contacted.values():
468+
assert result.get("backup_name") == backup_name, \
469+
f"Backup name '{backup_name}' not found in backup output"
445470
assert_data_set_or_file_exists(hosts, backup_name)
446471
results = hosts.all.zos_backup_restore(
447472
operation="restore",
448473
backup_name=backup_name,
449474
hlq=new_hlq,
450475
)
451476
assert_module_did_not_fail(results)
477+
for result in results.contacted.values():
478+
assert result.get("backup_name") == backup_name, \
479+
f"Backup name '{backup_name}' not found in restore output"
452480
results = hosts.all.zos_backup_restore(
453481
operation="restore",
454482
backup_name=backup_name,
@@ -457,6 +485,9 @@ def test_backup_and_restore_of_data_set_when_restore_location_exists(
457485
)
458486
if overwrite:
459487
assert_module_did_not_fail(results)
488+
for result in results.contacted.values():
489+
assert result.get("backup_name") == backup_name, \
490+
f"Backup name '{backup_name}' not found in restore output"
460491
else:
461492
assert_module_failed(results)
462493
finally:
@@ -490,6 +521,9 @@ def test_backup_and_restore_of_multiple_data_sets(ansible_zos_module):
490521
backup_name=data_set_backup_location,
491522
)
492523
assert_module_did_not_fail(results)
524+
for result in results.contacted.values():
525+
assert result.get("backup_name") == data_set_backup_location, \
526+
f"Backup name '{data_set_backup_location}' not found in backup output"
493527
assert_data_set_or_file_exists(hosts, data_set_backup_location)
494528
results = hosts.all.zos_backup_restore(
495529
operation="restore",
@@ -499,6 +533,9 @@ def test_backup_and_restore_of_multiple_data_sets(ansible_zos_module):
499533
hlq=new_hlq,
500534
)
501535
assert_module_did_not_fail(results)
536+
for result in results.contacted.values():
537+
assert result.get("backup_name") == data_set_backup_location, \
538+
f"Backup name '{data_set_backup_location}' not found in restore output"
502539
finally:
503540
delete_data_set_or_file(hosts, data_set_name)
504541
delete_data_set_or_file(hosts, data_set_name2)
@@ -531,6 +568,9 @@ def test_backup_and_restore_of_multiple_data_sets_by_hlq(ansible_zos_module):
531568
backup_name=data_set_backup_location,
532569
)
533570
assert_module_did_not_fail(results)
571+
for result in results.contacted.values():
572+
assert result.get("backup_name") == data_set_backup_location, \
573+
f"Backup name '{data_set_backup_location}' not found in backup output"
534574
assert_data_set_or_file_exists(hosts, data_set_backup_location)
535575
results = hosts.all.zos_backup_restore(
536576
operation="restore",
@@ -540,6 +580,9 @@ def test_backup_and_restore_of_multiple_data_sets_by_hlq(ansible_zos_module):
540580
hlq=new_hlq,
541581
)
542582
assert_module_did_not_fail(results)
583+
for result in results.contacted.values():
584+
assert result.get("backup_name") == data_set_backup_location, \
585+
f"Backup name '{data_set_backup_location}' not found in restore output"
543586
assert_data_set_exists(hosts, data_set_backup_location)
544587
finally:
545588
delete_data_set_or_file(hosts, data_set_name)
@@ -574,6 +617,9 @@ def test_backup_and_restore_exclude_from_pattern(ansible_zos_module):
574617
backup_name=data_set_backup_location,
575618
)
576619
assert_module_did_not_fail(results)
620+
for result in results.contacted.values():
621+
assert result.get("backup_name") == data_set_backup_location, \
622+
f"Backup name '{data_set_backup_location}' not found in backup output"
577623
assert_data_set_or_file_exists(hosts, data_set_backup_location)
578624
results = hosts.all.zos_backup_restore(
579625
operation="restore",
@@ -583,6 +629,9 @@ def test_backup_and_restore_exclude_from_pattern(ansible_zos_module):
583629
hlq=new_hlq,
584630
)
585631
assert_module_did_not_fail(results)
632+
for result in results.contacted.values():
633+
assert result.get("backup_name") == data_set_backup_location, \
634+
f"Backup name '{data_set_backup_location}' not found in restore output"
586635
assert_data_set_exists(hosts, data_set_backup_location)
587636
assert_data_set_does_not_exist(hosts, data_set_restore_location2)
588637
finally:
@@ -706,6 +755,9 @@ def test_restore_of_data_set_when_volume_does_not_exist(ansible_zos_module):
706755
backup_name=data_set_backup_location,
707756
)
708757
assert_module_did_not_fail(results)
758+
for result in results.contacted.values():
759+
assert result.get("backup_name") == data_set_backup_location, \
760+
f"Backup name '{data_set_backup_location}' not found in backup output"
709761
assert_data_set_or_file_exists(hosts, data_set_backup_location)
710762
results = hosts.all.zos_backup_restore(
711763
operation="restore",
@@ -738,12 +790,19 @@ def test_backup_and_restore_a_data_set_with_same_hlq(ansible_zos_module):
738790
)
739791
delete_data_set_or_file(hosts, data_set_name)
740792
assert_module_did_not_fail(results)
793+
for result in results.contacted.values():
794+
assert result.get("backup_name") == data_set_backup_location, \
795+
f"Backup name '{data_set_backup_location}' not found in restore output"
741796
assert_data_set_or_file_exists(hosts, data_set_backup_location)
742797
results = hosts.all.zos_backup_restore(
743798
operation="restore",
744799
backup_name=data_set_backup_location,
745800
)
746801
assert_module_did_not_fail(results)
802+
for result in results.contacted.values():
803+
assert result.get("backup_name") == data_set_backup_location, \
804+
f"Backup name '{data_set_backup_location}' not found in restore output"
805+
assert_data_set_or_file_exists(hosts, data_set_backup_location)
747806
# Check the HLQ in the response
748807
assert_data_set_or_file_exists(hosts, data_set_name)
749808
finally:
@@ -858,6 +917,8 @@ def test_backup_gds(ansible_zos_module, dstype):
858917
for result in results.contacted.values():
859918
assert result.get("changed") is True
860919
assert result.get("module_stderr") is None
920+
assert result.get("backup_name") == backup_dest, \
921+
f"Backup_name '{backup_dest}' not found in backup output"
861922
finally:
862923
hosts.all.shell(cmd=f"drm ANSIBLE.* ")
863924

@@ -889,26 +950,33 @@ def test_backup_into_gds(ansible_zos_module, dstype):
889950
for result in results.contacted.values():
890951
assert result.get("changed") is True
891952
assert result.get("module_stderr") is None
953+
backup_target = f"{data_set_name}.G0002V00"
892954
results = hosts.all.zos_backup_restore(
893955
operation="backup",
894956
data_sets=dict(include=[ds_name]),
895-
backup_name=f"{data_set_name}.G0002V00",
957+
backup_name=backup_target,
896958
)
897959
for result in results.contacted.values():
898960
assert result.get("changed") is True
899961
assert result.get("module_stderr") is None
962+
assert result.get("backup_name") == backup_target, \
963+
f"Expected backup_name '{backup_target}' not found in backup output"
900964
escaped_ds_name = ds_name.replace('$', '\$')
901965
results = hosts.all.shell(cmd=f"drm \"{escaped_ds_name}\"")
902966
for result in results.contacted.values():
903967
assert result.get("changed") is True
904968
assert result.get("module_stderr") is None
969+
restore_source = f"{data_set_name}(0)"
905970
results = hosts.all.zos_backup_restore(
906971
operation="restore",
907-
backup_name=f"{data_set_name}(0)",
972+
backup_name=restore_source,
908973
)
909974
for result in results.contacted.values():
910975
assert result.get("changed") is True
911976
assert result.get("module_stderr") is None
977+
assert result.get("backup_name") == restore_source, \
978+
f"Backup_name '{restore_source}' not found in output"
979+
912980
finally:
913981
hosts.all.shell(cmd=f"drm ANSIBLE.* ; drm OMVSADM.*")
914982

@@ -940,6 +1008,9 @@ def test_backup_tolerate_enqueue(ansible_zos_module):
9401008
backup_name=data_sets_backup_location,
9411009
)
9421010
assert_module_did_not_fail(results)
1011+
for result in results.contacted.values():
1012+
assert result.get("backup_name") == data_sets_backup_location, \
1013+
f"Backup name '{data_sets_backup_location}' not found in backup output"
9431014
assert_data_set_or_file_exists(hosts, data_sets_backup_location)
9441015
finally:
9451016
hosts.all.shell(cmd="rm -rf " + temp_file)

0 commit comments

Comments
 (0)