# Test playbook for the firewalld module
# (c) 2017, Adam Miller <admiller@redhat.com>

# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible.  If not, see <http://www.gnu.org/licenses/>.

- name: Run firewalld tests
  block:
    - name: Ensure firewalld is installed
      package:
        name: firewalld
        state: present
      # This doesn't work for CentOS 6 because firewalld doesn't exist in CentOS6

    - name: Check to make sure the firewalld python module is available.
      shell: "{{ansible_python.executable}} -c 'import firewall'"
      register: check_output
      ignore_errors: true

    - name: Test Online Operations
      block:
        - name: start firewalld
          service:
            name: firewalld
            state: started

        - import_tasks: run_all_tests.yml
      when: check_output.rc == 0

    - name: Test Offline Operations
      block:
        - name: stop firewalld
          service:
            name: firewalld
            state: stopped

        - import_tasks: run_all_tests.yml
      when: check_output.rc == 0

  when:
  - ansible_facts.os_family == "RedHat" and ansible_facts.distribution_major_version is version('7', '>=')
  - not (ansible_distribution == "Ubuntu" and ansible_distribution_version is version('14.04', '=='))
  # Firewalld package on OpenSUSE (15+) require Python 3, so we skip on OpenSUSE running py2 on these newer distros
  - not (ansible_os_family == "Suse" and ansible_distribution_major_version|int != 42 and ansible_python.version.major != 3)
