mirror of
https://github.com/ansible-collections/ansible.posix.git
synced 2026-01-11 15:15:26 +01:00
Compare commits
3 commits
b6587a783e
...
cddfa80d84
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cddfa80d84 | ||
|
|
9575b9be64 | ||
|
|
4229db1bbe |
4 changed files with 100 additions and 7 deletions
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
bugfixes:
|
||||||
|
- firewall - Fix issue where adding an interface to a zone would fail when the daemon is offline
|
||||||
|
|
@ -520,6 +520,7 @@ class InterfaceTransaction(FirewallTransaction):
|
||||||
old_zone_obj = self.fw.config.get_zone(zone)
|
old_zone_obj = self.fw.config.get_zone(zone)
|
||||||
if interface in old_zone_obj.interfaces:
|
if interface in old_zone_obj.interfaces:
|
||||||
iface_zone_objs.append(old_zone_obj)
|
iface_zone_objs.append(old_zone_obj)
|
||||||
|
|
||||||
if len(iface_zone_objs) > 1:
|
if len(iface_zone_objs) > 1:
|
||||||
# Even it shouldn't happen, it's actually possible that
|
# Even it shouldn't happen, it's actually possible that
|
||||||
# the same interface is in several zone XML files
|
# the same interface is in several zone XML files
|
||||||
|
|
@ -529,18 +530,17 @@ class InterfaceTransaction(FirewallTransaction):
|
||||||
len(iface_zone_objs)
|
len(iface_zone_objs)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
old_zone_obj = iface_zone_objs[0]
|
elif len(iface_zone_objs) == 1 and iface_zone_objs[0].name != self.zone:
|
||||||
if old_zone_obj.name != self.zone:
|
old_zone_obj = iface_zone_objs[0]
|
||||||
old_zone_settings = FirewallClientZoneSettings(
|
old_zone_config = self.fw.config.get_zone_config(old_zone_obj)
|
||||||
self.fw.config.get_zone_config(old_zone_obj)
|
old_zone_settings = FirewallClientZoneSettings(list(old_zone_config))
|
||||||
)
|
|
||||||
old_zone_settings.removeInterface(interface) # remove from old
|
old_zone_settings.removeInterface(interface) # remove from old
|
||||||
self.fw.config.set_zone_config(
|
self.fw.config.set_zone_config(
|
||||||
old_zone_obj,
|
old_zone_obj,
|
||||||
old_zone_settings.settings
|
old_zone_settings.settings
|
||||||
)
|
)
|
||||||
fw_settings.addInterface(interface) # add to new
|
fw_settings.addInterface(interface) # add to new
|
||||||
self.fw.config.set_zone_config(fw_zone, fw_settings.settings)
|
self.fw.config.set_zone_config(fw_zone, fw_settings.settings)
|
||||||
else:
|
else:
|
||||||
old_zone_name = self.fw.config().getZoneOfInterface(interface)
|
old_zone_name = self.fw.config().getZoneOfInterface(interface)
|
||||||
if old_zone_name != self.zone:
|
if old_zone_name != self.zone:
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,87 @@
|
||||||
|
# Test playbook for the firewalld module - interface operations
|
||||||
|
# (c) 2022, Gregory Furlong <gnfzdz@fzdz.io>
|
||||||
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
|
|
||||||
|
- name: Validate adding interface
|
||||||
|
block:
|
||||||
|
- name: Add lo interface to trusted zone
|
||||||
|
ansible.posix.firewalld:
|
||||||
|
interface: lo
|
||||||
|
zone: trusted
|
||||||
|
permanent: Yes
|
||||||
|
state: enabled
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- name: assert lo was added to trusted zone
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- result is changed
|
||||||
|
|
||||||
|
- name: Add lo interface to trusted zone (verify not changed)
|
||||||
|
ansible.posix.firewalld:
|
||||||
|
interface: lo
|
||||||
|
zone: trusted
|
||||||
|
permanent: Yes
|
||||||
|
state: enabled
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- name: assert lo was added to trusted zone (verify not changed)
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- result is not changed
|
||||||
|
|
||||||
|
- name: Validate moving interfaces
|
||||||
|
block:
|
||||||
|
- name: Move lo interface from trusted zone to internal zone
|
||||||
|
ansible.posix.firewalld:
|
||||||
|
interface: lo
|
||||||
|
zone: internal
|
||||||
|
permanent: Yes
|
||||||
|
state: enabled
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- name: Assert lo was moved from trusted zone to internal zone
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- result is changed
|
||||||
|
|
||||||
|
- name: Move lo interface from trusted zone to internal zone (verify not changed)
|
||||||
|
ansible.posix.firewalld:
|
||||||
|
interface: lo
|
||||||
|
zone: internal
|
||||||
|
permanent: Yes
|
||||||
|
state: enabled
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- name: assert lo was moved from trusted zone to internal zone (verify not changed)
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- result is not changed
|
||||||
|
|
||||||
|
- name: Validate removing interface
|
||||||
|
block:
|
||||||
|
- name: Remove lo interface from internal zone
|
||||||
|
ansible.posix.firewalld:
|
||||||
|
interface: lo
|
||||||
|
zone: internal
|
||||||
|
permanent: Yes
|
||||||
|
state: disabled
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- name: Assert lo interface was removed from internal zone
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- result is changed
|
||||||
|
|
||||||
|
- name: Remove lo interface from internal zone (verify not changed)
|
||||||
|
ansible.posix.firewalld:
|
||||||
|
interface: lo
|
||||||
|
zone: internal
|
||||||
|
permanent: Yes
|
||||||
|
state: disabled
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- name: Assert lo interface was removed from internal zone (verify not changed)
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- result is not changed
|
||||||
|
|
@ -27,3 +27,6 @@
|
||||||
|
|
||||||
# firewalld port forwarding operation test cases
|
# firewalld port forwarding operation test cases
|
||||||
- include_tasks: port_forward_test_cases.yml
|
- include_tasks: port_forward_test_cases.yml
|
||||||
|
|
||||||
|
# firewalld interface operation test cases
|
||||||
|
- include_tasks: interface_test_cases.yml
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue