def main(): argument_spec = openstack_full_argument_spec( zone=dict(required=True), name=dict(required=True), recordset_type=dict(required=False, choices=[ 'a', 'aaaa', 'mx', 'cname', 'txt', 'ns', 'srv', 'ptr', 'caa' ]), records=dict(required=False, type='list', elements='str'), description=dict(required=False, default=None), ttl=dict(required=False, type='int'), state=dict(default='present', choices=['absent', 'present']), ) module_kwargs = openstack_module_kwargs() module = AnsibleModule(argument_spec, required_if=[('state', 'present', ['recordset_type', 'records'])], supports_check_mode=True, **module_kwargs) module.module_min_sdk_version = '0.28.0' zone = module.params.get('zone') name = module.params.get('name') state = module.params.get('state') sdk, cloud = openstack_cloud_from_module(module) recordsets = cloud.search_recordsets(zone, name_or_id=name) if recordsets: recordset = recordsets[0] try: recordset_id = recordset['id'] except KeyError as e: module.fail_json(msg=str(e)) else: # recordsets is filtered by type and should never be more than 1 return recordset = None if state == 'present': recordset_type = module.params.get('recordset_type').upper() records = module.params.get('records') description = module.params.get('description') ttl = module.params.get('ttl') kwargs = {} if description: kwargs['description'] = description kwargs['records'] = records if module.check_mode: module.exit_json(changed=_system_state_change( state, records, description, ttl, recordset)) if recordset is None: if ttl: kwargs['ttl'] = ttl else: kwargs['ttl'] = 300 recordset = cloud.create_recordset(zone=zone, name=name, recordset_type=recordset_type, **kwargs) changed = True else: if ttl: kwargs['ttl'] = ttl pre_update_recordset = recordset changed = _system_state_change(state, records, description, ttl, pre_update_recordset) if changed: recordset = cloud.update_recordset(zone=zone, name_or_id=recordset_id, **kwargs) module.exit_json(changed=changed, recordset=recordset) elif state == 'absent': if module.check_mode: module.exit_json(changed=_system_state_change( state, None, None, None, recordset)) if recordset is None: changed = False else: cloud.delete_recordset(zone, recordset_id) changed = True module.exit_json(changed=changed)