新的介绍内容:
mvr-snippets是一款专为Cisco NSO MVR-v2框架设计的代码片段生成工具,旨在帮助开发者快速生成所需的代码片段,提升开发效率。
功能亮点:
主要功能:
MVR导入(前缀:mvrimport):自动生成必要的父类导入代码,确保工作流代码的正确性。
from typing import Dict, List, Union
from mvr_v2.common.utils import (Correlator, Dict2, Dx, MvrInit, MvrWf,
TemplateEngine, XQuery)
MVR主工作流类(前缀:mvrwf):定义主工作流类,包含数据提取、关联和模板应用的核心逻辑。
from typing import Dict, List, Union
from mvr_v2.common.utils import (Correlator, Dict2, Dx, MvrInit, MvrWf,
TemplateEngine, XQuery)
class Main(MvrWf):
"""
Main Execution Flow. This is where the logic resides.
"""
def execute(self, _input_obj):
"""
This method call triggers the execution
"""
_m = MvrInit()
input_obj = _m >> _input_obj
return _m
创建Dx类(前缀:mvrdx):用于数据提取的类,支持多参数配置。
class Classname(Dx):
def __init__(self, *args) -> None:
pass
def data_source(self, *args) -> XQuery:
self.q.xpath = f"/devices/device[name={arg1!r}]/config/ip/vrf[name={arg2!r}]"
self.q.params = {
"param-name": "relative-path-to-desired-node",
}
return self.q
def compute_vars(self, _p: Dict2) -> Union[Dict, Dict2]:
return _p
def devices_to_be_synced(self, _p: Dict2) -> List:
return []
创建Correlator类(前缀:mvrcorrelator):用于数据关联的类,处理多个数据集并生成有效载荷实例。
class Classname(Correlator):
def execute(self, data):
payload = []
for _i in data.primary_data_set:
_instance = self.payload_instance()
# list comprehension filtering
data_set_1 = []
data_set_2 = []
data_set_3 = []
# the add method accepts a Dict, Dict2 or a List object
_instance.add(_i)
_instance.add(data_set_1)
_instance.add(data_set_2)
_instance.add(data_set_3)
# or
# _instance.add_multiple([_i,data_set_1,data_set_2,data_set_3])
payload.append(_instance)
return payload
创建TemplateEngine类(前缀:mvrtemplate):用于模板引擎的类,处理数据格式化和模板应用。
class Classname(TemplateEngine):
def settings(self):
self.templates = ["example"]
def format_single_commit_comment(self, _input) -> str:
# return _input.device_name
return 'test'
def format_splitted_commit_comment(self, _single_payload_instance) -> str:
#return _single_payload_instance.interface_id
return 'test'
发布说明:
本站所有资源都是由网友投稿发布,或转载各大下载站, 请自行检测软件的完整性!
本站所有资源仅供学习与参考,请勿用于商业用途,否则 产生的一切后果将由您自己承担!
如有侵权请联系我们删除下架,联系方式:study_golang@163.com