【问题标题】:YANG: How can I include a container from another module?YANG:我怎样才能包含来自另一个模块的容器?
【发布时间】:2017-10-30 17:37:56
【问题描述】:

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

【问题讨论】:

  • 根据您要实现的目标,除了分组之外,您还应该查看augment 声明。它允许将您的模式节点注入现有的模式节点层次结构,这就是您在示例中尝试引用的容器。

标签: opendaylight ietf-netmod-yang


【解决方案1】:

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

假设第一个模块包含:

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”语句定义了数据模型中的位置 插入新节点的层次结构,以及“when”语句 定义新节点有效的条件。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      • 2017-09-27
      • 1970-01-01
      • 2021-06-08
      • 2015-06-08
      相关资源
      最近更新 更多