---
# ----------------------------------------------------------------------------
#
#     ***     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 instance
  google.cloud.gcp_spanner_instance:
    name: instance-database
    display_name: My Spanner Instance
    node_count: 2
    labels:
      cost_center: ti-1700004
    config: regional-us-central1
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file }}"
    state: present
  register: instance
- name: delete a database
  google.cloud.gcp_spanner_database:
    name: webstore
    instance: "{{ instance }}"
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file }}"
    state: absent
#----------------------------------------------------------
- name: create a database
  google.cloud.gcp_spanner_database:
    name: webstore
    instance: "{{ instance }}"
    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
- name: verify that database was created
  google.cloud.gcp_spanner_database_info:
      instance: "{{ instance }}"
      project: "{{ gcp_project }}"
      auth_kind: "{{ gcp_cred_kind }}"
      service_account_file: "{{ gcp_cred_file }}"
      scopes:
        - https://www.googleapis.com/auth/spanner.admin
  register: results
- name: verify that command succeeded
  assert:
    that:
      - results['resources'] | map(attribute='name') | select("match", ".*webstore.*") | list | length == 1
# ----------------------------------------------------------------------------
- name: create a database that already exists
  google.cloud.gcp_spanner_database:
    name: webstore
    instance: "{{ instance }}"
    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
#----------------------------------------------------------
- name: delete a database
  google.cloud.gcp_spanner_database:
    name: webstore
    instance: "{{ instance }}"
    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
# commented out due to a flakey List endpoint
# on the spanner API. (requests continue to return
# 404s intermittently).
# uncomment if it's desired to test the info.
# - name: verify that database was deleted
#   google.cloud.gcp_spanner_database_info:
#       instance: "{{ instance }}"
#       project: "{{ gcp_project }}"
#       auth_kind: "{{ gcp_cred_kind }}"
#       service_account_file: "{{ gcp_cred_file }}"
#       scopes:
#         - https://www.googleapis.com/auth/spanner.admin
#   register: results
# - name: verify that command succeeded
#   assert:
#     that:
#       - results['resources'] | map(attribute='name') | select("match", ".*webstore.*") | list | length == 0
# ----------------------------------------------------------------------------
- name: delete a database that does not exist
  google.cloud.gcp_spanner_database:
    name: webstore
    instance: "{{ instance }}"
    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
#---------------------------------------------------------
# Post-test teardown
# If errors happen, don't crash the playbook!
- name: delete a instance
  google.cloud.gcp_spanner_instance:
    name: instance-database
    display_name: My Spanner Instance
    node_count: 2
    labels:
      cost_center: ti-1700004
    config: regional-us-central1
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file }}"
    state: absent
  register: instance
  ignore_errors: true
