Как обновить конфигурации на устройстве с поддержкой 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
    }
  ]
}
Другие вопросы по тегам