---
# ----------------------------------------------------------------------------
#
#     ***     AUTO GENERATED CODE    ***    Type: MMv1     ***
#
# ----------------------------------------------------------------------------
#
#     This file is automatically generated by Magic Modules and manual
#     changes will be clobbered when the file is regenerated.
#
#     Please read more about how to change this file at
#     https://www.github.com/GoogleCloudPlatform/magic-modules
#
# ----------------------------------------------------------------------------
# Pre-test setup
- name: Create a address
  google.cloud.gcp_compute_address:
    name: address
    region: us-central1
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: present
  register: address
- name: Create a forward address
  google.cloud.gcp_compute_address:
    name: address-forwardingrule
    region: us-central1
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: present
  register: address_forwardingrule
- name: Create a network
  google.cloud.gcp_compute_network:
    name: network-vpn-tunnel
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    auto_create_subnetworks: true
    state: present
  register: network
- name: Create a disk
  google.cloud.gcp_compute_disk:
    name: "{{ resource_prefix }}"
    size_gb: 50
    source_image: projects/ubuntu-os-cloud/global/images/family/ubuntu-minimal-2204-lts
    zone: us-central1-a
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: present
  register: disk
- name: Create a instance
  google.cloud.gcp_compute_instance:
    name: "{{ resource_name }}"
    machine_type: n1-standard-1
    disks:
      - auto_delete: "true"
        boot: "true"
        source: "{{ disk }}"
      - auto_delete: "true"
        interface: NVME
        type: SCRATCH
        initialize_params:
          disk_type: local-ssd
    metadata:
      cost-center: "12345"
    labels:
      environment: production
    network_interfaces:
      - network: "{{ network }}"
        access_configs:
          - name: External NAT
            nat_ip: "{{ address }}"
            type: ONE_TO_ONE_NAT
    zone: us-central1-a
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: present
  register: result
- name: Create a router
  google.cloud.gcp_compute_router:
    name: router-vpn-tunnel
    network: "{{ network }}"
    bgp:
      asn: 64514
      advertise_mode: CUSTOM
      advertised_groups:
        - ALL_SUBNETS
      advertised_ip_ranges:
        - range: 1.2.3.4
        - range: 6.7.0.0/16
    region: us-central1
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: present
  register: router
- name: Create a target vpn gateway
  google.cloud.gcp_compute_target_vpn_gateway:
    name: gateway-vpn-tunnel
    region: us-central1
    network: "{{ network }}"
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: present
  register: gateway
- name: Create a forwarding rule
  google.cloud.gcp_compute_forwarding_rule:
    name: "{{ resource_name }}"
    region: us-central1
    target: "{{ gateway.selfLink }}"
    ip_protocol: ESP
    ip_address: "{{ address_forwardingrule.address }}"
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: present
  register: result
- name: Create a UDP-500 forwarding rule
  google.cloud.gcp_compute_forwarding_rule:
    name: "{{ resource_name }}-udp"
    region: us-central1
    target: "{{ gateway.selfLink }}"
    ip_protocol: UDP
    port_range: 500-500
    ip_address: "{{ address_forwardingrule.address }}"
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: present
  register: result
- name: Create a UDP-4500 forwarding rule
  google.cloud.gcp_compute_forwarding_rule:
    name: "{{ resource_name }}-udp-4500"
    region: us-central1
    target: "{{ gateway.selfLink }}"
    ip_protocol: UDP
    port_range: 4500-4500
    ip_address: "{{ address_forwardingrule.address }}"
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: present
  register: result
- name: Delete a vpn tunnel
  google.cloud.gcp_compute_vpn_tunnel:
    name: "{{ resource_name }}"
    region: us-central1
    target_vpn_gateway: "{{ gateway }}"
    router: "{{ router }}"
    shared_secret: super secret
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    peer_ip: "{{ address.address }}"
    state: absent
#----------------------------------------------------------
- name: Create a vpn tunnel
  google.cloud.gcp_compute_vpn_tunnel:
    name: "{{ resource_name }}"
    region: us-central1
    target_vpn_gateway: "{{ gateway }}"
    router: "{{ router }}"
    shared_secret: super secret
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    peer_ip: "{{ address.address }}"
    state: present
  register: result
- name: Assert changed is true
  ansible.builtin.assert:
    that:
      - result.changed == true
- name: Verify that vpn_tunnel was created
  google.cloud.gcp_compute_vpn_tunnel_info:
    filters:
      - name = {{ resource_name }}
    region: us-central1
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    scopes:
      - https://www.googleapis.com/auth/compute
  register: results
- name: Verify that command succeeded
  ansible.builtin.assert:
    that:
      - results['resources'] | length == 1
