diff --git a/roles/ipabackup/tasks/main.yml b/roles/ipabackup/tasks/main.yml index 148913f7edcde4550c97bd3ced8164429b2c1fc2..1ae6b28141ed034534e4ff500969babcca279197 100644 --- a/roles/ipabackup/tasks/main.yml +++ b/roles/ipabackup/tasks/main.yml @@ -26,6 +26,12 @@ fail: msg="ipabackup_from_controller and ipabackup_to_controller are set" when: ipabackup_from_controller | bool and ipabackup_to_controller | bool +- name: Fail for given ipabackup_name if state is not copied, restored or absent + fail: msg="ipabackup_name is given and state is not copied, restored or absent" + when: state is not defined or + (state != "copied" and state != "restored" and state != "absent") and + ipabackup_name is defined + - name: Get ipabackup_dir from IPA installation include_tasks: "{{ role_path }}/tasks/get_ipabackup_dir.yml" @@ -33,12 +39,6 @@ include_tasks: "{{ role_path }}/tasks/backup.yml" when: state|default("present") == "present" -- name: Fail for given ipabackup_name if state is not copied, restored or absent - fail: msg="ipabackup_name is given and state is not copied, restored or absent" - when: state is not defined or - (state != "copied" and state != "restored" and state != "absent") and - ipabackup_name is defined - - name: Fail on missing ipabackup_name fail: msg="ipabackup_name is not set" when: (ipabackup_name is not defined or not ipabackup_name) and diff --git a/tests/backup_role/test_backup.yml b/tests/backup_role/test_backup.yml index 5060e8024f0a16b8b995e4c59fd6456373b57601..9f68656f0948ff5ebadcc43387dd3dcb4b1b30e3 100644 --- a/tests/backup_role/test_backup.yml +++ b/tests/backup_role/test_backup.yml @@ -383,6 +383,31 @@ loop_var: server_backup_data label: server_backup_data.path + # Test issue #900 + - name: Remove all backup from server. + ansible.builtin.include_role: + name: ipabackup + vars: + state: absent + ipabackup_name: all + + - name: Test issue 900 fix. + block: + - name: Invalid role configuration that should not produce a backup on the server. + ansible.builtin.include_role: + name: ipabackup + vars: + state: present + ipabackup_name: this_must_fail + rescue: + - name: List all existing backups on server + ansible.builtin.find: + path: /var/lib/ipa/backup + recurse: no + file_type: directory + register: server_backups + failed_when: server_backups.files + # CLEANUP - name: List all existing backups on controller