问题标签 [yang]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ietf-netmod-yang - 为 netconf 编辑配置请求创建原子进程
我正在创建一个自定义系统,当用户提交 netconfedit-config
时,它将在我的系统中启动一组操作,这些操作将自动更改我们系统的配置,然后向用户提交成功或失败的通知。
把它想象成一个大的 SQL 事务,最后要么提交要么回滚。
所以,步骤
- 用户提交一个
edit-config
- 系统接受配置并努力实现此配置
- 如果配置成功,则通过竖起大拇指的响应发送(不确定执行此操作的正式方式)
- 如果配置失败,则通过不满意的响应发送(我必须确保配置在内部回滚)
- 所有这些都是原子完成的。因此,如果用户连续提交两个配置,它们不会相互冲突。
我们实现这一点的工作想法(可能不是最好的想法)是通过接受 来解决这个问题edit-config
,然后在 sysrepo 中,我们将使用成功或失败标志编辑部分叶子,它们将与初始变化。我们希望这将使一切保持原子性;通过在会话之外进行编辑,多个配置更改可能会相互冲突。
我们不确定使用纯 netconf 或直接利用 sysrepo 来解决这个问题。我们注意到所有这些为 sysrepo 制作的插件/绑定,并认为这些可以直接用于与我们的数据存储区通信。
但话虽如此,我们的工作想法很可能不是最佳实践方法。实现这一目标的最佳方法是什么?
我们的系统是:
而我们的yang文件是
目前我们可以:
- 对 netoperer 服务器执行编辑配置
- 我们可以在 sysrepo 数据存储中看到新的配置寄存器
- 我们可以通过 sysrepo 的 API 捕获 sysrepo 注册数据的时刻
但是我们遇到了问题
- 在更新会话期间以原子方式编辑数据存储(由于锁定,这是正常的。实际上,如果在更新会话期间无法编辑,那很好,也没有必要。主要目标是下一个项目符号)
- 以原子方式响应新的编辑配置并响应最终用户
我们对 netconf 和 yang 都有些陌生,所以我确信有一些方法可以通过 netopeer 会话或 sysrepo 来利用notification
api 或event
api,只是我们还不够了解。
如果有任何示例或实施建议可以为此创建原子事务,那将非常有用。
ietf-netmod-yang - yang中的叶子名称和类型名称可以相同
下面的例子是正确的 yang 陈述与否?它对 pyang 有效,但 JNC 无法处理
请建议
command-line-interface - 使用 cli 的帮助提示来扩展 yang
我正在编写一个新的 CLI,并且正在考虑使用 yang 作为数据定义语言。它几乎拥有我需要的一切:强制/可选、类型、派生类型、可接受的范围、描述和大量现有模块。
但是,我想提供简短的帮助提示:输入“?” 并通过简短的帮助(比如最多 60 个字符)查看下一个字段的可能值。据我所知,.yang 结构中没有简短的提示。
如何将简短的提示信息添加到 .yang 文件中?有一个只包含简短提示的配套文件吗?扩展 .yang 格式?将此信息嵌入 .yang 评论中?
我确定我不是第一个这样做的人,推荐的做法是什么?我怀疑答案是“伴随文件”,因为它可以与现有的 .yang 文件一起使用。
yang - 如何将列表偏离到 YANG 中的容器?
我正在尝试将列表偏离到 yang 中的容器。我尝试通过 RFC#6020,但我无法弄清楚如何在容器级别上偏离。
python - 无法从 Windows 命令行运行 pyang 命令,但能够从 Git Bash 运行
我正在学习 python,它是用于解析 .yang 文件的 pyang 库。我可以成功安装 python 和 pip。并通过 cmd 确认它们可以正常工作。然后我通过以下命令安装了 pyang:
但是,当我在 Windows cmd 中执行以下命令来解析 yang 文件时,出现如下错误:
但是当从Git Bash
. pyang 是否有一些内部 linux 依赖项?
model - YANG 和 Choice - XML 是什么样的?
我试图找出将选择字段从 yang 模型实现到其相应配置 xml 的正确语法。不幸的是,RFC 6020 和其他 Yang 相关网页中的文档似乎没有显示如何choice
在实际 XML 中使用与 Yang 模型相关的字段。
例如,这是我的 YANG 模型:
这个容器有相应的 XML:
但是当我运行它时,yang2dsdl
我得到以下错误:
所以发生错误是因为它不知道如何处理该type
元素。type
元素是 yang 模型中我的选择部分的名称。
我已经尝试了各种这样的安排,但都没有奏效。我也无法在 SOF 或 Google 上找到关于以 XML 实现的选择示例的任何内容。
xml - 当其中有叶子引用节点时,如何将有效的 YANG 实例数据放入格式良好的 XML 文档中?
我在结合两件事时遇到了麻烦:YANG 数据建模和现成的 XML 工具。具体来说,当 YANG 模块对另一个模块有叶子引用时,我看不出如何避免有两个顶级标签。
作为一个精简的例子,考虑这两个 yang 模型和一些有效的实例数据:
杨:
b.杨:
有效的.xml:
我可以在那个“xml”文件上使用 yanglint:
但我不能使用例如 Python 的 xml 模块来解析它,因为它有两个顶级标签:
或者,如果我使用这个 XML,invalid.xml:
我可以在 Python(或其他 XML 工具)中很好地解析/创建它:
但 yanglint 不喜欢:
在我正在研究的实际项目中, a.yang 和 b.yang 是 IEEE 标准(来自802.1CBcv,以防细节问题),这意味着我无法触及它们。但我希望有一种方法可以编写一个新的 yang 模块,让我可以将 <foo> 和 <qux> 放在 XML 文件中相同的顶级标记下,并且仍然让 yanglint 根据标准验证实例数据。由于 yang 模块我使用容器而不是分组,我无法弄清楚如何将它们的数据定义作为新 yang 模块中某些更高级别容器的子项导入。
我唯一能做的就是编写多个 .xml 文件,并让 yanglint 合并它们并验证整个数据树,例如:
foo.xml:
qux.xml:
yanglint 命令:
但是,这些特殊的 yang 模型需要数百个单独的 .xml 文件,因为 ieee802-dot1cb-stream-identification.yang 中的数据定义是一个列表,我们预计该列表中会有很多元素。
这种情况有最佳实践吗?
opendaylight - 为什么 Netconf hello 消息和 Opendaylight 中收到的 yang 模型功能存在差异?
我一直在尝试使用 Opendaylight Oxigen 的 Restconf 北向接口和 Netconf 南向接口来管理一个设备,该设备连接到一个运行具有多个 yang 数据模型的 Netopeer 的设备。
基本上,我正在关注本教程:
问题是 hello 消息的 yang 功能与使用 Opendaylight 方法获得的功能之间存在差异。
使用 hello 消息(ssh 到运行 netconf 进程的端口):
使用 opendaylight restconf 北向消息:
获取 http://device-ip:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/TSN-Switch/yang-ext:mount/
如您所见,hello 消息中的功能更多,不包括在 opendaylight 中获得的消息中出现的功能。
此外,我检查了设备的 yang 数据模型存储库,发现以下内容:
- iana-crypt-hash@2014-08-06.yang ieee802-types@2018-03-07.yang
ietf-netconf-monitoring@2010-10-04.yang
ietf-tls-server@2016-11-02.yang iana-if-type@2014-05-08.yang
ietf-datastores@2017-08-17.yang
ietf-netconf-notifications@2012-02-06.yang
ietf-x509-cert-to-name@2014-12 -10.yang ieee802-dot1q-bridge@2018-03-07.yang
ietf-interfaces@2018-02-20.yang
ietf-netconf-server@2016-11-02.yang
ietf-yang-library@2018-01 -17.yang ieee802-dot1q-preemption@2018-09-10.yang
ietf-keystore@2016-10-31.yang
ietf-netconf-with-defaults@2011-06-01.yang 内部 ieee802-dot1q-sched@ 2018-09-10.yang
ietf-netconf@2011-06-01.yang ietf-ssh-server@2016-11-02.yang
nc-notifications@2008-07-14.yang ieee802-dot1q-types@2018-03-07.yang ietf-netconf-acm@2018-02-14.yang ietf-system@2014-08-06.yang
notifications@ 2008-07-14.杨
出现了 hello 消息的模型和 Opendaylight RESTCONF 过程中列出的模型。
ODL的日志是:
json - yang模型ietf-routing的使用
我正在尝试根据这些 yang 模块添加配置数据:
https://github.com/mbj4668/pyang/blob/master/modules/ietf/ietf-routing.yang
https://github.com/mbj4668/pyang/blob/master/modules/ietf/ietf-ipv4-unicast-routing.yang
sysrepocfg error: libyang: Unknown element "next-hop-list"
尝试使用"next-hop-list"
以下数据时出现错误。
无法找出错误,有什么帮助吗?
我可以使用"simple-next-hop"
以下数据,效果很好。
ietf-netmod-yang - 杨模型强制节点仅在条件为真时
我有一个 XML 文件:
和杨模型:
仅当节点“b”等于“真”时,节点“c”才是强制性的。如果我向节点“c”添加强制:真约束,它将成为所有“b”值的强制约束。
如何更改 Yang 模型,以便当“b”为“真”时节点“c”是必需的,而当“b”为假时节点“c”是可选的?