我将NETCONF设备安装到ODL中。然后,在ODL中使用RESTConf接口,我试图在单个事务中将多个更改发送到设备,以调查其中一个编辑失败时的行为。是否触发回滚。
为此,我使用了YANG-PATCH并进行了多次编辑。我注意到,如果请求不符合ODL中的模型,则将不会对其进行处理。但是,如果验证成功,则将请求发送到NETCONF设备。我注意到YANG-PATCH中的每个编辑都是作为单独的NETCONF请求发送的,如果第二个请求在设备上失败,则第一个编辑不会触发回滚。
我进行了一些挖掘,发现YANG-PATCH(RFC8072)中引用的PATCH(RFC5789)规范指出,请求必须是全部或全部都不是原子的。
设备的响应如下所示,您可以看到JSON响应中列出了该错误,但两个编辑似乎都已完成。
Opendaylight版本-氟(0.9.1)
回复
{
"ietf-yang-patch:yang-patch-status": {
"patch-id": "0",
"errors": {
"error": [
{
"error-type": "application",
"error-tag": "operation-failed",
"error-message": "Commit of transaction org.opendaylight.netconf.sal.connect.netconf.sal.tx.WriteRunningTx@42de5ea3 failed"
}
]
},
"edit-status": {
"edit": [
{
"edit-id": "edit1",
"ok": [
null
]
},
{
"edit-id": "edit1",
"ok": [
null
]
}
]
}
}
}