From 6d132e27b431fc4668f5ecd8aedbeb2b7dcfc3f4 Mon Sep 17 00:00:00 2001 From: Mattie Nickson Date: Wed, 4 Jun 2025 17:59:49 +0100 Subject: [PATCH] Fixed validation of no condition rules Previously, when processing rules with no condition, an extra RuleWithPattern rule was also added to the rule list causing a validation error. This has been corrected. Signed-off-by: Mattie Nickson --- hyperglass/models/directive.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/hyperglass/models/directive.py b/hyperglass/models/directive.py index 058eaae..df6d7d8 100644 --- a/hyperglass/models/directive.py +++ b/hyperglass/models/directive.py @@ -282,14 +282,15 @@ class Directive(HyperglassUniqueModel, unique_by=("id", "table_output")): condition = rule.get("condition") if condition is None: out_rules.append(RuleWithoutValidation(**rule)) - try: - condition_net = ip_network(condition) - if condition_net.version == 4: - out_rules.append(RuleWithIPv4(**rule)) - if condition_net.version == 6: - out_rules.append(RuleWithIPv6(**rule)) - except ValueError: - out_rules.append(RuleWithPattern(**rule)) + else: + try: + condition_net = ip_network(condition) + if condition_net.version == 4: + out_rules.append(RuleWithIPv4(**rule)) + if condition_net.version == 6: + out_rules.append(RuleWithIPv6(**rule)) + except ValueError: + out_rules.append(RuleWithPattern(**rule)) if isinstance(rule, Rule): out_rules.append(rule) return out_rules