summaryrefslogtreecommitdiff
path: root/plugins/cliconf
diff options
context:
space:
mode:
authoromnom62 <75066712+omnom62@users.noreply.github.com>2025-09-15 19:40:12 +1000
committerGitHub <noreply@github.com>2025-09-15 10:40:12 +0100
commit79c844c2a58cd84671db78ee063f6b9b5fd942bb (patch)
treee5bafebdcd855b210f43fbf70f0b6086bce8aae3 /plugins/cliconf
parent1070cd0ffc804f820142794da3c975578dc7f7c4 (diff)
downloadvyos.vyos-79c844c2a58cd84671db78ee063f6b9b5fd942bb.tar.gz
vyos.vyos-79c844c2a58cd84671db78ee063f6b9b5fd942bb.zip
Fixes to T7221 and greedy matching (#430)
* Fixes to T7221 and greedy matching
Diffstat (limited to 'plugins/cliconf')
-rw-r--r--plugins/cliconf/vyos.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/plugins/cliconf/vyos.py b/plugins/cliconf/vyos.py
index 5beffaa1..c35ff1ec 100644
--- a/plugins/cliconf/vyos.py
+++ b/plugins/cliconf/vyos.py
@@ -234,7 +234,9 @@ class Cliconf(CliconfBase):
set_format = candidate.startswith("set") or candidate.startswith("delete")
candidate_obj = NetworkConfig(indent=4, contents=candidate)
+
if not set_format:
+
config = [c.line for c in candidate_obj.items]
commands = list()
# this filters out less specific lines
@@ -248,6 +250,7 @@ class Cliconf(CliconfBase):
candidate_commands = ["set %s" % cmd.replace(" {", "") for cmd in commands]
else:
+
candidate_commands = str(candidate).strip().split("\n")
if diff_match == "none":
@@ -269,12 +272,14 @@ class Cliconf(CliconfBase):
updates.append(line)
elif item.startswith("delete"):
+
if not running_commands:
updates.append(line)
else:
item = re.sub(r"delete", "set", item)
+
for entry in running_commands:
- if entry.startswith(item) and line not in visited:
+ if re.match(rf"^{re.escape(item)}\b", entry) and line not in visited:
updates.append(line)
visited.add(line)