文章目录

  • 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都能看到非常详细的信息:

【开源推介02-pyang】-你离yang模型只差一个pyang工具_yang模型

普通用户模式转换主要关注如下几个即可:

  • -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,先贴个图大家感受一下:

  • 太极图:
  • 【开源推介02-pyang】-你离yang模型只差一个pyang工具_YANG_02

  • yang模型截图
  • 【开源推介02-pyang】-你离yang模型只差一个pyang工具_YANG_03

  • yin模型截图
  • 【开源推介02-pyang】-你离yang模型只差一个pyang工具_YANG_04

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文件的截图:

【开源推介02-pyang】-你离yang模型只差一个pyang工具_yang模型_05

6 yang语法校验

因为没有仔细理解功能,这里只是将功能简单尝试了以下,后续有机会再系统的梳理一下这个功能,此处只给出简单的说明:

pyang  --ietf  test.yang

使用上述命令行,可以对编写yang文件进行ietf标准的语法校验,如下所示:

【开源推介02-pyang】-你离yang模型只差一个pyang工具_tree文件_06

7 pyang小结

总的来说pyang是我们使用yang的一个必不可少的命令行、工具和插件,这里给出的一只是笔者平时的一些使用经验,它还有许多强大的功能在这里没有一一详述。技术这个东西因为太多太杂,所以遇到一些软件实际上就是一场缘分,但是还没有熟悉就要离开,去迎接新的东西和挑战,也是我们经常会遇到的情况,有缘再写一个强大的小结!(__)