From bdb00d1c781fc30ea0ec4b873a2748f8419928ee Mon Sep 17 00:00:00 2001
From: John Estabrook <jestabro@vyos.io>
Date: Mon, 18 Sep 2023 09:53:34 -0500
Subject: utils: T5239: add low-level read from config.boot

(cherry picked from commit 56d3f75de487c1dcfd075cf7b65cb16b6501d0ca)
---
 python/vyos/utils/config.py     | 34 ++++++++++++++++++++++++++++++++++
 src/helpers/read-saved-value.py | 30 ++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+)
 create mode 100644 python/vyos/utils/config.py
 create mode 100755 src/helpers/read-saved-value.py

diff --git a/python/vyos/utils/config.py b/python/vyos/utils/config.py
new file mode 100644
index 000000000..bd363ce46
--- /dev/null
+++ b/python/vyos/utils/config.py
@@ -0,0 +1,34 @@
+# Copyright 2023 VyOS maintainers and contributors <maintainers@vyos.io>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library.  If not, see <http://www.gnu.org/licenses/>.
+
+import os
+from vyos.defaults import directories
+
+config_file = os.path.join(directories['config'], 'config.boot')
+
+def read_saved_value(path: list):
+    if not isinstance(path, list) or not path:
+        return ''
+    from vyos.configtree import ConfigTree
+    try:
+        with open(config_file) as f:
+            config_string = f.read()
+        ct = ConfigTree(config_string)
+    except Exception:
+        return ''
+    if not ct.exists(path):
+        return ''
+    res = ct.return_values(path)
+    return res[0] if len(res) == 1 else res
diff --git a/src/helpers/read-saved-value.py b/src/helpers/read-saved-value.py
new file mode 100755
index 000000000..1463e9ffe
--- /dev/null
+++ b/src/helpers/read-saved-value.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2023 VyOS maintainers and contributors
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 or later as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+#
+
+from argparse import ArgumentParser
+from vyos.utils.config import read_saved_value
+
+if __name__ == '__main__':
+    parser = ArgumentParser()
+    parser.add_argument('--path', nargs='*')
+    args = parser.parse_args()
+
+    out = read_saved_value(args.path) if args.path else ''
+    if isinstance(out, list):
+        out = ' '.join(out)
+    print(out)
-- 
cgit v1.2.3