当前位置: 首页 > 知识库问答 >
问题:

opendaylight yangtools键控列表的XML编码乱序

秦钟展
2023-03-14

当Yang模型有一个包含多个键的列表时,ODL在将请求发送到netconf设备时不会维护属性的顺序。从RFC 6020中可以看出,需要严格遵守顺序。

“列表的关键节点被编码为列表标识符元素的子元素,顺序与它们在“key”语句中定义的顺序相同。”

主要是我的供应商设备在创建无序列表时不会投诉,但在删除过程中会投诉错误。

杨模型示例:

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>

我希望首先对租户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>

我希望ODL在XML编码期间按照RFC 6020语句严格遵循关键节点的顺序。这并没有发生,设备纯粹是基于故障问题拒绝请求。这是ODL yangtools XML编码问题中的一个bug,还是设备应该以任何顺序处理请求?

共有2个答案

支嘉祥
2023-03-14

准确地说,提出jira罚单是为了跟踪这一问题。https://jira.opendaylight.org/browse/YANGTOOLS-1037

全彬
2023-03-14

看起来这个问题在这里得到了回答

 类似资料:
  • 源编码与目标编码的不一致. 而中文window系统默认编码GBK,害惨了多少程序员. 要尽量减少出现乱码,我个人认为要做到5码合一, IDE(Eclipse/idea),页面(jsp/其他模板引擎),应用服务器(tomcat等), 源码(Java源码及周边文件),数据库编码. 将Eclipse设置为UTF-8 打开Eclipse安装目录下的eclipse.ini,在最末尾新增一行 -Dfile.

  • 问题内容: 我有一些xml,这是它的简单版本。 在内容上使用SimpleXML, 我可以使用并访问@attributes。 我需要一个数组结果,所以我尝试了这个技巧,但这看起来是要删除对@attributes的访问(即abc =“ 123”)。 还有另一种方法可以提供对属性的访问并使我留下一个数组吗? 问题答案: 您可以使用和一起走,并可以添加缺少的内容,因为-ing使用遵循某些特定规则。 如果您

  • 问题内容: 我有一个包含两列的表: 我需要在PostgreSQL中进行某种形式的一键编码并将表转换为: 是否可以仅使用SQL?有关如何入门的任何提示? 问题答案: 如果我正确理解,则需要条件聚合:

  • 主要内容:XML 编码错误,Windows 记事本,结论XML 文档可以包含非 ASCII 字符,比如挪威语 æ ø å,或者法语 ê è é。 为了避免错误,需要规定 XML 编码,或者将 XML 文件存为 Unicode。 XML 编码错误 如果您载入一个 XML 文档,您可以得到两个不同的错误,表示编码问题: 在文本内容中发现无效字符。 如果您的 XML 中包含非 ASCII 字符,且文件保存为没有指定编码的单字节 ANSI(或 ASCII),您

  • 本文向大家介绍浅谈编码,解码,乱码的问题,包括了浅谈编码,解码,乱码的问题的使用技巧和注意事项,需要的朋友参考一下 在开发的过程中,我们不可避免的会遇到各种各样的编码,解码,或者乱码问题,很多时候,我们可以正常的解决问题,但是说实在的,我们有可能并不清楚问题到底是怎么被解决的,秉承知其然,更要知其所以然的理念,经过一番研究,就有了下面的这篇文章,鉴于本人功力尚浅,有错误请给予纠正 :-) 编码解码

  • 我在列表中有一个列名称,我想对列表中的列中的值进行热编码。我想从数据集中对分类变量进行编码。我尝试了几个过程,但它给我带来了一个错误 它抛出的错误 回溯(最后一次调用):文件“preprocessing.py”,第83行,trainig_set_ed[col]=clfs[col].fit_transform(trainig_set_ed[col])文件“/root/.local/lib/pytho