Opendaylight yangtools XML-кодирование не в порядке для списка с ключами

Когда модель yang имеет список с несколькими ключами, ODL не поддерживает порядок атрибутов при отправке запроса на устройство netconf. Из RFC 6020 следует, что порядок должен строго соблюдаться.

«Ключевые узлы списка кодируются как подэлементы элемента идентификатора списка в том же порядке, в котором они определены в операторе «ключ».

В основном мое устройство поставщика не жалуется при создании списка не по порядку, но при удалении жалуется на ошибку.

Пример модели Ян:

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>

Я ожидал, что идентификатор арендатора будет закодирован первым, а не идентификатор списка управления доступом в соответствии с порядком ключей, определенным в yang. Устройство выдает ошибку ниже во время операции удаления

<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. Этого не происходит, и устройство отклоняет запрос исключительно из-за неисправности. Является ли это ошибкой в ​​кодировке XML ODL yangtools или действительно устройство должно обрабатывать запрос в любом порядке?


person Yug    schedule 01.11.2019    source источник


Ответы (2)


Похоже, что ответ на этот вопрос находится здесь

person jamo    schedule 04.11.2019

Чтобы быть точным, для отслеживания этой проблемы создается тикет jira. https://jira.opendaylight.org/browse/YANGTOOLS-1037

person Yug    schedule 05.11.2019