ЯН: Как я могу включить контейнер из другого модуля?

Я пишу модуль YANG, в который хочу включить контейнер из другого модуля, т.е. я хочу определить НОВЫЙ контейнер в модуле, который я пишу, который ссылается на контейнер из другого модуля. Пример неудачной попытки:

 module newmodule {
 yang-version 1.1;
 namespace "urn:nist:params:xml:ns:yang:newmodule";
 prefix newmodule;

    import ietf-access-control-list {
      prefix "acl";
    }

    container newprofile {
      uses acl:access-lists;
    }
  }

Я включил только основные части выше. Здесь acl: access-lists - это контейнер.

Можно ли составлять такие контейнеры? Я успешно пытался построить контейнеры из группировок. Однако в этом случае я не могу контролировать содержимое ietf-access-control-list.


person LostInTheFrequencyDomain    schedule 30.10.2017    source источник
comment
В зависимости от того, чего вы пытаетесь достичь, помимо группирования, вам также следует взглянуть на оператор augment. Он позволяет внедрять ваши узлы схемы в существующую иерархию узлов схемы, которая является тем контейнером, на который вы пытались ссылаться в примере.   -  person predi    schedule 02.11.2017


Ответы (2)


Вы должны импортировать первый модуль во второй, а затем дополнить первый вторым:

Допустим, первый модуль содержит:

module first {
  yang-version 1.1;
  namespace "http://first";
  prefix first;

  container first-container {
    description
      "First container";
}

Второй модуль должен иметь

module second {
  yang-version 1.1;
  namespace "http://second";
  prefix second;

  import first {
    prefix first;
  }

  augment "/first:first-container" {
    container second-container {
      description
        "Second container";
    }
  }
}

YANG 1.1 позволяет эту операцию:

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

Оператор «augment» определяет место в иерархии модели данных, куда вставляются новые узлы, а оператор «когда» определяет условия, при которых новые узлы являются допустимыми.

person Ariel Otilibili    schedule 07.11.2017

Очевидно, это невозможно. Таким образом можно использовать только группировку, но не контейнер.

person LostInTheFrequencyDomain    schedule 31.10.2017