summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2025-06-23 14:46:33 -0500
committerJohn Estabrook <jestabro@vyos.io>2025-07-08 08:26:11 -0500
commit500c150bf049421b74dd6bc6a3e55c3e2600cc62 (patch)
treedeb5bdbf38281b3acbb21421f907b59e4450e0d4
parent8e84c690e59fc27d601c24261442ce34e00af1f2 (diff)
downloadvyos-1x-500c150bf049421b74dd6bc6a3e55c3e2600cc62.tar.gz
vyos-1x-500c150bf049421b74dd6bc6a3e55c3e2600cc62.zip
T7499: load from internal representation to avoid re-parsing
-rw-r--r--python/vyos/vyconf_session.py8
-rwxr-xr-xsrc/helpers/vyos-merge-config.py7
2 files changed, 9 insertions, 6 deletions
diff --git a/python/vyos/vyconf_session.py b/python/vyos/vyconf_session.py
index 4a2e6e393..3f3f3957b 100644
--- a/python/vyos/vyconf_session.py
+++ b/python/vyos/vyconf_session.py
@@ -163,7 +163,9 @@ class VyconfSession:
@raise_exception
@config_mode
- def load_config(self, file: str, migrate: bool = False) -> tuple[str, int]:
+ def load_config(
+ self, file: str, migrate: bool = False, cached: bool = False
+ ) -> tuple[str, int]:
# pylint: disable=consider-using-with
if migrate:
tmp = tempfile.NamedTemporaryFile()
@@ -178,7 +180,9 @@ class VyconfSession:
else:
tmp = ''
- out = vyconf_client.send_request('load', token=self.__token, location=file)
+ out = vyconf_client.send_request(
+ 'load', token=self.__token, location=file, cached=cached
+ )
if tmp:
tmp.close()
diff --git a/src/helpers/vyos-merge-config.py b/src/helpers/vyos-merge-config.py
index 197b35bfa..9ac4a1aed 100755
--- a/src/helpers/vyos-merge-config.py
+++ b/src/helpers/vyos-merge-config.py
@@ -84,11 +84,10 @@ session_ct = config.get_config_tree()
merge_res = merge(session_ct, merge_ct, destructive=args.destructive)
if config.vyconf_session is not None:
- with tempfile.NamedTemporaryFile() as merged_file:
- with open(merged_file, 'w') as f:
- f.write(merge_res.to_string())
+ with tempfile.NamedTemporaryFile() as merged_cache:
+ merge_res.write_cache(merged_cache.name)
- out, err = config.vyconf_session.load_config(merged_file)
+ out, err = config.vyconf_session.load_config(merged_cache.name, cached=True)
if err:
sys.exit(out)
print(out)