diff options
author | Daniil Baturin <daniil@vyos.io> | 2025-07-01 15:06:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-07-01 15:06:55 +0100 |
commit | 5b9f56b66bd3eea4909ba3a6d23b10d38825f92e (patch) | |
tree | 20b4948e4bc64e18764b864e029852144746f08b /python | |
parent | 862817a7207c5b5d17c67451bac602d296b88230 (diff) | |
parent | ae000ac9ff6455a08d42b2931630c6f311de25c5 (diff) | |
download | vyos-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-x | python/vyos/xml_ref/generate_op_cache.py | 23 | ||||
-rw-r--r-- | python/vyos/xml_ref/op_definition.py | 3 |
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) |