我正在写一个杨模型。是否存在使用基于另一个字段的值设置叶子(字符串或枚举)。因此,例如,我想说如果x然后字段值为b,如果z则字段值为c。
编辑:我是杨的新手并且仍在努力学习它,如果有任何其他想法或操作员我可以用来解决这个问题,请不要犹豫,分享。 :D非常感谢你。
答案 0 :(得分:1)
您可以使用when
和must
结构: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”;
}
}
}