ipabackup: Fix order of ipabackup_name parameter evaluation.

When performing a backup with 'state:present', if 'ipabackup_name' is
provided, the backup will be performed, but the role with return an
error since 'ipabackup_name' should not be set for this state.

This patch moves the parameter evaluation to be performed before the
actual backup is performed, so that the backup is not performed and an
error is reported.
This commit is contained in:
Rafael Guterres Jeffman
2022-09-02 11:49:50 -03:00
parent d936a3794e
commit e6da214bfb
2 changed files with 31 additions and 6 deletions

View File

@@ -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

View File

@@ -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