Skip to content

Commit a70270b

Browse files
committed
actors: add FirewalldIptablesModules
This actor will check if firewalld is using iptables, if so it will cause kernel-module-extra to be installed.
1 parent ce41185 commit a70270b

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from leapp.actors import Actor
2+
from leapp.models import (
3+
FirewalldDirectConfig,
4+
FirewalldGlobalConfig,
5+
FirewallsFacts,
6+
RpmTransactionTasks,
7+
)
8+
from leapp.tags import ChecksPhaseTag, IPUWorkflowTag
9+
10+
11+
class FirewalldIptablesModules(Actor):
12+
"""
13+
This actor cause kernel-modules-extra to be installed if firewalld is using
14+
iptables.
15+
"""
16+
17+
name = 'firewalld_iptables_modules'
18+
consumes = (FirewallsFacts, FirewalldGlobalConfig, FirewalldDirectConfig)
19+
produces = (RpmTransactionTasks,)
20+
tags = (ChecksPhaseTag, IPUWorkflowTag)
21+
22+
def process(self):
23+
# If firewalld is not enabled then don't bother the user about its
24+
# configuration.
25+
for facts in self.consume(FirewallsFacts):
26+
if not facts.firewalld.enabled:
27+
return
28+
29+
flag = False
30+
31+
for config in self.consume(FirewalldGlobalConfig):
32+
if config.firewallbackend == "iptables":
33+
flag = True
34+
break
35+
36+
for config in self.consume(FirewalldDirectConfig):
37+
if config.has_permanent_configuration:
38+
flag = True
39+
break
40+
41+
if flag:
42+
self.produce(RpmTransactionTasks(to_install=['kernel-modules-extra']))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
from leapp.models import (
2+
FirewalldDirectConfig,
3+
FirewalldGlobalConfig,
4+
FirewallsFacts,
5+
FirewallStatus,
6+
RpmTransactionTasks
7+
)
8+
9+
10+
def test_produce(current_actor_context):
11+
status = FirewallStatus(enabled=True, active=True)
12+
current_actor_context.feed(FirewallsFacts(firewalld=status,
13+
iptables=status,
14+
ip6tables=status))
15+
current_actor_context.feed(FirewalldGlobalConfig(firewallbackend='iptables'))
16+
current_actor_context.run()
17+
assert current_actor_context.consume(RpmTransactionTasks)[0].to_install[0] == 'kernel-modules-extra'
18+
19+
20+
def test_produce_02(current_actor_context):
21+
status = FirewallStatus(enabled=True, active=True)
22+
current_actor_context.feed(FirewallsFacts(firewalld=status,
23+
iptables=status,
24+
ip6tables=status))
25+
current_actor_context.feed(FirewalldDirectConfig(has_permanent_configuration=True))
26+
current_actor_context.run()
27+
assert current_actor_context.consume(RpmTransactionTasks)[0].to_install[0] == 'kernel-modules-extra'
28+
29+
30+
def test_no_produce_negative(current_actor_context):
31+
current_actor_context.feed(FirewalldGlobalConfig())
32+
current_actor_context.run()
33+
assert not current_actor_context.consume(RpmTransactionTasks)
34+
35+
36+
def test_no_produce_negative_02(current_actor_context):
37+
status = FirewallStatus(enabled=False, active=True)
38+
current_actor_context.feed(FirewallsFacts(firewalld=status,
39+
iptables=status,
40+
ip6tables=status))
41+
current_actor_context.feed(FirewalldGlobalConfig(firewallbackend='iptables'))
42+
current_actor_context.run()
43+
assert not current_actor_context.consume(RpmTransactionTasks)
44+
45+
46+
def test_no_produce_negative_03(current_actor_context):
47+
current_actor_context.feed(FirewalldDirectConfig())
48+
current_actor_context.run()
49+
assert not current_actor_context.consume(RpmTransactionTasks)

0 commit comments

Comments
 (0)