Как увеличить список из одного модуля в другой и добавить листья YANG

Предположим, у меня есть два модуля, я хотел бы расширить один список новыми листами.

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{
                
            }
        }
}

Я сделал это, используя группировку, контейнер и список внутри, но это полностью меняет нашу существующую структуру, я хотел бы опустить контейнер и группировку, если это возможно.


person marhyno    schedule 21.10.2020    source источник


Ответы (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.

person Piotr Babij    schedule 21.10.2020