---
# ----------------------------------------------------------------------------
#
#     ***     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 disk
  gcp_compute_disk:
      name: "disk-instance"
      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 }}"
      state: present
  register: disk
- name: create a network
  gcp_compute_network:
      name: "network-instance"
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      state: present
  register: network
- name: create a address
  gcp_compute_address:
      name: "address-instance"
      region: us-central1
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      state: present
  register: address
- name: delete a instance
  gcp_compute_instance:
      name: "{{ resource_name }}"
      machine_type: n1-standard-1
      disks:
      - auto_delete: true
        boot: true
        source: "{{ disk }}"
      metadata:
        startup-script-url: gs:://graphite-playground/bootstrap.sh
        cost-center: '12345'
      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 }}"
      state: absent
#----------------------------------------------------------
- name: create a instance
  gcp_compute_instance:
      name: "{{ resource_name }}"
      machine_type: n1-standard-1
      disks:
      - auto_delete: true
        boot: true
        source: "{{ disk }}"
      metadata:
        startup-script-url: gs:://graphite-playground/bootstrap.sh
        cost-center: '12345'
      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 }}"
      state: present
  register: result
- name: assert changed is true
  assert:
    that:
      - result.changed == true
      - "result.kind == 'compute#instance'"
- name: verify that instance was created
  gcp_compute_instance_facts:
      filters:
         - name = {{ resource_name }}
      zone: us-central1-a
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      scopes:
        - https://www.googleapis.com/auth/compute
  register: results
- name: verify that command succeeded
  assert:
    that:
      - results['items'] | length == 1
# ----------------------------------------------------------------------------
- name: create a instance that already exists
  gcp_compute_instance:
      name: "{{ resource_name }}"
      machine_type: n1-standard-1
      disks:
      - auto_delete: true
        boot: true
        source: "{{ disk }}"
      metadata:
        startup-script-url: gs:://graphite-playground/bootstrap.sh
        cost-center: '12345'
      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 }}"
      state: present
  register: result
- name: assert changed is false
  assert:
    that:
      - result.changed == false
      - "result.kind == 'compute#instance'"
#----------------------------------------------------------
- name: delete a instance
  gcp_compute_instance:
      name: "{{ resource_name }}"
      machine_type: n1-standard-1
      disks:
      - auto_delete: true
        boot: true
        source: "{{ disk }}"
      metadata:
        startup-script-url: gs:://graphite-playground/bootstrap.sh
        cost-center: '12345'
      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 }}"
      state: absent
  register: result
- name: assert changed is true
  assert:
    that:
      - result.changed == true
      - result.has_key('kind') == False
- name: verify that instance was deleted
  gcp_compute_instance_facts:
      filters:
         - name = {{ resource_name }}
      zone: us-central1-a
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      scopes:
        - https://www.googleapis.com/auth/compute
  register: results
- name: verify that command succeeded
  assert:
    that:
      - results['items'] | length == 0
# ----------------------------------------------------------------------------
- name: delete a instance that does not exist
  gcp_compute_instance:
      name: "{{ resource_name }}"
      machine_type: n1-standard-1
      disks:
      - auto_delete: true
        boot: true
        source: "{{ disk }}"
      metadata:
        startup-script-url: gs:://graphite-playground/bootstrap.sh
        cost-center: '12345'
      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 }}"
      state: absent
  register: result
- name: assert changed is false
  assert:
    that:
      - result.changed == false
      - result.has_key('kind') == False
#---------------------------------------------------------
# Post-test teardown
# If errors happen, don't crash the playbook!
- name: delete a address
  gcp_compute_address:
      name: "address-instance"
      region: us-central1
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      state: absent
  register: address
  ignore_errors: true
- name: delete a network
  gcp_compute_network:
      name: "network-instance"
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      state: absent
  register: network
  ignore_errors: true
- name: delete a disk
  gcp_compute_disk:
      name: "disk-instance"
      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 }}"
      state: absent
  register: disk
  ignore_errors: true