YANG:如何从另一个模块中包含一个容器?

YANG: How can I include a container from another module?

我正在编写一个 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 的内容。

这显然是不可能的。您只能以这种方式使用分组,而不能使用容器。

您应该在第二个模块中导入第一个模块,然后用第二个扩充第一个模块:

假设第一个模块包含:

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 allows a module to insert additional nodes into data models, including both the current module (and its submodules) and an external module. This is useful, for example, for vendors to add vendor-specific parameters to standard data models in an interoperable way.

The "augment" statement defines the location in the data model hierarchy where new nodes are inserted, and the "when" statement defines the conditions when the new nodes are valid.