首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Yang中导入模块

如何在Yang中导入模块
EN

Stack Overflow用户
提问于 2016-12-03 11:36:58
回答 1查看 4K关注 0票数 1

我在试着建立一个CLI。我选择用“阳”来做。我对它很陌生,无法找到如何导入现有的模块。例如,我在github (https://github.com/YangModels/yang/blob/master/vendor/cisco/xe/1631/ietf-ospf.yang)上找到了一个ospf模块,我想将它导入到我自己的模块中。这能办到吗?多么?

EDIT1:

代码语言:javascript
复制
module mininet {

 /* name space */
 namespace "http://tail-f.com/ns/example/mininet";
 prefix mininet;

 import ietf-ospf {
     prefix ospf;
     revision-date 2015-03-09
 }

 leaf area-id-type {
     type yang:area-id-type;
 }
}

所以我试着用Piotr Babij帮助做这件事。不幸的是这不管用。我需要改变什么?area-id-type是ietf-ospf的类型.我遇到的错误是以下一个:

代码语言:javascript
复制
mininet.yang:12:3: error: trailing garbage after module
mininet.yang:12:3: error: unterminated statement
EN

回答 1

Stack Overflow用户

发布于 2016-12-03 17:38:26

您可以使用import语句在自己的模块中导入其他模块。它在RFC 7950和杨1.0的RFC 6020中都有描述。在YANG 1.1中,您可以导入相同模块的两个不同版本。除此之外,import语句在这两个版本中的工作方式都是相同的。

实际上,基本导入如下所示:

代码语言:javascript
复制
 module acme-system {
     namespace "http://acme.example.com/system";
     prefix "acme";

     import ietf-yang-types {
         prefix "yang";
         revision-date 2013-07-15;
     }

     leaf acme-ip-address {
         type yang:dotted-quad;
     }
 }

如果省略可选的revision-date语句,则导入未定义的模块修订。因此,一般来说,使用它是一个很好的实践。

强制prefix语句允许您引用导入模块中的内容。在示例中,导入的ietf-yang-types模块的前缀是yang,因此很明显,yang:dotted-quad引用了来自该模块的类型。在您的示例中,您已经将前缀设置为ospf,因此您应该让ospf:area-id-type引用来自该模块的类型定义。如果您导入多个模块,则需要确保它们的前缀是唯一的。

此外,您正在导入ietf-ospf模块最古老的可用修订版。我只是希望这是你真正想做的。

无论如何,一旦您导入一个模块,您就可以:

  • 使用导入模块或其子模块中在顶层定义的任何groupingtypedef
  • 使用导入模块或其子模块中定义的任何extensionfeatureidentity
  • mustpathwhen语句中使用导入模块的模式树中的任何节点,或者作为augmentdeviation语句中的目标节点。

在上面的示例中,来自typedef dotted-quadietf-yang-typesacme-system模块中使用。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40947301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档