You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YANG Deviation调试咨询:如何在must语句中打印XPath值

关于YANG Deviation中must语句调试及生效验证的解答

1. 不能在must语句中直接打印XPath值

YANG的must语句是用于断言校验的语法,本身不支持直接打印输出XPath值的功能。不过你可以通过在error-message中嵌入XPath表达式的计算结果来间接查看目标节点的当前值,修改后的配置示例如下:

deviation "/ns:direction" {
  description "Deviation to restrict if the direction is left.";
  deviate add {
    must ". = 'left'" {
      error-message "Direction is not left, current value is: '" || . || "'";
      description "Direction must be left." ;
    }
  }
}

当must断言失败时,error-message会显示/ns:direction节点的实际值,以此间接验证XPath是否正确指向了目标节点。

2. 验证偏差是否生效的实用方法

  • 使用YANG工具校验:用pyang或yanglint这类工具,加载原始YANG模块和偏差模块后,传入不符合must条件的配置文件,观察是否触发错误提示。示例命令(yanglint):
    yanglint -d -m original-module.yang deviation-module.yang test-config.xml
    
    若配置了非"left"的direction值,工具会输出你定义的error-message内容。
  • 查看服务器日志:如果是在NETCONF服务器(如OpenDaylight、ConfD)中部署,当配置违反must断言时,服务器日志会记录详细错误信息,包含触发断言的节点值。
  • 实际配置测试:通过NETCONF客户端发送不符合条件的配置请求,观察服务器返回的rpc-error,里面会包含error-message,以此确认偏差已生效。

关键注意事项

  • 确保偏差模块中正确导入了原始模块的命名空间(ns需在偏差模块的namespace或import语句中准确定义),否则XPath路径会解析失败。
  • must语句的表达式需明确校验逻辑:你原代码中的表达式为空,要改成实际的校验规则,比如. = 'left'来限制方向必须为left。

内容的提问来源于stack exchange,提问作者Beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 11:57:17