4.2.8. 扩展数据模型(扩充)(Extending Data Models (augment))

YANG允许模块将其他节点插入数据模型,包括当前模块(及其子模块)和外部模块。 例如,这对于供应商以可互操作的方式向标准数据模型添加供应商特定的参数非常有用。

augment”语句定义插入新节点的数据模型层次结构中的位置,“when”语句定义新节点有效时的条件。

当服务器实现一个包含“augment”语句的模块时,这意味着扩充模块的服务器实现包含附加节点。

YANG示例:

  1. augment /system/login/user {
  2. when "class != 'wheel'";
  3. leaf uid {
  4. type uint16 {
  5. range "1000 .. 30000";
  6. }
  7. }
  8. }

这个例子定义了一个“uid”节点,只有当用户的“class”不是“wheel”时才有效。

如果模块扩充另一个模块,则添加到编码中的XML元素位于扩充模块的命名空间中。 例如,如果上面的扩充是在一个前缀为“other”的模块中,那么XML将如下所示:

XML编码示例:

  1. <user>
  2. <name>alicew</name>
  3. <full-name>Alice N. Wonderland</full-name>
  4. <class>drop-out</class>
  5. <other:uid>1024</other:uid>
  6. </user>

第7.17节介绍了“augment”声明。