1

我的设备yang如下图——

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"
        }
      ]
    }
  ]
  }
}

我正在尝试使用 PUT http://localhost:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/testtool/yang-ext:mount/router:router修改 ospf 列表/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 设备上的配置,请告诉我。

4

1 回答 1

1

我想你想更新网络ospf;然后 URL 应该指向资源:process-id索引该子树(根据RFC 8040 的第 4.5 节的要求):

如果目标资源表示一个 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
    }
  ]
}
于 2017-11-09T11:12:30.893 回答