Моделирование Ян Установить поле на основе другого поля
Я пишу модель Ян. Есть ли возможность установить лист (строку или перечисление) со значением, основанным на другом поле. Так, например, я хочу сказать, что если 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”;
}
}
}