diff options
author | John Estabrook <jestabro@vyos.io> | 2024-10-23 18:50:46 -0500 |
---|---|---|
committer | John Estabrook <jestabro@vyos.io> | 2024-10-27 21:17:35 -0500 |
commit | 085b22f7be84944a27e565be4227dc55720bec47 (patch) | |
tree | 7ff755934372cfc860408663848a752febff7d5a | |
parent | 60cc099df46e1cbcb7b37be3fe455978f800887f (diff) | |
download | vyconf-085b22f7be84944a27e565be4227dc55720bec47.tar.gz vyconf-085b22f7be84944a27e565be4227dc55720bec47.zip |
T6718: read reference tree json file on startup
-rw-r--r-- | data/examples/vyconfd.conf | 1 | ||||
-rw-r--r-- | src/startup.ml | 7 | ||||
-rw-r--r-- | src/startup.mli | 2 | ||||
-rw-r--r-- | src/vyconf_config.ml | 3 | ||||
-rw-r--r-- | src/vyconf_config.mli | 1 | ||||
-rw-r--r-- | src/vyconfd.ml | 12 |
6 files changed, 23 insertions, 3 deletions
diff --git a/data/examples/vyconfd.conf b/data/examples/vyconfd.conf index db9e493..68b0531 100644 --- a/data/examples/vyconfd.conf +++ b/data/examples/vyconfd.conf @@ -9,6 +9,7 @@ config_dir = "/etc/testappliance" # paths relative to config_dir primary_config = "config.boot" fallback_config = "config.failsafe" +reference_tree = "reftree.cache" [vyconf] diff --git a/src/startup.ml b/src/startup.ml index b3a967e..7418a81 100644 --- a/src/startup.ml +++ b/src/startup.ml @@ -124,3 +124,10 @@ let load_interface_definitions dir = | Error msg -> Error msg end with Bad_interface_definition msg -> Error msg +module I = Vyos1x.Internal.Make(Vyos1x.Reference_tree) + +let read_reference_tree file = + try + let reftree = I.read_internal file in + Ok reftree + with Sys_error msg -> Error msg diff --git a/src/startup.mli b/src/startup.mli index 77c35ac..ab0e0f2 100644 --- a/src/startup.mli +++ b/src/startup.mli @@ -17,3 +17,5 @@ val load_config : string -> (Vyos1x.Config_tree.t, string) result val load_config_failsafe : string -> string -> Vyos1x.Config_tree.t val load_interface_definitions : string -> (Vyos1x.Reference_tree.t, string) result + +val read_reference_tree : string -> (Vyos1x.Reference_tree.t, string) result diff --git a/src/vyconf_config.ml b/src/vyconf_config.ml index 07ab3ef..2640c9b 100644 --- a/src/vyconf_config.ml +++ b/src/vyconf_config.ml @@ -7,6 +7,7 @@ type t = { config_dir: string; primary_config: string; fallback_config: string; + reference_tree: string; socket: string; pid_file: string; log_file: string option; @@ -23,6 +24,7 @@ let empty_config = { config_dir = ""; primary_config = ""; fallback_config = ""; + reference_tree = ""; socket = ""; pid_file = ""; log_file = None; @@ -61,6 +63,7 @@ let load filename = let conf = {conf with program_dir = mandatory_field conf_toml "appliance" "program_dir"} in let conf = {conf with primary_config = mandatory_field conf_toml "appliance" "primary_config"} in let conf = {conf with fallback_config = mandatory_field conf_toml "appliance" "fallback_config"} in + let conf = {conf with reference_tree = mandatory_field conf_toml "appliance" "reference_tree"} in (* Optional fields *) let conf = {conf with pid_file = optional_field defaults.pid_file conf_toml "vyconf" "pid_file"} in let conf = {conf with socket = optional_field defaults.socket conf_toml "vyconf" "socket"} in diff --git a/src/vyconf_config.mli b/src/vyconf_config.mli index ed30b35..1cfeffa 100644 --- a/src/vyconf_config.mli +++ b/src/vyconf_config.mli @@ -5,6 +5,7 @@ type t = { config_dir: string; primary_config: string; fallback_config: string; + reference_tree: string; socket: string; pid_file: string; log_file: string option; diff --git a/src/vyconfd.ml b/src/vyconfd.ml index 729be73..af7c309 100644 --- a/src/vyconfd.ml +++ b/src/vyconfd.ml @@ -2,6 +2,7 @@ open Lwt open Vyconf_connect.Vyconf_pbt open Vyconfd_config.Defaults +open Vyconfd_config.Vyconf_config module FP = FilePath module CT = Vyos1x.Config_tree @@ -197,16 +198,21 @@ let main_loop basepath world () = serve () let load_interface_definitions dir = -(* let open Session in *) let reftree = Gen.load_interface_definitions dir in match reftree with | Ok r -> r | Error s -> Startup.panic s +let read_reference_tree file = + let reftree = Startup.read_reference_tree file in + match reftree with + | Ok r -> r + | Error s -> Startup.panic s + let make_world config dirs = - let open Directories in let open Session in - let reftree = load_interface_definitions dirs.interface_definitions in + (* the reference_tree json file is generated at vyos-1x build time *) + let reftree = read_reference_tree (FP.concat config.config_dir config.reference_tree) in let running_config = CT.make "root" in {running_config=running_config; reference_tree=reftree; vyconf_config=config; dirs=dirs} |