summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/commit.ml20
-rw-r--r--src/commit.mli2
-rw-r--r--src/dune13
-rw-r--r--src/startup.ml6
-rw-r--r--src/startup.mli6
-rw-r--r--src/test_commit_data.ml30
-rw-r--r--src/vyconfd.ml1
7 files changed, 68 insertions, 10 deletions
diff --git a/src/commit.ml b/src/commit.ml
index d85743a..3c593fd 100644
--- a/src/commit.ml
+++ b/src/commit.ml
@@ -2,6 +2,7 @@ module VT = Vyos1x.Vytree
module CT = Vyos1x.Config_tree
module CD = Vyos1x.Config_diff
module RT = Vyos1x.Reference_tree
+module FP = FilePath
type commit_data = {
script: string option;
@@ -126,3 +127,22 @@ let calculate_priority_lists rt at wt =
let cs_add' = get_commit_set rt add_tree in
let cs_del, cs_add = legacy_order del_tree cs_del' cs_add' in
List.rev (CS.elements cs_del), CS.elements cs_add
+
+let show_commit_data at wt =
+ let vc =
+ Startup.load_daemon_config Defaults.defaults.config_file in
+ let rt_opt =
+ Startup.read_reference_tree (FP.concat vc.reftree_dir vc.reference_tree)
+ in
+ match rt_opt with
+ | Error msg -> msg
+ | Ok rt ->
+ let del_list, add_list =
+ calculate_priority_lists rt at wt
+ in
+ let sprint_commit_data acc s =
+ acc ^ "\n" ^ (commit_data_to_yojson s |> Yojson.Safe.to_string)
+ in
+ let del_out = List.fold_left sprint_commit_data "" del_list in
+ let add_out = List.fold_left sprint_commit_data "" add_list in
+ del_out ^ "\n" ^ add_out
diff --git a/src/commit.mli b/src/commit.mli
index 881c2a0..db91195 100644
--- a/src/commit.mli
+++ b/src/commit.mli
@@ -1,2 +1,2 @@
-val test_commit_data : Vyos1x.Reference_tree.t -> Vyos1x.Config_tree.t -> unit
+val show_commit_data : Vyos1x.Config_tree.t -> Vyos1x.Config_tree.t -> string
diff --git a/src/dune b/src/dune
index 1d67dab..3998f1e 100644
--- a/src/dune
+++ b/src/dune
@@ -10,9 +10,9 @@
(library
(name vyconfd_config)
(public_name vyconf.vyconfd-config)
- (modules vyconf_config session directories defaults commit)
+ (modules vyconf_config startup session directories defaults commit)
(libraries vyos1x-config vyconf_connect toml sha ppx_deriving.show)
- (preprocess (pps ppx_deriving.show ppx_deriving_yojson)))
+ (preprocess (pps lwt_ppx ppx_deriving.show ppx_deriving_yojson)))
(library
(name client)
@@ -25,7 +25,7 @@
(executable
(name vyconfd)
(public_name vyconfd)
- (modules vyconfd startup version)
+ (modules vyconfd version)
(libraries vyos1x-config vyconfd_config vyconf_connect)
(preprocess (pps lwt_ppx)))
@@ -42,6 +42,13 @@
(modules validate)
(libraries client))
+(executable
+ (name test_commit_data)
+ (public_name test-commit-data)
+ (modules test_commit_data)
+ (libraries vyos1x-config vyconfd_config)
+ (preprocess (pps lwt_ppx)))
+
(rule
(alias protoc)
(mode promote)
diff --git a/src/startup.ml b/src/startup.ml
index 8d84c84..db2784d 100644
--- a/src/startup.ml
+++ b/src/startup.ml
@@ -33,7 +33,7 @@ let setup_logger daemonize log_file template =
(** Load the config file or panic if it fails *)
let load_daemon_config path =
- let result = Vyconfd_config.Vyconf_config.load path in
+ let result = Vyconf_config.load path in
match result with
| Ok cfg -> cfg
| Error err ->
@@ -41,13 +41,13 @@ let load_daemon_config path =
(** Check if appliance directories exist and panic if they don't *)
let check_dirs dirs =
- let res = Vyconfd_config.Directories.test dirs in
+ let res = Directories.test dirs in
match res with
| Ok _ -> ()
| Error err -> panic err
let check_validators_dir dirs =
- let res = Vyconfd_config.Directories.test_validators_dir dirs in
+ let res = Directories.test_validators_dir dirs in
match res with
| Ok _ -> ()
| Error err -> panic err
diff --git a/src/startup.mli b/src/startup.mli
index 84fb99e..dc84736 100644
--- a/src/startup.mli
+++ b/src/startup.mli
@@ -2,11 +2,11 @@ val panic : string -> 'a
val setup_logger : bool -> string option -> Lwt_log.template -> unit Lwt.t
-val load_daemon_config : string -> Vyconfd_config.Vyconf_config.t
+val load_daemon_config : string -> Vyconf_config.t
-val check_dirs : Vyconfd_config.Directories.t -> unit
+val check_dirs : Directories.t -> unit
-val check_validators_dir : Vyconfd_config.Directories.t -> unit
+val check_validators_dir : Directories.t -> unit
val create_socket : string -> Lwt_unix.file_descr Lwt.t
diff --git a/src/test_commit_data.ml b/src/test_commit_data.ml
new file mode 100644
index 0000000..81b6c19
--- /dev/null
+++ b/src/test_commit_data.ml
@@ -0,0 +1,30 @@
+module CT = Vyos1x.Config_tree
+module FP = FilePath
+
+let active_config_file = ref ""
+let working_config_file = ref ""
+
+let usage = "Usage: " ^ Sys.argv.(0) ^ " [options]"
+
+let args = [
+ ("--running-config", Arg.String (fun s -> active_config_file:= s), "running config file");
+ ("--proposed-config", Arg.String (fun s -> working_config_file := s), "proposed config file");
+ ]
+
+let parse_ct file_name =
+ match file_name with
+ | "" -> CT.make ""
+ | _ ->
+ let ic = open_in file_name in
+ let s = really_input_string ic (in_channel_length ic) in
+ let ct = Vyos1x.Parser.from_string s in
+ close_in ic; ct
+
+let () =
+ let () = Arg.parse args (fun _ -> ()) usage in
+ let af = !active_config_file in
+ let wf = !working_config_file in
+ let at = parse_ct af in
+ let wt = parse_ct wf in
+ let out = Vyconfd_config.Commit.show_commit_data at wt
+ in print_endline out
diff --git a/src/vyconfd.ml b/src/vyconfd.ml
index 004ed6f..95915b3 100644
--- a/src/vyconfd.ml
+++ b/src/vyconfd.ml
@@ -9,6 +9,7 @@ module CT = Vyos1x.Config_tree
module Gen = Vyos1x.Generate
module Session = Vyconfd_config.Session
module Directories = Vyconfd_config.Directories
+module Startup = Vyconfd_config.Startup
(* On UNIX, self_init uses /dev/random for seed *)
let () = Random.self_init ()