summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------libvyosconfig40
-rw-r--r--python/vyos/configsource.py7
-rw-r--r--python/vyos/vyconf_session.py5
-rwxr-xr-xsrc/helpers/vyconf_cli.py11
4 files changed, 35 insertions, 28 deletions
diff --git a/libvyosconfig b/libvyosconfig
-Subproject 6da131348730ffeeaebf88e02b2f8af48494d8c
+Subproject d0c3b937497cc1132a485372c85ab189653c202
diff --git a/python/vyos/configsource.py b/python/vyos/configsource.py
index 949216722..24a17c711 100644
--- a/python/vyos/configsource.py
+++ b/python/vyos/configsource.py
@@ -354,6 +354,13 @@ class ConfigSourceVyconfSession(ConfigSource):
# cf. T7374
self._level = []
+ def __del__(self):
+ try:
+ if not self._vyconf_session.in_session():
+ self._vyconf_session.teardown()
+ except AttributeError:
+ pass
+
def get_level(self):
return self._level
diff --git a/python/vyos/vyconf_session.py b/python/vyos/vyconf_session.py
index 3cf5fb4e3..4b79073ab 100644
--- a/python/vyos/vyconf_session.py
+++ b/python/vyos/vyconf_session.py
@@ -67,10 +67,6 @@ class VyconfSession:
self.on_error = on_error
- def __del__(self):
- if not self.in_config_session:
- self.teardown()
-
def teardown(self):
vyconf_client.send_request('teardown', token=self.__token)
@@ -223,6 +219,7 @@ class VyconfSession:
@raise_exception
def save_config(self, file: str, append_version: bool = False) -> tuple[str, int]:
+ file = os.path.realpath(file)
out = vyconf_client.send_request('save', token=self.__token, location=file)
if append_version:
append_system_version(file)
diff --git a/src/helpers/vyconf_cli.py b/src/helpers/vyconf_cli.py
index 53542dd63..9a614675b 100755
--- a/src/helpers/vyconf_cli.py
+++ b/src/helpers/vyconf_cli.py
@@ -39,9 +39,12 @@ if hasattr(vs, func_name):
else:
sys.exit(f'Call unimplemented: {func_name}')
-out = func()
-if isinstance(out, bool):
+res = func()
+if isinstance(res, bool):
# for use in shell scripts
- sys.exit(int(not out))
+ sys.exit(int(not res))
-print(out)
+if isinstance(res, tuple):
+ out, err = res
+ print(out)
+ sys.exit(err)