问题描述
我目前正在借助编程接口 NETCONF 从 Cisco Catalyst 9800 控制器检索一些操作数据。为此,我使用 Cisco 本机 YANG 模型:Cisco-IOS-XE 和 CiscoDevNet/ydk-go golang 包的 NETCONF 提供程序。为了为 YANG 模型生成 go-source,我使用了 CiscoDevNet/ydk-gen python 生成器。
我已经成功请求了一些运营数据,例如 Cisco-IOS-XE-wireless-rfid-oper:rfid-oper-data
和 Cisco-IOS-XE-wireless-access-point-oper:access-point-oper-data
。但是,当我生成并尝试请求 Cisco-IOS-XE-wireless-client-oper:client-oper-data
时,ydk-go 客户端会出现以下异常:
panic: YModelError: Value "0" does not satisfy the constraint "1 .. 4094" (range,length,or pattern). Path: /Cisco-IOS-XE-wireless-client-oper:client-oper-data/dot11-oper-data[ms-mac-address='00:28:f8:e4:b2:c2']/eogre-client/vlan
我检查了 YANG 模型,确实,eogre-client/vlan
的约束设置为范围:1 .. 4094。虽然 Cisco 控制器返回的数据如下所示:
<eogre-client>
<is-eogre>false</is-eogre>
<prevIoUs-match-reason>match-pending-classify</prevIoUs-match-reason>
<match-reason>match-pending-classify</match-reason>
<is-aaa-data>false</is-aaa-data>
<realm/>
<vlan>0</vlan>
<domain/>
<plumbed-gw/>
<tunnel-ifid>0</tunnel-ifid>
<is-central-fwd>false</is-central-fwd>
</eogre-client>
我真的不知道 EoGRE
客户端实际上是什么意思,因为我真的不需要这些数据,但我猜 eogre-client/vlan
设置在控制器上被禁用导致 0
价值。
我曾尝试更改 YANG 模型中的 vlan
约束定义并重新生成 go-source,但是 ydk-go
仍然会出现相同的异常。
我想了解的是 CiscoDevNet/ydk-go
客户端如何验证请求的数据,以及它是检查生成的 YANG 模型的约束还是从其他地方获取它?我还想知道是否可以在该客户端中禁用约束验证?
同时,我也尝试过 Juniper/go-netconf go client。它需要 XPATH 来调用远程 RPC,我还没有真正了解如何从 YANG 模型中导出 XPATH。也许有人也可以帮我解决这个问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)