summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Miller <admiller@redhat.com>2019-10-10 14:54:40 -0500
committerToshio Kuratomi <a.badger@gmail.com>2019-10-11 07:37:32 -0700
commitd59de7123aa204199cc5e37530ed878774908b29 (patch)
tree246038b99aaf7323b63785a417a631537edf9d72
parentbaeff7462d5d877b6849aa78f50860e7d10ce950 (diff)
downloadansible-d59de7123aa204199cc5e37530ed878774908b29.tar.gz
adapt to firewalld 0.7.0 for RHEL 8.1 Beta, Fedora 31+
Fixes #63254 Signed-off-by: Adam Miller <admiller@redhat.com>
-rw-r--r--changelogs/fragments/firewalld-version-0_7_0.yml2
-rw-r--r--lib/ansible/module_utils/firewalld.py15
-rw-r--r--test/integration/targets/firewalld/aliases1
-rw-r--r--test/integration/targets/firewalld/tasks/main.yml20
4 files changed, 31 insertions, 7 deletions
diff --git a/changelogs/fragments/firewalld-version-0_7_0.yml b/changelogs/fragments/firewalld-version-0_7_0.yml
new file mode 100644
index 0000000000..c86651a45a
--- /dev/null
+++ b/changelogs/fragments/firewalld-version-0_7_0.yml
@@ -0,0 +1,2 @@
+bugfixes:
+ - firewalld - enable the firewalld module to function offline with firewalld version 0.7.0 and newer (https://github.com/ansible/ansible/issues/63254)
diff --git a/lib/ansible/module_utils/firewalld.py b/lib/ansible/module_utils/firewalld.py
index 38453af225..b44e0316aa 100644
--- a/lib/ansible/module_utils/firewalld.py
+++ b/lib/ansible/module_utils/firewalld.py
@@ -8,7 +8,7 @@ from distutils.version import LooseVersion
FW_VERSION = None
fw = None
-fw_offline = None
+fw_offline = False
import_failure = True
try:
import firewall.config
@@ -17,12 +17,12 @@ try:
from firewall.client import FirewallClient
from firewall.client import FirewallClientZoneSettings
from firewall.errors import FirewallError
- fw_offline = False
import_failure = False
try:
fw = FirewallClient()
fw.getDefaultZone()
+
except (AttributeError, FirewallError):
# Firewalld is not currently running, permanent-only operations
fw_offline = True
@@ -31,10 +31,15 @@ try:
#
# NOTE:
# online and offline operations do not share a common firewalld API
- from firewall.core.fw_test import Firewall_test
- fw = Firewall_test()
- fw.start()
+ try:
+ from firewall.core.fw_test import Firewall_test
+ fw = Firewall_test()
+ except (ModuleNotFoundError):
+ # In firewalld version 0.7.0 this behavior changed
+ from firewall.core.fw import Firewall
+ fw = Firewall(offline=True)
+ fw.start()
except ImportError:
pass
diff --git a/test/integration/targets/firewalld/aliases b/test/integration/targets/firewalld/aliases
index 2fb3adfc4c..437b04d643 100644
--- a/test/integration/targets/firewalld/aliases
+++ b/test/integration/targets/firewalld/aliases
@@ -2,4 +2,3 @@ destructive
shippable/posix/group3
skip/freebsd
skip/osx
-skip/rhel8.1b
diff --git a/test/integration/targets/firewalld/tasks/main.yml b/test/integration/targets/firewalld/tasks/main.yml
index b441d6f287..786edd3a78 100644
--- a/test/integration/targets/firewalld/tasks/main.yml
+++ b/test/integration/targets/firewalld/tasks/main.yml
@@ -29,8 +29,26 @@
register: check_output
ignore_errors: true
- - import_tasks: run_all_tests.yml
+ - 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:
- not (ansible_os_family == "RedHat" and ansible_distribution_major_version|int < 7)
- not (ansible_distribution == "Ubuntu" and ansible_distribution_version == "14.04")