---
# ----------------------------------------------------------------------------
#
#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
#
# ----------------------------------------------------------------------------
#
#     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
  gcp_compute_network:
      name: 'network-instancetemplate'
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      scopes:
        - https://www.googleapis.com/auth/compute
      state: present
  register: network
- name: create a address
  gcp_compute_address:
      name: 'address-instancetemplate'
      region: 'us-west1'
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      scopes:
        - https://www.googleapis.com/auth/compute
      state: present
  register: address
- name: create a instance template
  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-1604-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 }}"
      scopes:
        - https://www.googleapis.com/auth/compute
      state: present
  register: instancetemplate
- name: delete a instance group manager
  gcp_compute_instance_group_manager:
      name: "{{ resource_name }}"
      base_instance_name: 'test1-child'
      instance_template: "{{ instancetemplate }}"
      target_size: 3
      zone: 'us-west1-a'
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      scopes:
        - https://www.googleapis.com/auth/compute
      state: absent
#----------------------------------------------------------
- name: create a instance group manager
  gcp_compute_instance_group_manager:
      name: "{{ resource_name }}"
      base_instance_name: 'test1-child'
      instance_template: "{{ instancetemplate }}"
      target_size: 3
      zone: 'us-west1-a'
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      scopes:
        - https://www.googleapis.com/auth/compute
      state: present
  register: result
- name: assert changed is true
  assert:
    that:
      - result.changed == true
      - "result.kind == 'compute#instanceGroupManager'"
- name: verify that instance_group_manager was created
  shell: |
    gcloud compute instance-groups managed describe  --zone=us-west1-a  --project="{{ gcp_project}}"  "{{ resource_name }}"
  register: results
- name: verify that command succeeded
  assert:
    that:
      - results.rc == 0
# ----------------------------------------------------------------------------
- name: create a instance group manager that already exists
  gcp_compute_instance_group_manager:
      name: "{{ resource_name }}"
      base_instance_name: 'test1-child'
      instance_template: "{{ instancetemplate }}"
      target_size: 3
      zone: 'us-west1-a'
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      scopes:
        - https://www.googleapis.com/auth/compute
      state: present
  register: result
- name: assert changed is false
  assert:
    that:
      - result.changed == false
      - "result.kind == 'compute#instanceGroupManager'"
#----------------------------------------------------------
- name: delete a instance group manager
  gcp_compute_instance_group_manager:
      name: "{{ resource_name }}"
      base_instance_name: 'test1-child'
      instance_template: "{{ instancetemplate }}"
      target_size: 3
      zone: 'us-west1-a'
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      scopes:
        - https://www.googleapis.com/auth/compute
      state: absent
  register: result
- name: assert changed is true
  assert:
    that:
      - result.changed == true
      - result.has_key('kind') == False
- name: verify that instance_group_manager was deleted
  shell: |
    gcloud compute instance-groups managed describe  --zone=us-west1-a  --project="{{ gcp_project}}"  "{{ resource_name }}"
  register: results
  failed_when: results.rc == 0
- name: verify that command succeeded
  assert:
    that:
      - results.rc == 1
      - "\"'projects/{{ gcp_project }}/zones/us-west1-a/instanceGroupManagers/{{ resource_name }}' was not found\" in results.stderr"
# ----------------------------------------------------------------------------
- name: delete a instance group manager that does not exist
  gcp_compute_instance_group_manager:
      name: "{{ resource_name }}"
      base_instance_name: 'test1-child'
      instance_template: "{{ instancetemplate }}"
      target_size: 3
      zone: 'us-west1-a'
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      scopes:
        - https://www.googleapis.com/auth/compute
      state: absent
  register: result
- name: assert changed is false
  assert:
    that:
      - result.changed == false
      - result.has_key('kind') == False
#---------------------------------------------------------
# Post-test teardown
- name: delete a instance template
  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-1604-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 }}"
      scopes:
        - https://www.googleapis.com/auth/compute
      state: absent
  register: instancetemplate
- name: delete a address
  gcp_compute_address:
      name: 'address-instancetemplate'
      region: 'us-west1'
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      scopes:
        - https://www.googleapis.com/auth/compute
      state: absent
  register: address
- name: delete a network
  gcp_compute_network:
      name: 'network-instancetemplate'
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      scopes:
        - https://www.googleapis.com/auth/compute
      state: absent
  register: network
