如何将列表从一个模块扩展到另一个模块并添加叶子

问题描述

假设我有两个模块,我想用一个新的叶子扩展一个列表。

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导入。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...