如何将列表从一个模块扩充到另一个模块并添加叶子 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:定义 groupinglist。在 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 导入它。