我想通过以下方式添加约束: efg.yang 具有以下结构:
module efg {
container deps {
container my-deps {
list my-dp {
key "key-dp";
leaf key-dp {
type string;
}
list high-bw {
type boolean;
}
// ... other leaf definitions ...
}
}
}
}
我希望列表“my-dp”即使在“high-bw”为空时也能够存在。但是,如果至少存在一个“high-bw”,则不应允许删除“my-dp”实例。 我如何实现这一目标?
我尝试添加一个必须约束: 必须“(count(high-bw)=>1 and key-dp) or (count(high-bw)=0)”。没有满足我的要求。
YANG 中没有任何约束会使配置树在运行时变为“只读”或“锁定更改”(基于数据节点状态)。
YANG 能做的最好的事情就是要求一定数量的列表条目始终存在(
min-elements
)。它还可以定义 XPath 断言,使其在执行列表条目删除后失败 (must
)。
也许您真正想做的是定义两个同级列表,其中第二个列表的键是第一个列表键的 leafref。这样,第一个列表条目的实例可以单独存在,但第二个列表条目的实例将需要第一个列表条目的实例。