问题描述
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
的{{1}}。在B中引用它并加以增强。
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的任何设备也必须实现模块A及其根目录augment
。参见RFC 7950 4.2.8:
当服务器实现包含“ augment”语句的模块时, 这意味着服务器对增强模块的实现 包含其他节点。
我不确定这是否是您想要的。如果不是,则将分组定义移至仅包含分组定义(不包含任何“数据定义语句”)的模块,然后将其从A和B导入。