Я установил устройство NETCONF в ODL.Затем, используя интерфейс RESTConf в ODL, я пытаюсь отправить несколько изменений на устройство за одну транзакцию, чтобы исследовать поведение при сбое одного из этих изменений.Будет ли это вызвать откат или нет.
Для этого я использовал YANG-PATCH и включил несколько правок.Я заметил, что если запросы не соответствуют моделям в ODL, они не будут обработаны.Однако, если проверка прошла успешно, запросы отправляются на устройство NETCONF.Я заметил, что каждое редактирование в YANG-PATCH отправляется как отдельный запрос NETCONF, и если второй запрос не выполняется на устройстве, то при первом редактировании откат не инициируется.
Я немного покопался и обнаружил, что в спецификациях PATCH (RFC5789), на которые ссылается YANG-PATCH (RFC8072), указано, что запросы должны быть атомарными во всех отношениях или вообще без них.
Ответ от устройства показан ниже, и вы можете видеть, что ошибка указана в ответе 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
]
}
]
}
}
}