- name: Launching NAT Gateway and allocate a new eip.
  ec2_vpc_nat_gateway:
    region: us-west-2
    state: present
    subnet_id: "{{ test_subnet_id }}"
    wait: yes
    wait_timeout: 600
  register: nat

- debug:
    var: nat
- fail:
    msg: "Failed to create"
  when: '"{{ nat["changed"] }}" != "True"'

- name: Launch a new gateway only if one does not exist already in this subnet.
  ec2_vpc_nat_gateway:
    if_exist_do_not_create: yes
    region: us-west-2
    state: present
    subnet_id: "{{ test_subnet_id }}"
    wait: yes
    wait_timeout: 600
  register: nat_idempotent

- debug:
    var: nat_idempotent
- fail:
    msg: "Failed to be idempotent"
  when: '"{{ nat_idempotent["changed"] }}" == "True"'

- name: Launching NAT Gateway and allocate a new eip even if one already exists in the subnet.
  ec2_vpc_nat_gateway:
    region: us-west-2
    state: present
    subnet_id: "{{ test_subnet_id }}"
    wait: yes
    wait_timeout: 600
  register: new_nat

- debug:
    var: new_nat
- fail:
    msg: "Failed to create"
  when: '"{{ new_nat["changed"] }}" != "True"'

- name: Launching NAT Gateway with allocation id, this call is idempotent and will not create anything.
  ec2_vpc_nat_gateway:
    allocation_id: eipalloc-1234567
    region: us-west-2
    state: present
    subnet_id: "{{ test_subnet_id }}"
    wait: yes
    wait_timeout: 600
  register: nat_with_eipalloc

- debug:
    var: nat_with_eipalloc
- fail:
    msg: 'Failed to be idempotent.'
  when: '"{{ nat_with_eipalloc["changed"]  }}" == "True"'

- name: Delete the 1st nat gateway and do not wait for it to finish
  ec2_vpc_nat_gateway:
    region: us-west-2
    nat_gateway_id: "{{ nat.nat_gateway_id }}"
    state: absent

- name: Delete the nat_with_eipalloc and release the eip
  ec2_vpc_nat_gateway:
    region: us-west-2
    nat_gateway_id: "{{ new_nat.nat_gateway_id }}"
    release_eip: yes
    state: absent
    wait: yes
    wait_timeout: 600
