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”。

正在运行的配置数据存储必须始终有效。