# ----------------------------------------------------------------------------
- name: Create a vpn tunnel that already exists
  google.cloud.gcp_compute_vpn_tunnel:
    name: "{{ resource_name }}"
    region: us-central1
    target_vpn_gateway: "{{ gateway }}"
    router: "{{ router }}"
    peer_ip: "{{ address.address }}"
    shared_secret: super secret
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: present
  register: result
- name: Assert changed is false
  ansible.builtin.assert:
    that:
      - result.changed == false
#----------------------------------------------------------
- name: Delete a vpn tunnel
  google.cloud.gcp_compute_vpn_tunnel:
    name: "{{ resource_name }}"
    region: us-central1
    target_vpn_gateway: "{{ gateway }}"
    router: "{{ router }}"
    peer_ip: "{{ address.address }}"
    shared_secret: super secret
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: absent
  register: result
- name: Assert changed is true
  ansible.builtin.assert:
    that:
      - result.changed == true
- name: Verify that vpn_tunnel was deleted
  google.cloud.gcp_compute_vpn_tunnel_info:
    filters:
      - name = {{ resource_name }}
    region: us-central1
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    scopes:
      - https://www.googleapis.com/auth/compute
  register: results
- name: Verify that command succeeded
  ansible.builtin.assert:
    that:
      - results['resources'] | length == 0
# ----------------------------------------------------------------------------
- name: Delete a vpn tunnel that does not exist
  google.cloud.gcp_compute_vpn_tunnel:
    name: "{{ resource_name }}"
    region: us-central1
    target_vpn_gateway: "{{ gateway }}"
    router: "{{ router }}"
    peer_ip: "{{ address.address }}"
    shared_secret: super secret
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: absent
  register: result
- name: Assert changed is false
  ansible.builtin.assert:
    that:
      - result.changed == false
#---------------------------------------------------------
# Post-test teardown
- name: Delete a UDP-4500 forwarding rule
  google.cloud.gcp_compute_forwarding_rule:
    name: "{{ resource_name }}-udp-4500"
    region: us-central1
    target: "{{ gateway.selfLink }}"
    ip_protocol: UDP
    port_range: 4500-4500
    ip_address: "{{ address.address }}"
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: absent
  ignore_errors: true
  register: result
- name: Delete a UDP forwarding rule
  google.cloud.gcp_compute_forwarding_rule:
    name: "{{ resource_name }}-udp"
    region: us-central1
    target: "{{ gateway.selfLink }}"
    ip_protocol: UDP
    port_range: 500-500
    ip_address: "{{ address.address }}"
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: absent
  ignore_errors: true
  register: result
- name: Delete a forwarding rule
  google.cloud.gcp_compute_forwarding_rule:
    name: "{{ resource_name }}"
    region: us-central1
    target: "{{ gateway.selfLink }}"
    ip_protocol: ESP
    ip_address: 104.197.5.203
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: absent
  ignore_errors: true
  register: result
# If errors happen, don't crash the playbook!
- name: Delete a target vpn gateway
  google.cloud.gcp_compute_target_vpn_gateway:
    name: gateway-vpn-tunnel
    region: us-central1
    network: "{{ network }}"
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: absent
  register: gateway
  ignore_errors: true
- name: Delete a router
  google.cloud.gcp_compute_router:
    name: router-vpn-tunnel
    network: "{{ network }}"
    bgp:
      asn: 64514
      advertise_mode: CUSTOM
      advertised_groups:
        - ALL_SUBNETS
      advertised_ip_ranges:
        - range: 1.2.3.4
        - range: 6.7.0.0/16
    region: us-central1
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: absent
  register: router
  ignore_errors: true
- name: Delete a instance
  google.cloud.gcp_compute_instance:
    name: "{{ resource_name }}"
    machine_type: n1-standard-1
    disks:
      - auto_delete: "true"
        boot: "true"
        source: "{{ disk }}"
      - auto_delete: "true"
        interface: NVME
        type: SCRATCH
        initialize_params:
          disk_type: local-ssd
    metadata:
      cost-center: "12345"
    labels:
      environment: production
    network_interfaces:
      - network: "{{ network }}"
        access_configs:
          - name: External NAT
            nat_ip: "{{ address }}"
            type: ONE_TO_ONE_NAT
    zone: us-central1-a
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: absent
- name: Delete a disk
  google.cloud.gcp_compute_disk:
    name: "{{ resource_prefix }}"
    size_gb: 50
    source_image: projects/ubuntu-os-cloud/global/images/family/ubuntu-1604-lts
    zone: us-central1-a
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: absent
  register: disk
  ignore_errors: true
- name: Delete a network
  google.cloud.gcp_compute_network:
    name: network-vpn-tunnel
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    auto_create_subnetworks: true
    state: absent
  register: network
  ignore_errors: true
- name: Delete a address
  google.cloud.gcp_compute_address:
    name: address
    region: us-central1
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: absent
  register: address
  ignore_errors: true
