summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changelogs/fragments/T6833_fw_rules_limit.yaml3
-rw-r--r--plugins/module_utils/network/vyos/config/firewall_rules/firewall_rules.py2
-rw-r--r--plugins/module_utils/network/vyos/facts/firewall_rules/firewall_rules.py30
3 files changed, 23 insertions, 12 deletions
diff --git a/changelogs/fragments/T6833_fw_rules_limit.yaml b/changelogs/fragments/T6833_fw_rules_limit.yaml
new file mode 100644
index 0000000..332001b
--- /dev/null
+++ b/changelogs/fragments/T6833_fw_rules_limit.yaml
@@ -0,0 +1,3 @@
+---
+minor_changes:
+ - firewall_rules - Fix limit parameter processing
diff --git a/plugins/module_utils/network/vyos/config/firewall_rules/firewall_rules.py b/plugins/module_utils/network/vyos/config/firewall_rules/firewall_rules.py
index bacc450..2942b19 100644
--- a/plugins/module_utils/network/vyos/config/firewall_rules/firewall_rules.py
+++ b/plugins/module_utils/network/vyos/config/firewall_rules/firewall_rules.py
@@ -778,7 +778,7 @@ class Firewall_rules(ConfigBase):
if opr and not (
h_limit
and self._is_w_same(rate, h_limit, "unit")
- and self.is_w_same(rate, h_limit, "number")
+ and self._is_w_same(rate, h_limit, "number")
):
commands.append(
cmd
diff --git a/plugins/module_utils/network/vyos/facts/firewall_rules/firewall_rules.py b/plugins/module_utils/network/vyos/facts/firewall_rules/firewall_rules.py
index c760e4d..a6b5634 100644
--- a/plugins/module_utils/network/vyos/facts/firewall_rules/firewall_rules.py
+++ b/plugins/module_utils/network/vyos/facts/firewall_rules/firewall_rules.py
@@ -429,17 +429,6 @@ class Firewall_rulesFacts(object):
cfg_dict["rate"] = self.parse_rate(conf, "rate")
return cfg_dict
- def parse_rate(self, conf, attrib=None):
- """
- This function triggers the parsing of 'rate' attributes.
- :param conf: configuration.
- :param attrib: 'rate'
- :return: generated config dictionary.
- """
- a_lst = ["unit", "number"]
- cfg_dict = self.parse_attr(conf, a_lst, match=attrib)
- return cfg_dict
-
def parse_attr(self, conf, attr_list, match=None):
"""
This function peforms the following:
@@ -472,6 +461,7 @@ class Firewall_rulesFacts(object):
if attrib == 'log':
out = search(r"^.*\d+" + " (log$)", conf, M)
if out:
+
val = out.group(1).strip("'")
if self.is_num(attrib):
val = int(val)
@@ -519,3 +509,21 @@ class Firewall_rulesFacts(object):
"""
num_set = ("time", "code", "type", "count", "burst", "number")
return True if attrib in num_set else False
+
+ def parse_rate(self, conf, match):
+ """
+ This function triggers the parsing of 'rate' attributes.
+ :param conf: configuration.
+ :param attrib: 'rate'
+ :return: generated config dictionary.
+ """
+ config = {}
+
+ out = search(r"^.*" + match + " (.+)", conf, M)
+ if out:
+ val = out.group(1).strip("'")
+ if "/" in val: # number/unit
+ (number, unit) = val.split("/")
+ config['number'] = number
+ config['unit'] = unit
+ return config