---
# ----------------------------------------------------------------------------
#
#     ***     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 network
  google.cloud.gcp_compute_network:
    name: network-instancetemplate
    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 address
  google.cloud.gcp_compute_address:
    name: address-instancetemplate
    region: us-west1
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: present
  register: address
- name: Delete a instance template
  google.cloud.gcp_compute_instance_template:
    name: "{{ resource_name }}"
    properties:
      disks:
        - auto_delete: "true"
          boot: "true"
          initialize_params:
            source_image: projects/ubuntu-os-cloud/global/images/family/ubuntu-minimal-2204-lts
      machine_type: n1-standard-1
      network_interfaces:
        - network: "{{ network }}"
          access_configs:
            - name: test-config
              type: ONE_TO_ONE_NAT
              nat_ip: "{{ address }}"
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: absent
#----------------------------------------------------------
- name: Create a instance template
  google.cloud.gcp_compute_instance_template:
    name: "{{ resource_name }}"
    properties:
      disks:
        - auto_delete: "true"
          boot: "true"
          initialize_params:
            source_image: projects/ubuntu-os-cloud/global/images/family/ubuntu-minimal-2204-lts
      machine_type: n1-standard-1
      network_interfaces:
        - network: "{{ network }}"
          access_configs:
            - name: test-config
              type: ONE_TO_ONE_NAT
              nat_ip: "{{ address }}"
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: present
  register: result
- name: Assert changed is true
  ansible.builtin.assert:
    that:
      - result.changed == true
- name: Verify that instance_template was created
  google.cloud.gcp_compute_instance_template_info:
    filters:
      - name = {{ resource_name }}
    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 instance template that already exists
  google.cloud.gcp_compute_instance_template:
    name: "{{ resource_name }}"
    properties:
      disks:
        - auto_delete: "true"
          boot: "true"
          initialize_params:
            source_image: projects/ubuntu-os-cloud/global/images/family/ubuntu-minimal-2204-lts
      machine_type: n1-standard-1
      network_interfaces:
        - network: "{{ network }}"
          access_configs:
            - name: test-config
              type: ONE_TO_ONE_NAT
              nat_ip: "{{ address }}"
    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 instance template
  google.cloud.gcp_compute_instance_template:
    name: "{{ resource_name }}"
    properties:
      disks:
        - auto_delete: "true"
          boot: "true"
          initialize_params:
            source_image: projects/ubuntu-os-cloud/global/images/family/ubuntu-minimal-2204-lts
      machine_type: n1-standard-1
      network_interfaces:
        - network: "{{ network }}"
          access_configs:
            - name: test-config
              type: ONE_TO_ONE_NAT
              nat_ip: "{{ address }}"
    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 instance_template was deleted
  google.cloud.gcp_compute_instance_template_info:
    filters:
      - name = {{ resource_name }}
    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 instance template that does not exist
  google.cloud.gcp_compute_instance_template:
    name: "{{ resource_name }}"
    properties:
      disks:
        - auto_delete: "true"
          boot: "true"
          initialize_params:
            source_image: projects/ubuntu-os-cloud/global/images/family/ubuntu-minimal-2204-lts
      machine_type: n1-standard-1
      network_interfaces:
        - network: "{{ network }}"
          access_configs:
            - name: test-config
              type: ONE_TO_ONE_NAT
              nat_ip: "{{ address }}"
    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
# If errors happen, don't crash the playbook!
- name: Delete a address
  google.cloud.gcp_compute_address:
    name: address-instancetemplate
    region: us-west1
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: absent
  register: address
  ignore_errors: true
- name: Delete a network
  google.cloud.gcp_compute_network:
    name: network-instancetemplate
    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
