我有一个Yang模型,该模型定义了config = false节点,该节点也是必需的。即使我的应用程序不支持该节点,我也应该在get rpc响应中将该节点作为一个空XML节点返回吗?
理想情况下,我的应用程序应该支持它,但是由于限制,我们无法实现所需的支持。那么,处理此类案件的正确方法应该是什么?我们是否应该在get rpc响应中将其作为空XML节点发出/表示?我想如果我们忽略这样的节点,则外部控制器可能无法获得rpc响应。
-Ram
答案 0 :(得分:1)
如果服务器实现不支持原始模型中的特定节点,则应创建偏差YANG模块,该模块表达了此限制。这样一来,客户就可以得到通知,每个人都很高兴-您当然会与已偏离的模块一起宣传偏离模块。
例如:
module target {
yang-version 1.1;
namespace "target:uri";
prefix "tgt";
container state {
config false;
leaf some-counter {
type uint64;
mandatory true;
}
}
}
比方说您的设备不支持上面的some-counter
叶。然后,您创建一个创建偏差模块,该模块描述您的实现与兼容实现之间的差异。
module target-dev {
yang-version 1.1;
namespace "target-dev:uri";
prefix "tgtd";
import target {
prefix tgt;
}
deviation "/tgt:state/tgt:some-counter" {
deviate not-supported;
}
}
收到get请求时,由于该叶子在您的实现世界中不存在,因此不会为该叶子返回任何内容。
deviation
和deviate
语句的详细信息可以在RFC7950中找到:
依靠这种机制时,您应该非常小心!始终创建一个单独的模块,其中仅包含偏差,可能会偏离单个目标模块。有guidelines document,您应该阅读以防万一。