Конечный узел "когда" или "должен" оператор Использование

Я нахожусь в процессе изучения OpenDayLight и Yang и не могу понять, как наложить ограничение на конечный узел. У меня есть листовой узел (vpn-id). Когда узел типа l3vpn равен 'bgp', я хочу, чтобы данные для него были разрешены для vpn-id. Если конечный узел не равен 'bgp' и введен vpn-id, я хочу выдать ошибку. Я проверил это в OpenDayLight, и это всегда позволяет мне сохранять данные, независимо от того, что в них есть.

Кроме того, мне трудно найти примеры Яна, чтобы я мог учиться сам. Предложения приветствуются.

module DaveTest {
 namespace "urn:aaa:ddd:DaveTest";
 prefix dave-module;

 description "Dave testing file";

 revision "2017-04-17" {
      description "Initial version.";
 }

 container testing-vars {

      list test-list {

           key "vpn-transaction-id l3vpn-type";
           unique "vpn-transaction-id";

           leaf vpn-transaction-id {
                type string;
           }

           leaf l3vpn-type {
                type enumeration {
                     enum "bgp";
                     enum "static";
                     enum "gre tunnel";
                }
                mandatory true;
           }

           leaf vpn-id {
                when "../l3vpn-type = 'bgp'";
                type string;
           }
      }              
 }

2 ответа

Решение

Ваше использование when утверждение верно. Вы сделали vpn-id условно, так что разрешено появляться только если l3vpn-type имеет значение bgp, Возможно, он не работает должным образом из-за ошибки в ODL.

Если вы хотите узнать о YANG, то неплохо бы начать читать вики- тег /questions/tagged/ietf-netmod-yang (внизу есть ссылки). Есть репозитории модулей YANG, созданные различными группами, которые можно найти в Интернете, например, эту. Возможно, лучше начать чтение стандартных модулей, поскольку они рецензируются и следуют рекомендациям для авторов YANG. Они могут быть найдены в опубликованных RFC, обычно с их именем, содержащим фразу "YANG data model for".

Вы можете добавить оператор must следующим образом:

      leaf vpn-id {
    must "../l3vpn-type = 'bgp'";
    type string;
}
Другие вопросы по тегам