summaryrefslogtreecommitdiff
path: root/src/vyconfd.ml
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2025-11-17 11:42:57 -0600
committerJohn Estabrook <jestabro@vyos.io>2025-11-20 19:43:13 -0600
commit4d3f2d5da41a2871de68cd196ac969f0648ef578 (patch)
tree323ef5c204b60f9a6e5fd09c0cb53aed03bd2a64 /src/vyconfd.ml
parente00f45edd537180d3b1b78657b001eaf65529538 (diff)
downloadvyconf-4d3f2d5da41a2871de68cd196ac969f0648ef578.tar.gz
vyconf-4d3f2d5da41a2871de68cd196ac969f0648ef578.zip
T8009: add vyconfd handlers for edit_level requests
Diffstat (limited to 'src/vyconfd.ml')
-rw-r--r--src/vyconfd.ml50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/vyconfd.ml b/src/vyconfd.ml
index c09c4f4..ed84978 100644
--- a/src/vyconfd.ml
+++ b/src/vyconfd.ml
@@ -362,6 +362,51 @@ let reload_reftree world (_req: request_reload_reftree) =
{response_tmpl with status=Success}
| Error s -> {response_tmpl with status=Fail; error=(Some s)}
+let set_edit_level world token (req: request_set_edit_level) =
+ let s = find_session token in
+ try
+ let session, edit_env =
+ Session.set_edit_level world s req.path
+ in
+ Hashtbl.replace sessions token session;
+ {response_tmpl with output=(Some edit_env)}
+ with Session.Session_error msg ->
+ {response_tmpl with status=Fail; error=(Some msg)}
+
+let set_edit_level_up world token (_req: request_set_edit_level_up) =
+ let s = find_session token in
+ try
+ let session, edit_env =
+ Session.set_edit_level_up world s
+ in
+ Hashtbl.replace sessions token session;
+ {response_tmpl with output=(Some edit_env)}
+ with Session.Session_error msg ->
+ {response_tmpl with status=Fail; error=(Some msg)}
+
+let reset_edit_level world token (_req: request_reset_edit_level) =
+ let s = find_session token in
+ try
+ let session, edit_env =
+ Session.reset_edit_level world s
+ in
+ Hashtbl.replace sessions token session;
+ {response_tmpl with output=(Some edit_env)}
+ with Session.Session_error msg ->
+ {response_tmpl with status=Fail; error=(Some msg)}
+
+let get_edit_level world token (_req: request_get_edit_level) =
+ let s = find_session token in
+ try
+ let edit_env = Session.get_edit_level world s in
+ {response_tmpl with output=(Some edit_env)}
+ with Session.Session_error msg ->
+ {response_tmpl with status=Fail; error=(Some msg)}
+
+let edit_level_root world token (_req: request_edit_level_root) =
+ if Session.edit_level_root world (find_session token) then response_tmpl
+ else {response_tmpl with status=Fail}
+
let send_response oc resp =
let enc = Pbrt.Encoder.create () in
let%lwt () = encode_pb_response resp enc |> return in
@@ -413,6 +458,11 @@ let rec handle_connection world ic oc () =
| Some t, Merge r -> merge world t r
| Some t, Save r -> save world t r
| Some t, Show_sessions r -> show_sessions world t r
+ | Some t, Set_edit_level r -> set_edit_level world t r
+ | Some t, Set_edit_level_up r -> set_edit_level_up world t r
+ | Some t, Reset_edit_level r -> reset_edit_level world t r
+ | Some t, Get_edit_level r -> get_edit_level world t r
+ | Some t, Edit_level_root r -> edit_level_root world t r
| _ -> failwith "Unimplemented"
) |> Lwt.return
end