问题标签 [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.

0 投票
1 回答
205 浏览

ietf-netmod-yang - 为 netconf 编辑配置请求创建原子进程

我正在创建一个自定义系统,当用户提交 netconfedit-config时,它将在我的系统中启动一组操作,这些操作将自动更改我们系统的配置,然后向用户提交成功或失败的通知。

把它想象成一个大的 SQL 事务,最后要么提交要么回滚。

所以,步骤

  1. 用户提交一个edit-config
  2. 系统接受配置并努力实现此配置
  3. 如果配置成功,则通过竖起大拇指的响应发送(不确定执行此操作的正式方式)
  4. 如果配置失败,则通过不满意的响应发送(我必须确保配置在内部回滚)
  5. 所有这些都是原子完成的。因此,如果用户连续提交两个配置,它们不会相互冲突。

我们实现这一点的工作想法(可能不是最好的想法)是通过接受 来解决这个问题edit-config,然后在 sysrepo 中,我们将使用成功或失败标志编辑部分叶子,它们将与初始变化。我们希望这将使一切保持原子性;通过在会话之外进行编辑,多个配置更改可能会相互冲突。

我们不确定使用纯 netconf 或直接利用 sysrepo 来解决这个问题。我们注意到所有这些为 sysrepo 制作的插件/绑定,并认为这些可以直接用于与我们的数据存储区通信。

但话虽如此,我们的工作想法很可能不是最佳实践方法。实现这一目标的最佳方法是什么?

我们的系统是:

而我们的yang文件是

目前我们可以:

  • 对 netoperer 服务器执行编辑配置
  • 我们可以在 sysrepo 数据存储中看到新的配置寄存器
  • 我们可以通过 sysrepo 的 API 捕获 sysrepo 注册数据的时刻

但是我们遇到了问题

  • 在更新会话期间以原子方式编辑数据存储(由于锁定,这是正常的。实际上,如果在更新会话期间无法编辑,那很好,也没有必要。主要目标是下一个项目符号)
  • 以原子方式响应新的编辑配置并响应最终用户

我们对 netconf 和 yang 都有些陌生,所以我确信有一些方法可以通过 netopeer 会话或 sysrepo 来利用notificationapi 或eventapi,只是我们还不够了解。

如果有任何示例或实施建议可以为此创建原子事务,那将非常有用。

0 投票
1 回答
221 浏览

ietf-netmod-yang - yang中的叶子名称和类型名称可以相同

下面的例子是正确的 yang 陈述与否?它对 pyang 有效,但 JNC 无法处理

请建议

0 投票
2 回答
29 浏览

command-line-interface - 使用 cli 的帮助提示来扩展 yang

我正在编写一个新的 CLI,并且正在考虑使用 yang 作为数据定义语言。它几乎拥有我需要的一切:强制/可选、类型、派生类型、可接受的范围、描述和大量现有模块。

但是,我想提供简短的帮助提示:输入“?” 并通过简短的帮助(比如最多 60 个字符)查看下一个字段的可能值。据我所知,.yang 结构中没有简短的提示。

如何将简短的提示信息添加到 .yang 文件中?有一个只包含简短提示的配套文件吗?扩展 .yang 格式?将此信息嵌入 .yang 评论中?

我确定我不是第一个这样做的人,推荐的做法是什么?我怀疑答案是“伴随文件”,因为它可以与现有的 .yang 文件一起使用。

0 投票
1 回答
169 浏览

yang - 如何将列表偏离到 YANG 中的容器?

我正在尝试将列表偏离到 yang 中的容器。我尝试通过 RFC#6020,但我无法弄清楚如何在容器级别上偏离。

0 投票
2 回答
1165 浏览

python - 无法从 Windows 命令行运行 pyang 命令,但能够从 Git Bash 运行

我正在学习 python,它是用于解析 .yang 文件的 pyang 库。我可以成功安装 python 和 pip。并通过 cmd 确认它们可以正常工作。然后我通过以下命令安装了 pyang:

但是,当我在 Windows cmd 中执行以下命令来解析 yang 文件时,出现如下错误:

但是当从Git Bash. pyang 是否有一些内部 linux 依赖项?

0 投票
1 回答
916 浏览

model - YANG 和 Choice - XML 是什么样的?

我试图找出将选择字段从 yang 模型实现到其相应配置 xml 的正确语法。不幸的是,RFC 6020 和其他 Yang 相关网页中的文档似乎没有显示如何choice在实际 XML 中使用与 Yang 模型相关的字段。

例如,这是我的 YANG 模型:

这个容器有相应的 XML:

但是当我运行它时,yang2dsdl我得到以下错误:

所以发生错误是因为它不知道如何处理该type元素。type元素是 yang 模型中我的选择部分的名称。

我已经尝试了各种这样的安排,但都没有奏效。我也无法在 SOF 或 Google 上找到关于以 XML 实现的选择示例的任何内容。

0 投票
1 回答
134 浏览

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 中的数据定义是一个列表,我们预计该列表中会有很多元素。

这种情况有最佳实践吗?

0 投票
0 回答
150 浏览

opendaylight - 为什么 Netconf hello 消息和 Opendaylight 中收到的 yang 模型功能存在差异?

我一直在尝试使用 Opendaylight Oxigen 的 Restconf 北向接口和 Netconf 南向接口来管理一个设备,该设备连接到一个运行具有多个 yang 数据模型的 Netopeer 的设备。

基本上,我正在关注本教程:

https://docs.opendaylight.org/projects/netconf/en/latest/user-guide.html#spawning-new-netconf-connectors

问题是 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的日志是:

0 投票
1 回答
122 浏览

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"以下数据,效果很好。

0 投票
1 回答
410 浏览

ietf-netmod-yang - 杨模型强制节点仅在条件为真时

我有一个 XML 文件:

和杨模型:

仅当节点“b”等于“真”时,节点“c”才是强制性的。如果我向节点“c”添加强制:真约束,它将成为所有“b”值的强制约束。

如何更改 Yang 模型,以便当“b”为“真”时节点“c”是必需的,而当“b”为假时节点“c”是可选的?