Как обновить конфигурации на устройстве с поддержкой NETCONF?
Мой прибор Ян, как показано ниже -
module router {
yang-version 1;
namespace "urn:sdnhub:odl:tutorial:router";
prefix router;
description "Router configuration";
revision "2015-07-28" {
description "Initial version.";
}
list interfaces {
key id;
leaf id {
type string;
}
leaf ip-address {
type string;
}
}
container router {
list ospf {
key process-id;
leaf process-id {
type uint32;
}
list networks {
key subnet-ip;
leaf subnet-ip {
type string;
}
leaf area-id {
type uint32;
}
}
}
list bgp {
key as-number;
leaf as-number {
type uint32;
}
leaf router-id {
type string;
}
list neighbors {
key as-number;
leaf as-number {
type uint32;
}
leaf peer-ip {
type string;
}
}
}
}
}
Я использую SDNHub Netconf Client для настройки моего устройства netconf (я использую симулятор). Я могу добавить конфигурации, но я не могу изменить конфигурации на устройстве.
Начальные настройки на моем устройстве показаны ниже
{
"router": {
"ospf": [
{
"process-id": 21,
"networks": [
{
"subnet-ip": "12.1.1.1",
"area-id": 12
}
]
}
],"bgp": [
{
"as-number": "31",
"router-id": "123",
"neighbors": [
{
"as-number": "31",
"peer-ip": "1.1.1.1"
}
]
},
{
"as-number": "32",
"router-id": "1234",
"neighbors": [
{
"as-number": "32",
"peer-ip": "2.2.2.2"
}
]
}
]
}
}
Я пытаюсь изменить список OSPF с помощью PUT http://localhost:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/testtool/yang-ext:mount/router:router/ospf/21
со следующей полезной нагрузкой,
{
"ospf":
[
{
"process-id" : "21",
"networks": [
{
"subnet-ip": "12.12.12.12",
"area-id": 1212
}
]
}
]
}
Конфигурации на корневом узле перезаписываются и дают мне следующие данные о GET
{
"router":
{
"ospf": [
{
"process-id": 21,
"networks": [
{
"subnet-ip": "12.12.12.12",
"area-id": 1212
}
]
}
]
}
}
Пожалуйста, дайте мне знать, если я отправляю неправильный запрос или есть какой-либо другой способ обновить конфигурации на устройстве Netconf.
1 ответ
Я полагаю, вы хотели бы обновить сеть в ospf
; тогда URL должен указывать до ресурса: process-id
Индексы, которые поддерево (как требует Раздел 4.5 RFC 8040):
Если целевой ресурс представляет экземпляр списка YANG, тогда значения листа ключа в представлении тела сообщения ДОЛЖНЫ быть такими же, как значения листа ключа в URI запроса. Метод PUT НЕ ДОЛЖЕН использоваться для изменения значений листа ключа для экземпляра ресурса данных.
PUT http://localhost:8181/restconf/path_until_router/router:router/ospf=21 HTTP/1.1
Content-Type: application/yang-data+json
{
"router:process-id": 21,
"router:networks": [
{
"subnet-ip": "12.1.1.1",
"area-id": 12
}
]
}