summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@baturin.org>2025-06-26 14:36:17 +0100
committerDaniil Baturin <daniil@baturin.org>2025-06-26 14:42:46 +0100
commitae000ac9ff6455a08d42b2931630c6f311de25c5 (patch)
tree12505a819ad4f43922ebadc138391eada369aa0e /python
parent5c2f70ffd82047740a91be949af5098a6ee39c2c (diff)
downloadvyos-1x-ae000ac9ff6455a08d42b2931630c6f311de25c5.tar.gz
vyos-1x-ae000ac9ff6455a08d42b2931630c6f311de25c5.zip
build: T7580: add support for standalone and virtual tag nodes to the op mode cache generator
Diffstat (limited to 'python')
-rwxr-xr-xpython/vyos/xml_ref/generate_op_cache.py23
-rw-r--r--python/vyos/xml_ref/op_definition.py3
2 files changed, 24 insertions, 2 deletions
diff --git a/python/vyos/xml_ref/generate_op_cache.py b/python/vyos/xml_ref/generate_op_cache.py
index 117b080b4..9e9d9674c 100755
--- a/python/vyos/xml_ref/generate_op_cache.py
+++ b/python/vyos/xml_ref/generate_op_cache.py
@@ -140,9 +140,16 @@ def insert_node(
prop: OptElement = n.find('properties')
children: OptElement = n.find('children')
command: OptElement = n.find('command')
- # name is not None as required by schema
- name: str = n.get('name', 'schema_error')
+ standalone: OptElement = n.find('standalone')
node_type: str = n.tag
+
+ if node_type == 'virtualTagNode':
+ name = '__virtual_tag'
+ else:
+ name = n.get('name')
+ if not name:
+ raise ValueError("Node name is required for all node types except <virtualTagNode>")
+
if path is None:
path = []
@@ -156,6 +163,16 @@ def insert_node(
if command_text is not None:
command_text = translate_command(command_text, path)
+ try:
+ standalone_command = translate_command(standalone.find('command').text, path)
+ except AttributeError:
+ standalone_command = None
+
+ try:
+ standalone_help_text = translate_command(standalone.find('help').text, path)
+ except AttributeError:
+ standalone_help_text = None
+
comp_help = {}
if prop is not None:
che = prop.findall('completionHelp')
@@ -191,6 +208,8 @@ def insert_node(
cur_node_data.comp_help = comp_help
cur_node_data.help_text = help_text
cur_node_data.command = command_text
+ cur_node_data.standalone_help_text = standalone_help_text
+ cur_node_data.standalone_command = standalone_command
cur_node_data.path = path
cur_node_data.file = file
diff --git a/python/vyos/xml_ref/op_definition.py b/python/vyos/xml_ref/op_definition.py
index 8e922ecb2..6a8368118 100644
--- a/python/vyos/xml_ref/op_definition.py
+++ b/python/vyos/xml_ref/op_definition.py
@@ -15,6 +15,7 @@
from typing import TypeAlias
from typing import Union
+from typing import Optional
from typing import Iterator
from dataclasses import dataclass
from dataclasses import field
@@ -31,6 +32,8 @@ class NodeData:
help_text: str = ''
comp_help: dict[str, list] = field(default_factory=dict)
command: str = ''
+ standalone_help_text: Optional[str] = None
+ standalone_command: Optional[str] = None
path: list[str] = field(default_factory=list)
file: str = ''
children: list[tuple] = field(default_factory=list)