Модель Янга для остаточной операции (%)

Я хочу создать модель ян с некоторым целочисленным диапазоном, например, от 1000 до максимума, и значения должны быть введены с шагом 500. Могу ли я каким-либо образом использовать оператор остатка (модуль)% в ян или функция диапазона, такая как python с шагами .

Или мне просто нужно использовать шаблон с некоторым регулярным выражением.


person HPG    schedule 13.12.2017    source источник


Ответы (1)


Используйте ограничение must для дальнейшего ограничения значения целочисленного типа, которое уже ограничено range.

module modulus {
    yang-version 1.1;
    namespace "org:so:modulus";
    prefix "som";

    leaf value {
        type int32 {            
            range "1000..max";
        }
        must ". mod 500 = 0" {
            error-message "values must be entered in steps of 500";
        }
    }
}

Спецификация XPath предоставляет оператор mod.

<?xml version="1.0" encoding="utf-8"?>
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <som:value xmlns:som="org:so:modulus">1501</som:value>
</data>

Результат:

    Error at (3:3): failed assert at "/nc:data/som:value": values must be entered in steps of 500

Пока

<?xml version="1.0" encoding="utf-8"?>
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <som:value xmlns:som="org:so:modulus">2000</som:value>
</data>

хорошо.

person predi    schedule 13.12.2017
comment
Должен ли я импортировать эту часть в свой модуль YANG, так как это не дает мне того же результата. Или мне нужно импортировать некоторый модуль модуля библиотеки org.so { yang-version 1.1; пространство имен org:so:modulus; приставка сом; - person HPG; 13.12.2017
comment
@HPG, нет, мой пример YANG - это чистый стандартный YANG. Вы можете удалить оператор yang-version. - person predi; 13.12.2017