我有一个带有leafref的yang模型,它指向另一个列表中的列表。 基本上是这样的:
list some-names
{
key "name";
leaf name
{
type string;
}
list some-other-names
{
key "name";
leaf name
{
type string;
}
}
}
我想从外面用一个leafref指向some-other-names
列表,但只有那些名字大于等于foo的列表。
不幸的是,leafref必须有current()
限制。
所以我目前的解决方案如下,但需要额外的叶子
完全不需要配置。
leaf foo
{
type string;
deafault "foo";
}
leaf some-leaf-ref
{
type leafref
{
path "/some-names[name = current()/../foo]/some-other-names/name";
}
}
是否有一种比这更简单的方法,不需要额外的叶子来将some-names
的名称限制为某个值?
顺便说一下,我已经尝试了,但它不是正确的路径 - arg:
leaf some-leaf-ref
{
type leafref
{
path "/some-names[name = 'foo']/some-other-names";
}
}
答案 0 :(得分:0)
也许有些事情如下:
leaf some-leafref {
must "/some-names[name = 'foo']/some-other-names/name = .";
type leafref {
path "/some-names/some-other-names/name";
}
}
因此,path
表达式中没有谓词,但有一个额外的must
限制 - 这两个表达式基本上是AND。 YANG规范确实提到路径表达式可以评估为包含多个节点的节点集,并且它没有说每个键的谓词是强制的(与instance-identifiers
不同)。对我来说似乎是hackery,或者至少是丑陋的。
也许您真正想要的是外部list
(some-names
)的leafref leaf子项,其when
仅在../name = 'foo'
时才有效。< / p>
list some-names {
key "name";
leaf name {
type string;
}
list some-other-names {
key "name";
leaf name {
type my-type;
}
}
leaf some-leafref {
when "../name = 'foo'";
type leafref {
path "../some-other-names/name";
}
}
}