summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2025-07-22 15:08:29 +0100
committerGitHub <noreply@github.com>2025-07-22 15:08:29 +0100
commitf08ff04c71da7e3108120a45c1e2d4feb2f8e331 (patch)
tree47e6aba2a8a6f73d6d2966e99e77b16eae0ea3f4 /src
parent8c87d62c1131652dfe65747bdefefadbd860627c (diff)
parent59c22fbdc1f1a9ad277c5ed8c9665ce0f8d86e57 (diff)
downloadvyconf-f08ff04c71da7e3108120a45c1e2d4feb2f8e331.tar.gz
vyconf-f08ff04c71da7e3108120a45c1e2d4feb2f8e331.zip
Merge pull request #27 from jestabro/debug-smoketests
T7637: fix typo in commit update and relax error on redundant set
Diffstat (limited to 'src')
-rw-r--r--src/commit.ml14
-rw-r--r--src/session.ml5
2 files changed, 13 insertions, 6 deletions
diff --git a/src/commit.ml b/src/commit.ml
index 0d675d8..2e2dbac 100644
--- a/src/commit.ml
+++ b/src/commit.ml
@@ -181,7 +181,12 @@ let config_result_update c_data n_data =
match r.success, n_data.source with
| true, ADD ->
let add = CT.get_subtree c_data.config_diff ["add"] in
- let add_tree = CD.clone add (CT.default) n_data.path in
+ let path =
+ match n_data.tag_value with
+ | None -> n_data.path
+ | Some v -> n_data.path @ [v]
+ in
+ let add_tree = CD.clone add (CT.default) path in
let config = CD.tree_union add_tree c_data.config_result in
let result =
{ success = c_data.result.success && true;
@@ -190,7 +195,12 @@ let config_result_update c_data n_data =
{ c_data with config_result = config; result = result; }
| false, DELETE ->
let del = CT.get_subtree c_data.config_diff ["del"] in
- let add_tree = CD.clone del (CT.default) n_data.path in
+ let path =
+ match n_data.tag_value with
+ | None -> n_data.path
+ | Some v -> n_data.path @ [v]
+ in
+ let add_tree = CD.clone del (CT.default) path in
let config = CD.tree_union add_tree c_data.config_result in
let result =
{ success = c_data.result.success && false;
diff --git a/src/session.ml b/src/session.ml
index 1ff9bae..62037d5 100644
--- a/src/session.ml
+++ b/src/session.ml
@@ -105,10 +105,7 @@ let set w s path =
(fun c -> RT.set_tag_data w.reference_tree c path) |>
(fun c -> RT.set_leaf_data w.reference_tree c path)
with
- | CT.Useless_set ->
- raise (Session_error (Printf.sprintf "Useless set, path: %s" (string_of_op op)))
- | CT.Duplicate_value ->
- raise (Session_error (Printf.sprintf "Duplicate value, path: %s" (string_of_op op)))
+ | CT.Useless_set | CT.Duplicate_value -> s.proposed_config
in
{s with proposed_config=config; changeset=(op :: s.changeset)}