你离懂yang模型只差一个pyang
YANG(RFC 7950)是NETCONF(RFC 6241)的数据建模语言,由IETF NETMOD WG开发。
pyang是一个YANG验证器,转换器和代码生成器,用python编写。 它可用于验证YANG模块的正确性,将YANG模块转换为其他格式,以及从模块生成代码。
以上文字引自https://github.com/mbj4668/pyang github项目pyang概要说明。
sdn、nfv盛行的今天,yang建模语言变得越来越重要,它定义于netconf协议,但是却超越了netconf协议本身,在网络世界迸发自己的活力。如今最大的开源sdn控制器-opendaylight以yang作为建模语言进行核心模型存储,netconf以及restconf纷纷依靠yang模型定义接口,定义南向模型、北向模型。最具sdn气息的openflow也有个伴侣协议of-config使用yang建模,借助netconf通道下发相关配置。yang很重要,但是用好yang可以选择的工具却并不多,pyang就是其中很重要的一个,这是一个由python代码编写的yang语法验证器、转换器以及代码生成器,一些开源软件使用它构建模型校验语法,比如开源netconf agent netopeer,我们作为用户也可以使用它进行语法校验,生成tree、yin等其它格式模型、数据。它是一个命令行,是一个学习好yang之路的一个好用的工具。后面系列会介绍另外一款商业yang浏览设计软件-- MG-SOFT Visual YANG Designer Professional Edition,这里就不在说明,本文主要介绍以下pyang的用法,用好它绝对是学习yang、编写yang 的利器;
Validate YANG modules.
校验yang模型;
Convert YANG modules to YIN, and YIN to YANG.
yang和yin模型相互转换
Translate YANG data models to DSDL schemas, which can be used for validating various XML instance documents. See InstanceValidation.
yang模型与dsdl结构模型转化
Translate YANG data models to XSD.
yang与xsd转化;
Generate UML diagrams from YANG models. See UMLOutput for an example.
生成yang模型uml;
Generate compact tree representation of YANG models for quick visualization. See TreeOutput for an example.
生成tree来呈现yang的快速视图;
Generate a skeleton XML instance document from the data model.
生成xml骨架实例;
Schema-aware translation of instance documents encoded in XML to JSON and vice-versa. See XmlJson.
xml、json实例转换
Plugin framework for simple development of other outputs, such as code generation.
其他开发输出的框架插件,例如代码生成;
安装很简单,如果你已经有python,直接用pip安装即可:
pip install pyang
或
pip3 install pyang
pyang命令行的使用,提供了丰富的文档说明通过pyang --help或者man pyang都能看到非常详细的信息:
普通用户模式转换主要关注如下几个即可:
pyang的格式 yin和yang转换很简单,按照下面命令完成即可:
pyang -f yin -o ietf-yang-types.yin ietf-yang-types.yang
这里提一下,yang模型的设计之初是参照了中国的太极八卦图的,有阴就有yang,先贴个图大家感受一下:
太极图:
yang模型截图
yin模型截图
tree文件是yang独有的一个文件,主要功能就是为yang生成一个快速化的浏览视图,笔者估计,上文提到的yang浏览编辑商业软件- MG-SOFT Visual YANG Designer Professional Edition 的yang视图八成就是基于这个yang tree视图做的。
如下所示为一个批量处理yang文件生成tree文件的命令行:
pyang -f tree yangdir/*.yang -o ouputdir/output.tree
下图是是生成的tree文件的截图:
因为没有仔细理解功能,这里只是将功能简单尝试了以下,后续有机会再系统的梳理一下这个功能,此处只给出简单的说明:
pyang --ietf test.yang
使用上述命令行,可以对编写yang文件进行ietf标准的语法校验,如下所示:
总的来说pyang是我们使用yang的一个必不可少的命令行、工具和插件,这里给出的一只是笔者平时的一些使用经验,它还有许多强大的功能在这里没有一一详述。技术这个东西因为太多太杂,所以遇到一些软件实际上就是一场缘分,但是还没有熟悉就要离开,去迎接新的东西和挑战,也是我们经常会遇到的情况,有缘再写一个强大的小结!(__)
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态