Условное присвоение значений по умолчанию в ян
У меня есть два свойства в модели:
- протокол листа,
- листовой порт.
Я хочу указать, что:
- если protocol = 'ssh', то значение порта по умолчанию равно 22,
- если protocol = 'http', то значение порта по умолчанию равно 80,
- и т.п.
Как я могу выразить это в ян?
1 ответ
Решение
Там нет никаких условных default
значения в ЯНГ - нужно два default
заявления для двоих defaults
с разными значениями и одним leaf
может иметь только один default
подоператор. Вы можете обойти это, однако. Возможно, используя presence container
вместо вашего протокола leaf
:
module conditional-default {
namespace "http://example.com/conditional-default";
prefix "excd";
grouping common {
leaf port {
type int32;
}
}
container config {
container ssh {
presence "If this container is present, ssh is configured.";
uses common {
refine port {
default 22;
}
}
}
container http {
presence "If this container is present, http is configured.";
uses common {
refine port {
default 80;
}
}
}
}
}
От RFC6020, 7.5.5.:
Оператор "присутствии" присваивает значение присутствию контейнера в дереве данных. В качестве аргумента она принимает строку, содержащую текстовое описание значения присутствия узла.