Skip to content

Commit 16e6d99

Browse files
committed
provision: reload the firewall only once
1 parent d5e054f commit 16e6d99

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

src/utils/resources.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1153,7 +1153,9 @@ def __init__(self, properties: Dict[str, Any], *args, **kwargs):
11531153

11541154
for key, values in self.extras.items():
11551155
if isinstance(values.get("packages"), str):
1156-
values["packages"] = [value.strip() for value in values["packages"].split(",")] # type: ignore
1156+
values["packages"] = [
1157+
value.strip() for value in values["packages"].split(",")
1158+
] # type: ignore
11571159

11581160
if isinstance(values.get("packages_from_raw_bash"), str):
11591161
out, err = self.check_output_bash_snippet(
@@ -1164,7 +1166,9 @@ def __init__(self, properties: Dict[str, Any], *args, **kwargs):
11641166
f"Error while running apt resource packages_from_raw_bash snippet for '{key}' extras:"
11651167
)
11661168
logger.error(err)
1167-
values["packages"] = values.get("packages", []) + [value.strip() for value in out.split("\n")] # type: ignore
1169+
values["packages"] = values.get("packages", []) + [
1170+
value.strip() for value in out.split("\n")
1171+
] # type: ignore
11681172

11691173
if (
11701174
not isinstance(values.get("repo"), str)
@@ -1291,7 +1295,14 @@ def _port_is_used(self, port):
12911295
return used_by_process or used_by_app or used_by_self_provisioning
12921296

12931297
def provision_or_update(self, context: Dict = {}):
1294-
from yunohost.firewall import firewall_allow, firewall_disallow
1298+
from yunohost.firewall import (
1299+
firewall_allow,
1300+
firewall_disallow,
1301+
firewall_list,
1302+
firewall_reload,
1303+
)
1304+
1305+
previous_ports = firewall_list(raw=True)
12951306

12961307
for name, infos in self.ports.items():
12971308
setting_name = f"port_{name}" if name != "main" else "port"
@@ -1322,11 +1333,12 @@ def provision_or_update(self, context: Dict = {}):
13221333
self.set_setting(setting_name, port_value)
13231334

13241335
if infos["exposed"]:
1325-
firewall_allow(infos["exposed"], port_value, reload_only_if_change=True)
1336+
firewall_allow(infos["exposed"], port_value, no_reload=True)
13261337
else:
1327-
firewall_disallow(
1328-
infos["exposed"], port_value, reload_only_if_change=True
1329-
)
1338+
firewall_disallow(infos["exposed"], port_value, no_reload=True)
1339+
1340+
if firewall_list(raw=True) != previous_ports:
1341+
firewall_reload()
13301342

13311343
def deprovision(self, context: Dict = {}):
13321344
from yunohost.firewall import firewall_disallow

0 commit comments

Comments
 (0)