diff --git a/changelogs/fragments/6382-udm-dns-record-refactor.yml b/changelogs/fragments/6382-udm-dns-record-refactor.yml new file mode 100644 index 0000000000..78a18e0714 --- /dev/null +++ b/changelogs/fragments/6382-udm-dns-record-refactor.yml @@ -0,0 +1,2 @@ +minor_changes: + - udm_dns_record - minor refactor to the code (https://github.com/ansible-collections/community.general/pull/6382). diff --git a/plugins/modules/udm_dns_record.py b/plugins/modules/udm_dns_record.py index 458a8e4ba5..849c84a2d2 100644 --- a/plugins/modules/udm_dns_record.py +++ b/plugins/modules/udm_dns_record.py @@ -97,19 +97,9 @@ EXAMPLES = ''' RETURN = '''#''' -HAVE_UNIVENTION = False -HAVE_IPADDRESS = False -try: - from univention.admin.handlers.dns import ( - forward_zone, - reverse_zone, - ) - HAVE_UNIVENTION = True -except ImportError: - pass from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.basic import missing_required_lib +from ansible_collections.community.general.plugins.module_utils import deps from ansible_collections.community.general.plugins.module_utils.univention_umc import ( umc_module_for_add, umc_module_for_edit, @@ -118,27 +108,26 @@ from ansible_collections.community.general.plugins.module_utils.univention_umc i config, uldap, ) -try: + + +with deps.declare("univention", msg="This module requires univention python bindings"): + from univention.admin.handlers.dns import ( + forward_zone, + reverse_zone, + ) + +with deps.declare("ipaddress"): import ipaddress - HAVE_IPADDRESS = True -except ImportError: - pass def main(): module = AnsibleModule( argument_spec=dict( - type=dict(required=True, - type='str'), - zone=dict(required=True, - type='str'), - name=dict(required=True, - type='str'), - data=dict(default={}, - type='dict'), - state=dict(default='present', - choices=['present', 'absent'], - type='str') + type=dict(required=True, type='str'), + zone=dict(required=True, type='str'), + name=dict(required=True, type='str'), + data=dict(default={}, type='dict'), + state=dict(default='present', choices=['present', 'absent'], type='str') ), supports_check_mode=True, required_if=([ @@ -146,8 +135,7 @@ def main(): ]) ) - if not HAVE_UNIVENTION: - module.fail_json(msg="This module requires univention python bindings") + deps.validate(module, "univention") type = module.params['type'] zone = module.params['zone'] @@ -159,8 +147,8 @@ def main(): workname = name if type == 'ptr_record': - if not HAVE_IPADDRESS: - module.fail_json(msg=missing_required_lib('ipaddress')) + deps.validate(module, "ipaddress") + try: if 'arpa' not in zone: raise Exception("Zone must be reversed zone for ptr_record. (e.g. 1.1.192.in-addr.arpa)") @@ -196,7 +184,7 @@ def main(): '(zoneName={0})'.format(zone), scope='domain', ) - if len(so) == 0: + if not so == 0: raise Exception("Did not find zone '{0}' in Univention".format(zone)) obj = umc_module_for_add('dns/{0}'.format(type), container, superordinate=so[0]) else: