杨建模基于另一场建立场

时间:2017-11-27 21:27:39

标签: cisco ietf-netmod-yang ietf-netconf

我正在写一个杨模型。是否存在使用基于另一个字段的值设置叶子(字符串或枚举)。因此,例如,我想说如果x然后字段值为b,如果z则字段值为c。

编辑:我是杨的新手并且仍在努力学习它,如果有任何其他想法或操作员我可以用来解决这个问题,请不要犹豫,分享。 :D非常感谢你。

1 个答案:

答案 0 :(得分:1)

您可以使用whenmust结构:YANG 1.1, Section 7.5.3说:

  

必须语句是可选的,它将包含XPath表达式的字符串作为参数(参见第6.4节)。它用于正式声明对有效数据的约束。根据第8节中的规则强制执行约束。

Section 7.5.4.3解决了这个问题:

 container interface {
   leaf ifType {
     type enumeration {
       enum ethernet;
       enum atm;
     }
   }
   leaf ifMTU {
     type uint32;
   }
   must 'ifType != "ethernet" or ifMTU = 1500' {
     error-message "An Ethernet MTU must be 1500";
   }
   must 'ifType != "atm" or'
      + ' (ifMTU <= 17966 and ifMTU >= 64)' {
     error-message "An ATM MTU must be 64 .. 17966";
   }
 }

when上,Section 7.21.5读取,

  

语句使其父数据定义语句成为条件时。父数据定义语句定义的节点仅在满足 when 语句指定的条件时有效。语句的参数是一个XPath表达式(参见第6.4节),用于正式指定此条件。

ConfD提供XPath in NETCONF and YANG的教程;这个例子来自于它:

augment /system/login/user {
  when “class != ’wheel’”;
  leaf uid {
    type uint16 {
    range “1000 .. 30000”;
    }
  }
}