Opendaylight OpenTools对键控列表的XML编码顺序错误
当yang模型有一个包含多个键的列表时,ODL在向netconf设备发送请求时不维护属性的顺序。从RFC 6020看来,需要严格遵守订单 “列表的关键节点被编码为列表关键节点的子元素 标识符元素,其顺序与在 “关键”语句。“ 主要是我的供应商设备在创建无序列表时不会抱怨,但在删除过程中会抱怨错误 杨模型示例:Opendaylight OpenTools对键控列表的XML编码顺序错误,opendaylight,netconf,Opendaylight,Netconf,当yang模型有一个包含多个键的列表时,ODL在向netconf设备发送请求时不维护属性的顺序。从RFC 6020看来,需要严格遵守订单 “列表的关键节点被编码为列表关键节点的子元素 标识符元素,其顺序与在 “关键”语句。“ 主要是我的供应商设备在创建无序列表时不会抱怨,但在删除过程中会抱怨错误 杨模型示例: container acl-config { list acl-config-list { key "tenant-id access-control-list-id";
container acl-config {
list acl-config-list {
key "tenant-id access-control-list-id";
leaf tenant-id {
type leafref {
path "/tenant:tenant-config/tenant:tenant-list/tenant:tenant-id";
}
description
"Unique identifier of the Tenant";
}
leaf access-control-list-id {
type custom-id;
mandatory true;
description
"Unique ACL identifier";
}
}
ODL在删除操作期间编码时发送请求,如下所示:
<edit-config>
<target>
<running/>
</target>
<default-operation>none</default-operation>
<error-option>rollback-on-error</error-option>
<config>
<acl-config xmlns="http://example.com/acl">
<acl-config-list>
<access-control-list-id>acl7</access-control-list-id>
<tenant-id>f81d4fae-7dec-11d0-a765-00a0c91e6bf6</tenant-id>
<acl-dst-config xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0"
a:operation="delete"/>
</acl-config-list>
</acl-config>
</config>
</edit-config>
</rpc>
没有一个
错误回滚
acl7
f81d4fae-7dec-11d0-a765-00a0c91e6bf6
我希望首先对租户id进行编码,而不是按照yang中定义的密钥顺序对访问控制列表id进行编码。删除操作期间设备抛出错误
<rpc-error>
<error-type>protocol</error-type>
<error-tag>missing-element</error-tag>
<error-severity>error</error-severity>
<error-message xml:lang="en">Invalid position of the key "tenant-id" in a
list "acl-config-list".</error-message>
<error-info>
<bad-element>/access_control_list:acl-config/acl-config-list[access-
control-list-id='acl7']/tenant-id</bad-element>
</error-info>
</rpc-error>
协议
缺失元素
错误
密钥“租户id”在中的位置无效
列表“acl配置列表”。
/访问控制列表:acl配置/acl配置列表[访问-
控制列表id='acl7']/租户id
我希望ODL在XML编码期间按照RFC6020语句严格遵循关键节点的顺序。这种情况不会发生,设备纯粹基于故障问题拒绝请求。这是ODL XML编码问题中的一个错误,还是设备真的应该以任何顺序处理请求?看起来这个问题已经得到了回答准确地说,jira ticket是用来跟踪这个问题的。