# Ansible playbook to add a AAAA record to IPAM
#
# Example usage: ansible-playbook add-ipam-aaaa.yml --extra-vars \
#  '{"fqdn":"ansibletest.sandbox.illinois.edu","ipv6addr":"2001:db8::17","extattrs":{"TechSvcNetDevice":"N/A"}}'
#
# Copyright (c) 2018 Board of Trustees University of Illinois
---
- import_playbook: ipam-provider.yml

- name: Add IPAM AAAA record
  hosts: localhost
  gather_facts: false
  vars:

    view: default
    fqdn:
    ipv6addr:
    ttl:
    extattrs: {}
    comment:

  tasks:

    - assert: { that: "ansible_version.full is version('2.8', '>=')", quiet: true }

    - name: check required variables
      fail: msg="Required variable '{{ item }}' not set"
      when: not lookup('vars', item)
      loop:
        - fqdn
        - ipv6addr

    - name: get existing record if any
      set_fact:
        # may return list or single object
        existing_record: "{{ lookup('nios', 'record:aaaa', filter={'view': view, 'name': fqdn, 'ipv6addr': ipv6addr},
                                    return_fields=['view', 'name', 'ipv6addr', 'ttl', 'use_ttl', 'extattrs', 'comment'],
                                    provider=ipam_provider) }}"

    - debug: var=existing_record
      when: DEBUG is defined

    - name: create AAAA record
      when: not existing_record
      nios_aaaa_record:
        view: "{{ view }}"
        name: "{{ fqdn }}"
        ipv6addr: "{{ ipv6addr }}"
        state: present
        ttl: "{{ ttl|default(omit, true) }}"
        extattrs: "{{ extattrs|default(omit, true) }}"
        comment: "{{ comment|default(omit, true) }}"
        provider: "{{ ipam_provider }}"
