# Copyright 2019 Google Inc.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

---
# ----------------------------------------------------------------------------
#
#     ***     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: Delete a firewall
  google.cloud.gcp_compute_firewall:
    name: "{{ resource_name }}"
    allowed:
      - ip_protocol: tcp
        ports:
          - "22"
    target_tags:
      - test-ssh-server
      - staging-ssh-server
    source_tags:
      - test-ssh-clients
    project: "{{ gcp_project }}"
    auth_kind: "{{ gcp_cred_kind }}"
    service_account_file: "{{ gcp_cred_file | default(omit) }}"
    state: absent
#----------------------------------------------------------
- name: Create a firewall
  google.cloud.gcp_compute_firewall:
    name: "{{ resource_name }}"
    allowed:
      - ip_protocol: tcp
        ports:
          - "22"
    target_tags:
      - test-ssh-server
      - staging-ssh-server
    source_tags:
      - test-ssh-clients
    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 firewall was created
  google.cloud.gcp_compute_firewall_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: Update the firewall
  google.cloud.gcp_compute_firewall:
    name: "{{ resource_name }}"
    allowed:
      - ip_protocol: tcp
        ports:
          - "55"
    target_tags:
      - test-ssh-server
      - staging-ssh-server
    source_tags:
      - test-ssh-clients
    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: Check firewall was updated.
  google.cloud.gcp_compute_firewall_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: Verify that update succeeded
  ansible.builtin.assert:
    that:
      - results['resources'][0]['allowed'][0]['ports'][0] == '55'
#----------------------------------------------------------
- name: Delete a firewall
  google.cloud.gcp_compute_firewall:
    name: "{{ resource_name }}"
    allowed:
      - ip_protocol: tcp
        ports:
          - "22"
    target_tags:
      - test-ssh-server
      - staging-ssh-server
    source_tags:
      - test-ssh-clients
    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 firewall was deleted
  google.cloud.gcp_compute_firewall_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 firewall that does not exist
  google.cloud.gcp_compute_firewall:
    name: "{{ resource_name }}"
    allowed:
      - ip_protocol: tcp
        ports:
          - "22"
    target_tags:
      - test-ssh-server
      - staging-ssh-server
    source_tags:
      - test-ssh-clients
    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
