From 80ce51be1e6bc2365d6e7ae5c8d3ae6b809e67a0 Mon Sep 17 00:00:00 2001 From: John Estabrook Date: Mon, 4 Aug 2025 14:54:23 -0500 Subject: T7688: remove tag node path on deletion of last tag node value --- src/session.ml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/session.ml') diff --git a/src/session.ml b/src/session.ml index 62037d5..5cd5027 100644 --- a/src/session.ml +++ b/src/session.ml @@ -110,10 +110,25 @@ let set w s path = in {s with proposed_config=config; changeset=(op :: s.changeset)} +let prune_del_path node path = + if CT.is_tag_value node path then + let tag_path = Vyos1x.Util.drop_last path in + let terminal = VT.is_terminal_path node tag_path in + match terminal with + | true -> CT.delete node tag_path None + | false -> node + else node + let delete w s path = let path, value = split_path w s path in let op = CfgDelete (path, value) in - let config = apply_cfg_op op s.proposed_config in + let config = + try + apply_cfg_op op s.proposed_config |> + (fun c -> prune_del_path c path) + with + | VT.Nonexistent_path | CT.No_such_value -> s.proposed_config + in {s with proposed_config=config; changeset=(op :: s.changeset)} let discard w s = -- cgit v1.2.3