Я работаю над моделью янь. В этом мне нужно иметь список, в котором один листовой ключ (индекс) всегда должен быть в порядке возрастания. Мне нужно добавить ограничение для этого в модели Ян. какое-нибудь решение для этого?
Ограничить проверку увеличения индекса в модели Ян
Ответы (1)
Вы можете добавить ограничение must
, которое гарантирует это.
module increasing-index {
namespace "org:example:increasing-index";
prefix "oeii";
list item {
must "not(preceding-sibling::item) or preceding-sibling::item/index < index" {
error-message "Items must be ordered by index value in increasing order.";
}
key index;
leaf index {
type uint32;
}
}
}
Условие not(preceding-sibling::item) or preceding-sibling::item/index < index
выше означает следующее: либо нет предшествующих элементов, либо нет предшествующих элементов, значение индекса которых меньше значения индекса текущего элемента. Условию должен удовлетворять каждый элемент в списке.
<?xml version="1.0" encoding="utf-8"?>
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<oeii:item xmlns:oeii="org:example:increasing-index">
<oeii:index>12</oeii:index>
</oeii:item>
<oeii:item xmlns:oeii="org:example:increasing-index">
<oeii:index>13</oeii:index>
</oeii:item>
<oeii:item xmlns:oeii="org:example:increasing-index">
<oeii:index>10</oeii:index>
</oeii:item>
</config>
Error at (9:3): failed assert at "/nc:config/oeii:item": Items must be ordered by index value in increasing order.
Примечание: если список равен ordered-by system
(по умолчанию), устройство, реализующее модель, может упорядочивать записи списка любым способом - даже без такого ограничения оно может упорядочивать, увеличивая значения индекса, поэтому, возможно, такое ограничение является избыточным семантическим. сахар.
person
predi
schedule
23.05.2018
Я пробовал ваш модуль янь, но он выдает ошибку как неожиданный символ (символы) 'p' (предшествующий-sibli). Нужно ли мне импортировать какой-либо другой модуль для поддержки этого. Я пробовал использовать инструмент yanglint.
- person J.K.Mahapatra; 23.05.2018
@ J.K.Mahapatra, мой пример представляет собой чистый действительный код YANG и должен компилироваться / проверяться в любом инструменте, совместимом с RFC6020 / RFC7950.
- person predi; 23.05.2018