summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2025-07-01 15:06:55 +0100
committerGitHub <noreply@github.com>2025-07-01 15:06:55 +0100
commit5b9f56b66bd3eea4909ba3a6d23b10d38825f92e (patch)
tree20b4948e4bc64e18764b864e029852144746f08b /python
parent862817a7207c5b5d17c67451bac602d296b88230 (diff)
parentae000ac9ff6455a08d42b2931630c6f311de25c5 (diff)
downloadvyos-1x-5b9f56b66bd3eea4909ba3a6d23b10d38825f92e.tar.gz
vyos-1x-5b9f56b66bd3eea4909ba3a6d23b10d38825f92e.zip
Merge pull request #4580 from dmbaturin/T7580-op-cache-generator-standalone-virtual
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 29697dc58..0c4ae7182 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)