summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2024-10-03 14:50:14 +0100
committerGitHub <noreply@github.com>2024-10-03 16:50:14 +0300
commite0c643a34f89c9e5f0d2d22f5129354b3f38054e (patch)
tree546c96180557147b5633666bba8115ca90b5ce2b
parent320de317aedd68446fa4a205e90bc5be53fe7062 (diff)
downloadvyos-1x-e0c643a34f89c9e5f0d2d22f5129354b3f38054e.tar.gz
vyos-1x-e0c643a34f89c9e5f0d2d22f5129354b3f38054e.zip
vyos.configtree: T6742: add bindings for create_node and is_leaf/set_leaf (#4109)
-rw-r--r--python/vyos/configtree.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/python/vyos/configtree.py b/python/vyos/configtree.py
index bd77ab899..ee8ca8b83 100644
--- a/python/vyos/configtree.py
+++ b/python/vyos/configtree.py
@@ -88,6 +88,10 @@ class ConfigTree(object):
self.__to_json_ast.argtypes = [c_void_p]
self.__to_json_ast.restype = c_char_p
+ self.__create_node = self.__lib.create_node
+ self.__create_node.argtypes = [c_void_p, c_char_p]
+ self.__create_node.restype = c_int
+
self.__set_add_value = self.__lib.set_add_value
self.__set_add_value.argtypes = [c_void_p, c_char_p, c_char_p]
self.__set_add_value.restype = c_int
@@ -140,6 +144,14 @@ class ConfigTree(object):
self.__set_tag.argtypes = [c_void_p, c_char_p]
self.__set_tag.restype = c_int
+ self.__is_leaf = self.__lib.is_leaf
+ self.__is_leaf.argtypes = [c_void_p, c_char_p]
+ self.__is_leaf.restype = c_bool
+
+ self.__set_leaf = self.__lib.set_leaf
+ self.__set_leaf.argtypes = [c_void_p, c_char_p, c_bool]
+ self.__set_leaf.restype = c_int
+
self.__get_subtree = self.__lib.get_subtree
self.__get_subtree.argtypes = [c_void_p, c_char_p]
self.__get_subtree.restype = c_void_p
@@ -197,6 +209,14 @@ class ConfigTree(object):
def to_json_ast(self):
return self.__to_json_ast(self.__config).decode()
+ def create_node(self, path):
+ check_path(path)
+ path_str = " ".join(map(str, path)).encode()
+
+ res = self.__create_node(self.__config, path_str)
+ if (res != 0):
+ raise ConfigTreeError(f"Path already exists: {path}")
+
def set(self, path, value=None, replace=True):
"""Set new entry in VyOS configuration.
path: configuration path e.g. 'system dns forwarding listen-address'
@@ -349,6 +369,22 @@ class ConfigTree(object):
else:
raise ConfigTreeError("Path [{}] doesn't exist".format(path_str))
+ def is_leaf(self, path):
+ check_path(path)
+ path_str = " ".join(map(str, path)).encode()
+
+ return self.__is_leaf(self.__config, path_str)
+
+ def set_leaf(self, path, value):
+ check_path(path)
+ path_str = " ".join(map(str, path)).encode()
+
+ res = self.__set_leaf(self.__config, path_str, value)
+ if (res == 0):
+ return True
+ else:
+ raise ConfigTreeError("Path [{}] doesn't exist".format(path_str))
+
def get_subtree(self, path, with_node=False):
check_path(path)
path_str = " ".join(map(str, path)).encode()