文章目录
- 1 yang建模语言及pyang背景简介
- 2 pyang工具特性
- 3 pyang安装及命令行简介
- 4 pyang的yin、yang模型转化
- 5 pyang生成tree文件
- 6 yang语法校验
- 7 pyang小结
你离懂yang模型只差一个pyang
1 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 的利器;
2 pyang工具特性
- 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.
其他开发输出的框架插件,例如代码生成;
3 pyang安装及命令行简介
安装很简单,如果你已经有python,直接用pip安装即可:
pip install pyang
或
pip3 install pyang
pyang命令行的使用,提供了丰富的文档说明通过pyang --help或者man pyang都能看到非常详细的信息:
普通用户模式转换主要关注如下几个即可:
- -f 输出格式,这里支持的格式包括tree、yang、yin等,用户可以根据需求灵活选择;
- -o输出文件名;
- -p输出路径;
4 pyang的yin、yang模型转化
pyang的格式 yin和yang转换很简单,按照下面命令完成即可:
pyang -f yin -o ietf-yang-types.yin ietf-yang-types.yang
这里提一下,yang模型的设计之初是参照了中国的太极八卦图的,有阴就有yang,先贴个图大家感受一下:
- 太极图:
- yang模型截图
- yin模型截图
5 pyang生成tree文件
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文件的截图:
6 yang语法校验
因为没有仔细理解功能,这里只是将功能简单尝试了以下,后续有机会再系统的梳理一下这个功能,此处只给出简单的说明:
pyang --ietf test.yang
使用上述命令行,可以对编写yang文件进行ietf标准的语法校验,如下所示:
7 pyang小结
总的来说pyang是我们使用yang的一个必不可少的命令行、工具和插件,这里给出的一只是笔者平时的一些使用经验,它还有许多强大的功能在这里没有一一详述。技术这个东西因为太多太杂,所以遇到一些软件实际上就是一场缘分,但是还没有熟悉就要离开,去迎接新的东西和挑战,也是我们经常会遇到的情况,有缘再写一个强大的小结!(__)