mirror of
https://github.com/freeipa/ansible-freeipa.git
synced 2026-05-13 13:02:00 +00:00
Compare commits
1 Commits
v0.3.7
...
automember
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
382ee6ffa0 |
@@ -185,6 +185,15 @@ def transform_conditions(conditions):
|
|||||||
return transformed
|
return transformed
|
||||||
|
|
||||||
|
|
||||||
|
def check_condition_keys(ansible_module, conditions, aciattrs):
|
||||||
|
if conditions is None:
|
||||||
|
return
|
||||||
|
for condition in conditions:
|
||||||
|
if condition["key"] not in aciattrs:
|
||||||
|
ansible_module.fail_json(
|
||||||
|
msg="Invalid automember condition key '%s'" % condition["key"])
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
ansible_module = AnsibleModule(
|
ansible_module = AnsibleModule(
|
||||||
argument_spec=dict(
|
argument_spec=dict(
|
||||||
@@ -274,6 +283,28 @@ def main():
|
|||||||
# Make sure automember rule exists
|
# Make sure automember rule exists
|
||||||
res_find = find_automember(ansible_module, name, automember_type)
|
res_find = find_automember(ansible_module, name, automember_type)
|
||||||
|
|
||||||
|
# Check inclusive and exclusive conditions
|
||||||
|
if inclusive is not None or exclusive is not None:
|
||||||
|
# automember_type is either "group" or "hostgorup"
|
||||||
|
if automember_type == "group":
|
||||||
|
_type = "user"
|
||||||
|
elif automember_type == "hostgroup":
|
||||||
|
_type = "host"
|
||||||
|
else:
|
||||||
|
ansible_module.fail_json(
|
||||||
|
msg="Bad automember type '%s'" % automember_type)
|
||||||
|
|
||||||
|
try:
|
||||||
|
aciattrs = api_command(
|
||||||
|
ansible_module, "json_metadata", to_text(_type), {}
|
||||||
|
)['objects'][_type]['aciattrs']
|
||||||
|
except Exception as ex:
|
||||||
|
ansible_module.fail_json(
|
||||||
|
msg="%s: %s: %s" % ("json_metadata", _type, str(ex)))
|
||||||
|
|
||||||
|
check_condition_keys(ansible_module, inclusive, aciattrs)
|
||||||
|
check_condition_keys(ansible_module, exclusive, aciattrs)
|
||||||
|
|
||||||
# Create command
|
# Create command
|
||||||
if state == 'present':
|
if state == 'present':
|
||||||
args = gen_args(description, automember_type)
|
args = gen_args(description, automember_type)
|
||||||
|
|||||||
@@ -164,6 +164,34 @@
|
|||||||
register: result
|
register: result
|
||||||
failed_when: result.changed or result.failed
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure testgroup group automember conditions fails on invalid inclusive key
|
||||||
|
ipaautomember:
|
||||||
|
ipaadmin_principal: admin
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: testgroup
|
||||||
|
automember_type: group
|
||||||
|
inclusive:
|
||||||
|
- key: cns
|
||||||
|
expression: 'foo'
|
||||||
|
action: member
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or not result.failed or
|
||||||
|
"Invalid automember condition key 'cns'" not in result.msg
|
||||||
|
|
||||||
|
- name: Ensure testgroup group automember conditions fails on invalid exlusive key
|
||||||
|
ipaautomember:
|
||||||
|
ipaadmin_principal: admin
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: testgroup
|
||||||
|
automember_type: group
|
||||||
|
exclusive:
|
||||||
|
- key: cns
|
||||||
|
expression: 'foo'
|
||||||
|
action: member
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or not result.failed or
|
||||||
|
"Invalid automember condition key 'cns'" not in result.msg
|
||||||
|
|
||||||
- name: Ensure testhostgroup hostgroup automember rule is present
|
- name: Ensure testhostgroup hostgroup automember rule is present
|
||||||
ipaautomember:
|
ipaautomember:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
@@ -282,6 +310,35 @@
|
|||||||
register: result
|
register: result
|
||||||
failed_when: result.changed or result.failed
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure testhostgroup hostgroup automember conditions fails on invalid inclusive key
|
||||||
|
ipaautomember:
|
||||||
|
ipaadmin_principal: admin
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: testhostgroup
|
||||||
|
automember_type: hostgroup
|
||||||
|
inclusive:
|
||||||
|
- key: cns
|
||||||
|
expression: 'foo'
|
||||||
|
action: member
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or not result.failed or
|
||||||
|
"Invalid automember condition key 'cns'" not in result.msg
|
||||||
|
|
||||||
|
- name: Ensure testhostgroup hostgroup automember conditions fails on invalid exlusive key
|
||||||
|
ipaautomember:
|
||||||
|
ipaadmin_principal: admin
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: testhostgroup
|
||||||
|
automember_type: hostgroup
|
||||||
|
exclusive:
|
||||||
|
- key: cns
|
||||||
|
expression: 'foo'
|
||||||
|
action: member
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or not result.failed or
|
||||||
|
"Invalid automember condition key 'cns'" not in result.msg
|
||||||
|
|
||||||
# CLEANUP TEST ITEMS
|
# CLEANUP TEST ITEMS
|
||||||
|
|
||||||
- name: Ensure group testgroup is absent
|
- name: Ensure group testgroup is absent
|
||||||
|
|||||||
Reference in New Issue
Block a user