mirror of
https://github.com/freeipa/ansible-freeipa.git
synced 2026-06-11 19:25:54 +00:00
servicedelegation: Do not fail for not existing members with state absent
Ensuring absence of members (services and targets) that do not exist may not fail as they are not members for servicedelegationtarget and servicedelegationrule. servicedelegation_normalize_principals in ansible_freeipa_module has been extended with a check_exists argument that defaults to False. state == "present" is now given as this argument to turn on the element exists check only if elements should be added.
This commit is contained in:
@@ -551,7 +551,8 @@ else:
|
|||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def servicedelegation_normalize_principals(module, principal):
|
def servicedelegation_normalize_principals(module, principal,
|
||||||
|
check_exists=False):
|
||||||
"""
|
"""
|
||||||
Normalize servicedelegation principals.
|
Normalize servicedelegation principals.
|
||||||
|
|
||||||
@@ -620,12 +621,13 @@ else:
|
|||||||
_host = _host[:-len(realm) - 1]
|
_host = _host[:-len(realm) - 1]
|
||||||
|
|
||||||
# Seach for host
|
# Seach for host
|
||||||
if not _check_exists(module, "host", _host):
|
if check_exists and not _check_exists(module, "host", _host):
|
||||||
module.fail_json(msg="Host '%s' does not exist" % _host)
|
module.fail_json(msg="Host '%s' does not exist" % _host)
|
||||||
|
|
||||||
# Check the service principal exists
|
# Check the service principal exists
|
||||||
else:
|
else:
|
||||||
if not _check_exists(module, "service", princ):
|
if check_exists and \
|
||||||
|
not _check_exists(module, "service", princ):
|
||||||
module.fail_json(msg="Service %s does not exist" % princ)
|
module.fail_json(msg="Service %s does not exist" % princ)
|
||||||
|
|
||||||
_principal.append(princ)
|
_principal.append(princ)
|
||||||
|
|||||||
@@ -221,9 +221,9 @@ def main():
|
|||||||
|
|
||||||
# Normalize principals
|
# Normalize principals
|
||||||
if principal:
|
if principal:
|
||||||
principal = servicedelegation_normalize_principals(ansible_module,
|
principal = servicedelegation_normalize_principals(
|
||||||
principal)
|
ansible_module, principal, state == "present")
|
||||||
if target:
|
if target and state == "present":
|
||||||
check_targets(ansible_module, target)
|
check_targets(ansible_module, target)
|
||||||
|
|
||||||
commands = []
|
commands = []
|
||||||
|
|||||||
@@ -177,8 +177,8 @@ def main():
|
|||||||
|
|
||||||
# Normalize principals
|
# Normalize principals
|
||||||
if principal:
|
if principal:
|
||||||
principal = servicedelegation_normalize_principals(ansible_module,
|
principal = servicedelegation_normalize_principals(
|
||||||
principal)
|
ansible_module, principal, state == "present")
|
||||||
|
|
||||||
commands = []
|
commands = []
|
||||||
principal_add = principal_del = []
|
principal_add = principal_del = []
|
||||||
|
|||||||
@@ -21,7 +21,9 @@
|
|||||||
ipaservice:
|
ipaservice:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
ipaapi_context: "{{ ipa_context | default(omit) }}"
|
ipaapi_context: "{{ ipa_context | default(omit) }}"
|
||||||
name: "{{ 'test-service/' + ansible_facts['fqdn'] }}"
|
name:
|
||||||
|
- "{{ 'test-service/' + ansible_facts['fqdn'] }}"
|
||||||
|
- "{{ 'not-existing-test-service/' + ansible_facts['fqdn'] }}"
|
||||||
state: absent
|
state: absent
|
||||||
continue: yes
|
continue: yes
|
||||||
|
|
||||||
@@ -29,7 +31,9 @@
|
|||||||
ipaservicedelegationtarget:
|
ipaservicedelegationtarget:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
ipaapi_context: "{{ ipa_context | default(omit) }}"
|
ipaapi_context: "{{ ipa_context | default(omit) }}"
|
||||||
name: test-delegation-target
|
name:
|
||||||
|
- test-delegation-target
|
||||||
|
- not-existing-test-delegation-target
|
||||||
state: absent
|
state: absent
|
||||||
|
|
||||||
# CREATE TEST ITEMS
|
# CREATE TEST ITEMS
|
||||||
@@ -68,6 +72,28 @@
|
|||||||
register: result
|
register: result
|
||||||
failed_when: result.changed or result.failed
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Do not fail to ensure absence of not existing servicedelegationrule test-delegation-rule member principal
|
||||||
|
ipaservicedelegationrule:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
ipaapi_context: "{{ ipa_context | default(omit) }}"
|
||||||
|
name: test-delegation-rule
|
||||||
|
principal: "{{ 'not-existing-test-service/' + ansible_facts['fqdn'] }}"
|
||||||
|
action: member
|
||||||
|
state: absent
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Do not fail to ensure absence of not existing servicedelegationrule test-delegation-rule member target
|
||||||
|
ipaservicedelegationrule:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
ipaapi_context: "{{ ipa_context | default(omit) }}"
|
||||||
|
name: test-delegation-rule
|
||||||
|
target: not-existing-test-delegation-target
|
||||||
|
action: member
|
||||||
|
state: absent
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure servicedelegationrule test-delegation-rule member target test-delegation-target is present
|
- name: Ensure servicedelegationrule test-delegation-rule member target test-delegation-target is present
|
||||||
ipaservicedelegationrule:
|
ipaservicedelegationrule:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
- "{{ 'test-service1/' + ansible_facts['fqdn'] }}"
|
- "{{ 'test-service1/' + ansible_facts['fqdn'] }}"
|
||||||
- "{{ 'test-service2/' + ansible_facts['fqdn'] }}"
|
- "{{ 'test-service2/' + ansible_facts['fqdn'] }}"
|
||||||
- "{{ 'test-service3/' + ansible_facts['fqdn'] }}"
|
- "{{ 'test-service3/' + ansible_facts['fqdn'] }}"
|
||||||
|
- "{{ 'not-existing-test-service/' + ansible_facts['fqdn'] }}"
|
||||||
state: absent
|
state: absent
|
||||||
continue: yes
|
continue: yes
|
||||||
|
|
||||||
@@ -72,6 +73,17 @@
|
|||||||
register: result
|
register: result
|
||||||
failed_when: result.changed or result.failed
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Do not fail to ensure absence of not existing servicedelegationtarget test-delegation-target member principal
|
||||||
|
ipaservicedelegationtarget:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
ipaapi_context: "{{ ipa_context | default(omit) }}"
|
||||||
|
name: test-delegation-target
|
||||||
|
principal: "{{ 'not-existing-test-service/' + ansible_facts['fqdn'] }}"
|
||||||
|
action: member
|
||||||
|
state: absent
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure servicedelegationtarget test-delegation-target member principal "{{ 'test-service1/' + ansible_facts['fqdn'] }}" is present
|
- name: Ensure servicedelegationtarget test-delegation-target member principal "{{ 'test-service1/' + ansible_facts['fqdn'] }}" is present
|
||||||
ipaservicedelegationtarget:
|
ipaservicedelegationtarget:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
|||||||
Reference in New Issue
Block a user