diff options
| author | John Estabrook <jestabro@vyos.io> | 2025-09-10 19:13:21 -0500 |
|---|---|---|
| committer | John Estabrook <jestabro@vyos.io> | 2025-09-15 08:13:29 -0500 |
| commit | bca62a7bd1da4e78497fdce3882421609ce28c00 (patch) | |
| tree | 4a415189068819e7914ae1352a69abe08eb45c60 /src/session.ml | |
| parent | 6577d7ac1b10557b5087bc959dad3c21971a539b (diff) | |
| download | vyconf-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.ml | 26 |
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 |
