summaryrefslogtreecommitdiff
path: root/src/session.ml
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2025-09-10 19:13:21 -0500
committerJohn Estabrook <jestabro@vyos.io>2025-09-15 08:13:29 -0500
commitbca62a7bd1da4e78497fdce3882421609ce28c00 (patch)
tree4a415189068819e7914ae1352a69abe08eb45c60 /src/session.ml
parent6577d7ac1b10557b5087bc959dad3c21971a539b (diff)
downloadvyconf-bca62a7bd1da4e78497fdce3882421609ce28c00.tar.gz
vyconf-bca62a7bd1da4e78497fdce3882421609ce28c00.zip
T7737: apply auxiliary set/delete operations to config post-commit
Diffstat (limited to 'src/session.ml')
-rw-r--r--src/session.ml26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/session.ml b/src/session.ml
index 4829d76..5f70feb 100644
--- a/src/session.ml
+++ b/src/session.ml
@@ -269,6 +269,32 @@ let prepare_commit ?(dry_run=false) w config id pid sudo_user user =
in
CC.make_commit_data ~dry_run:dry_run rt at config id pid sudo_user user
+let post_process_commit w s ((c_data: CC.commit_data), proposed_config) =
+ let ident n v y =
+ if (y.script_name <> n || y.tag_value <> v) then false
+ else true
+ in
+ let func (running, proposed) (n_data: CC.node_data) =
+ match n_data.reply with
+ | None -> (running, proposed)
+ | Some reply ->
+ match reply.success with
+ | false -> (running, proposed)
+ | true ->
+ begin
+ let post =
+ VL.find
+ (ident n_data.script_name n_data.tag_value)
+ s.aux_changeset
+ in
+ match post with
+ | None -> (running, proposed)
+ | Some p ->
+ (apply_changes w p.changeset running, apply_changes w p.changeset proposed)
+ end
+ in
+ List.fold_left func (c_data.config_result, proposed_config) c_data.node_list
+
let get_config w s id =
let at = w.running_config in
let wt = get_proposed_config w s in