8.1. 数据约束
几个YANG
语句定义了对有效数据的约束。这些约束以不同的方式执行,具体取决于语句定义的数据类型。
如果约束是在配置数据上定义的,则它必须在有效的配置数据树中为
true
。如果约束是在状态数据上定义的,则它必须在有效的状态数据树中为
true
。如果在通知内容上定义了约束条件,则必须在任何通知数据树中都为
true
。如果约束是在
RPC
或动作输入参数(action input parameters
)上定义的,那么在调用RPC
或动作操作(action operation
)时,它必须为true
。如果在
RPC
或动作输出参数(action output parameters
)上定义了约束,则它必须在RPC
或动作回复(action reply
)中为true
。
以下属性在所有数据树中都是正确的:
所有叶子数据值必须匹配叶子的类型约束,包括类型的“range
”,“length
”和“pattern
”属性中定义的那些。
所有列表条目必须存在所有关键叶子。
在所有选择中,节点必须至多存在一个分支。
如果服务器中“
if-feature
”表达式的计算结果为“false
”,那么必须不存在标有“if-feature
”的节点。如果数据树中的“
when
”条件评估为“false
”,则必须不存在标有“when
”的节点。
以下属性在有效的数据树中是正确的:
所有“
must
”约束必须评估为“true
”。必须满足通过“
path
”语句定义的所有参照完整性约束。列表上的所有“
unique
”约束必须满足。除非节点或其任何祖先具有“
when
”条件或“if-feature
”表达式评估为“false
”,否则强制执行叶子和选择的约束。对于列表和叶列表,强制执行“
min-elements
”和“max-elements
”约束,除非节点或其任何祖先具有“when
”条件或“if-feature
”表达式,其结果为“false
”。
正在运行的配置数据存储必须始终有效。