Моделирование Ян Установить поле на основе другого поля

Я пишу модель Ян. Есть ли возможность установить лист (строку или перечисление) со значением, основанным на другом поле. Так, например, я хочу сказать, что если x, то поле значение равно b, если z, то поле значение равно c.

Изменить: Я новичок в Ян и все еще пытаюсь изучить его, если есть какие-либо другие идеи или операторы, которые я могу использовать для решения этой проблемы, пожалуйста, не стесняйтесь поделиться.:D Спасибо большое.

1 ответ

Решение

Ты можешь использовать when а также must конструкции: YANG 1.1, раздел 7.5.3 говорит:

Оператор must, который является необязательным, принимает в качестве аргумента строку, содержащую выражение XPath (см. Раздел 6.4). Он используется для формального объявления ограничения на действительные данные. Ограничение применяется в соответствии с правилами Раздела 8.

И раздел 7.5.4.3 излагает это:

 container interface {
   leaf ifType {
     type enumeration {
       enum ethernet;
       enum atm;
     }
   }
   leaf ifMTU {
     type uint32;
   }
   must 'ifType != "ethernet" or ifMTU = 1500' {
     error-message "An Ethernet MTU must be 1500";
   }
   must 'ifType != "atm" or'
      + ' (ifMTU <= 17966 and ifMTU >= 64)' {
     error-message "An ATM MTU must be 64 .. 17966";
   }
 }

На when Раздел 7.21.5 гласит:

Оператор when делает свой родительский оператор определения данных условным. Узел, определенный оператором определения родительских данных, действителен только тогда, когда выполняется условие, указанное в операторе when. Аргументом оператора является выражение XPath (см. Раздел 6.4), которое используется для формального указания этого условия.

ConfD предоставляет учебное пособие по XPath в NETCONF и YANG; это примеры из этого:

augment /system/login/user {
  when “class != ’wheel’”;
  leaf uid {
    type uint16 {
    range “1000 .. 30000”;
    }
  }
}
Другие вопросы по тегам