我在试着建立一个CLI。我选择用“阳”来做。我对它很陌生,无法找到如何导入现有的模块。例如,我在github (https://github.com/YangModels/yang/blob/master/vendor/cisco/xe/1631/ietf-ospf.yang)上找到了一个ospf模块,我想将它导入到我自己的模块中。这能办到吗?多么?
EDIT1:
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的类型.我遇到的错误是以下一个:
mininet.yang:12:3: error: trailing garbage after module
mininet.yang:12:3: error: unterminated statement发布于 2016-12-03 17:38:26
您可以使用import语句在自己的模块中导入其他模块。它在RFC 7950和杨1.0的RFC 6020中都有描述。在YANG 1.1中,您可以导入相同模块的两个不同版本。除此之外,import语句在这两个版本中的工作方式都是相同的。
实际上,基本导入如下所示:
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模块最古老的可用修订版。我只是希望这是你真正想做的。
无论如何,一旦您导入一个模块,您就可以:
grouping和typedef。extension、feature和identity。must、path和when语句中使用导入模块的模式树中的任何节点,或者作为augment和deviation语句中的目标节点。在上面的示例中,来自typedef dotted-quad的ietf-yang-types在acme-system模块中使用。
https://stackoverflow.com/questions/40947301
复制相似问题