如何将列表从一个模块扩充到另一个模块并添加叶子 YANG
How to augment list from one module to another and add leafs YANG
假设我有两个模块,我想用新的叶子扩展一个列表。
module A {
list deviceList {
key name;
leaf name{
}
leaf hostname{
}
}
}
而且我想将它扩展到另一片叶子
module B {
list generalInfo{
key customerName;
leaf customerName{
type string;
}
augment moduleA:deviceList {
leaf ipAddress{
}
}
}
我已经使用分组和容器以及内部列表完成了它,但这完全改变了我们现有的结构,如果可能的话我想省略容器和分组。
您似乎想重用模式定义的一部分,将其放在模式树中的另一个地方并向其添加一个节点。
您不能按照您尝试的方式进行操作,因为 augment
语句只能出现在根级别或 uses
语句中。
您只能使用 grouping
来做到这一点,但您可以省略 container
。重构 A:定义 grouping
即 list
。在 B 中引用它并扩充它。
module A {
grouping devices {
list deviceList {
key name;
leaf name{
}
leaf hostname{
}
}
}
uses devices;
}
module B {
list generalInfo{
key customerName;
leaf customerName{
type string;
}
uses moduleA:devices {
augment "deviceList" {
leaf ipAddress{
}
}
}
}
}
请注意,如果您在模块 B 中使用 augment
语句,则意味着任何实现模块 B 的设备也必须实现模块 A 及其 root-level list deviceList
。见 RFC 7950 4.2.8:
When a server implements a module containing an "augment" statement,
that implies that the server's implementation of the augmented module
contains the additional nodes.
我不确定这是否是您想要的。如果没有,则将分组定义移动到仅包含分组定义(没有任何“数据定义语句”)的模块中,然后从 A 和 B 导入它。
假设我有两个模块,我想用新的叶子扩展一个列表。
module A {
list deviceList {
key name;
leaf name{
}
leaf hostname{
}
}
}
而且我想将它扩展到另一片叶子
module B {
list generalInfo{
key customerName;
leaf customerName{
type string;
}
augment moduleA:deviceList {
leaf ipAddress{
}
}
}
我已经使用分组和容器以及内部列表完成了它,但这完全改变了我们现有的结构,如果可能的话我想省略容器和分组。
您似乎想重用模式定义的一部分,将其放在模式树中的另一个地方并向其添加一个节点。
您不能按照您尝试的方式进行操作,因为 augment
语句只能出现在根级别或 uses
语句中。
您只能使用 grouping
来做到这一点,但您可以省略 container
。重构 A:定义 grouping
即 list
。在 B 中引用它并扩充它。
module A {
grouping devices {
list deviceList {
key name;
leaf name{
}
leaf hostname{
}
}
}
uses devices;
}
module B {
list generalInfo{
key customerName;
leaf customerName{
type string;
}
uses moduleA:devices {
augment "deviceList" {
leaf ipAddress{
}
}
}
}
}
请注意,如果您在模块 B 中使用 augment
语句,则意味着任何实现模块 B 的设备也必须实现模块 A 及其 root-level list deviceList
。见 RFC 7950 4.2.8:
When a server implements a module containing an "augment" statement, that implies that the server's implementation of the augmented module contains the additional nodes.
我不确定这是否是您想要的。如果没有,则将分组定义移动到仅包含分组定义(没有任何“数据定义语句”)的模块中,然后从 A 和 B 导入它。