杨:我怎么能包含另一个模块的容器?

时间:2017-10-30 17:37:56

标签: opendaylight ietf-netmod-yang

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

2 个答案:

答案 0 :(得分: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”语句      定义新节点有效的条件。

答案 1 :(得分:0)

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