Opendaylight yangtools XML-кодировка вышла из строя для списка ключей - PullRequest
0 голосов
/ 01 ноября 2019

Когда модель 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>

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

<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 или действительно устройство должно обрабатывать запрос в любом порядке?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

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

0 голосов
/ 04 ноября 2019

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

...