Предположим, у меня есть два модуля, я хотел бы расширить один список новыми листами.
module A {
list deviceList {
key name;
leaf name{
}
leaf hostname{
}
}
}
И я хотел бы увеличить его до другого листа
module B {
list generalInfo{
key customerName;
leaf customerName{
type string;
}
augment moduleA:deviceList {
leaf ipAddress{
}
}
}
Я сделал это, используя группировку, контейнер и список внутри, но это полностью меняет нашу существующую структуру, я бы хотел опустить контейнер и группировку, если это возможно.
1 ответ
Похоже, вы хотите повторно использовать часть определения схемы, поместить ее в другое место в дереве схемы и добавить к ней узел.
Вы не можете сделать это так, как вы пытались, потому что оператор augment
может появиться только на корневом уровне или в операторе uses
.
Вы можете сделать это только с помощью grouping
, но вы можете опустить container
. Рефакторинг A: определите grouping
, который является list
. Обратитесь к нему в B и увеличьте его.
module A {
grouping devices {
list deviceList {
key name;
leaf name{
}
leaf hostname{
}
}
}
uses devices;
}
module B {
list generalInfo{
key customerName;
leaf customerName{
type string;
}
uses moduleA:devices {
augment "deviceList" {
leaf ipAddress{
}
}
}
}
}
Обратите внимание: если вы используете оператор augment
в модуле B, это означает, что любое устройство, реализующее модуль B, должно также реализовать модуль A и его корневой уровень list deviceList
. См. RFC 7950 4.2.8:
Когда сервер реализует модуль, содержащий оператор «дополнения», это означает, что реализация расширенного модуля сервером содержит дополнительные узлы.
Я не уверен, что вы этого хотите. Если нет, то переместите определение группировки в модуль, который содержит только определения группировки (без каких-либо «операторов определения данных»), и импортируйте его как из A, так и из B.
Похожие вопросы
Новые вопросы
ietf-netmod-yang
YANG - это язык моделирования данных, изначально разработанный для моделирования данных, которыми управляет протокол конфигурации сети (NETCONF). Со времени публикации YANG версии 1 (RFC6020) YANG использовался или предлагался для использования в других протоколах (например, RESTCONF и CoMI). Используйте этот тег для вопросов, связанных с языком моделирования данных YANG и инструментами, которые его обрабатывают.