summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2024-10-03 15:27:27 -0500
committerDaniil Baturin <daniil@baturin.org>2024-10-07 16:29:21 +0100
commit8013e228320a414087e3456c1632b479483b856c (patch)
tree94546281e5e1e737795f78b5c7e8c1f76043a86f /python
parent9821aa7a47fddb2f9e9d36bfffc1d55a17682667 (diff)
downloadvyos-1x-8013e228320a414087e3456c1632b479483b856c.tar.gz
vyos-1x-8013e228320a414087e3456c1632b479483b856c.zip
cli: T6740: set_tag on created paths and add parse step for ordering
Signed-off-by: Daniil Baturin <daniil@baturin.org>
Diffstat (limited to 'python')
-rw-r--r--python/vyos/utils/config.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/python/vyos/utils/config.py b/python/vyos/utils/config.py
index b02621e7b..deda13c13 100644
--- a/python/vyos/utils/config.py
+++ b/python/vyos/utils/config.py
@@ -14,8 +14,14 @@
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import os
+from typing import TYPE_CHECKING
+
from vyos.defaults import directories
+# https://peps.python.org/pep-0484/#forward-references
+if TYPE_CHECKING:
+ from vyos.configtree import ConfigTree
+
config_file = os.path.join(directories['config'], 'config.boot')
def read_saved_value(path: list):
@@ -38,6 +44,25 @@ def read_saved_value(path: list):
return ' '.join(res)
return res
+def flag(l: list) -> list:
+ res = [l[0:i] for i,_ in enumerate(l, start=1)]
+ return res
+
+def tag_node_of_path(p: list) -> list:
+ from vyos.xml_ref import is_tag
+
+ fl = flag(p)
+ res = list(map(is_tag, fl))
+
+ return res
+
+def set_tags(ct: 'ConfigTree', path: list) -> None:
+ fl = flag(path)
+ if_tag = tag_node_of_path(path)
+ for condition, target in zip(if_tag, fl):
+ if condition:
+ ct.set_tag(target)
+
def parse_commands(cmds: str) -> dict:
from re import split as re_split
from shlex import split as shlex_split