summaryrefslogtreecommitdiff
path: root/src/reference_tree.ml
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2026-08-19 16:12:16 -0500
committerJohn Estabrook <jestabro@vyos.io>2026-08-25 14:10:26 -0500
commit7791e2874e1b613385210325faadc9eea0e48cba (patch)
tree60e5064462d1815f03196d1cdaac92699830bb63 /src/reference_tree.ml
parentfb1d919016afc5b5e61b9bf037e209512ca4c820 (diff)
downloadvyos1x-config-7791e2874e1b613385210325faadc9eea0e48cba.tar.gz
vyos1x-config-7791e2874e1b613385210325faadc9eea0e48cba.zip
T9231: add support for kind and dependency elements
Diffstat (limited to 'src/reference_tree.ml')
-rw-r--r--src/reference_tree.ml17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/reference_tree.ml b/src/reference_tree.ml
index dead1be..3e22d83 100644
--- a/src/reference_tree.ml
+++ b/src/reference_tree.ml
@@ -45,6 +45,11 @@ type docs = {
hints: doc_hints list;
} [@@deriving yojson]
+type dependency_type = {
+ kind: string;
+ alert: string;
+} [@@deriving yojson]
+
type ref_node_data = {
node_type: node_type;
constraints: Value_checker.value_constraint list;
@@ -61,6 +66,8 @@ type ref_node_data = {
default_value: string option;
hidden: bool;
secret: bool;
+ kind: string list;
+ dependency: dependency_type option;
docs: docs;
} [@@deriving yojson]
@@ -86,6 +93,8 @@ let default_data = {
default_value = None;
hidden = false;
secret = false;
+ kind = [];
+ dependency = None;
docs = {
headline = "";
text = "";
@@ -219,6 +228,12 @@ let load_docs_from_xml d x =
| _ -> d (* Ignore unknown elements instead of raising an error *)
in Xml.fold aux d x
+let load_dependency_from_xml d x =
+ try
+ let k, a = Xml.attrib x "kind", Xml.attrib x "alert" in
+ {d with dependency=Some { kind=k; alert=a }}
+ with _ -> {d with dependency=None}
+
let data_from_xml d x =
let aux d x =
match x with
@@ -237,6 +252,8 @@ let data_from_xml d x =
{d with priority=Some i}
| Xml.Element ("hidden", _, _) -> {d with hidden=true}
| Xml.Element ("secret", _, _) -> {d with secret=true}
+ | Xml.Element ("kind", _, [Xml.PCData k]) -> {d with kind=k::d.kind}
+ | Xml.Element ("dependency", _, _) -> load_dependency_from_xml d x
| Xml.Element ("docs", _, _) -> load_docs_from_xml d x
| _ -> raise (Bad_interface_definition ("Malformed property tag: " ^ Xml.to_string x))
in Xml.fold aux d x