Skip to content

pyang#

pyang とは#

  • pyang は、Python で書かれた YANG バリデーター 、トランスフォーマー、およびコード ジェネレーターです。
  • 分かりやすくいうとpyang は、YANG データモデルを解析するPython ツールのこと
  • YANG モジュールの正確性を検証したり、YANG モジュールを他の形式に変換したり、プラグインを記述してモジュールからコードを生成したりするために使用できます。
  • YANG ( RFC 7950 ) は、IETF NETMOD WGによって開発された NETCONF ( RFC 6241 )用のデータ モデリング言語
  • Pyang はYANG データ モデルを解析し、他のフォーマットに変換して、API の構築方法を理解するのに役立つ

sample lab#

  • pyang はデバイスなどから取得したデータモデルを解析するツール
  • データが手元にないので今回はサンプルデータを用いる
  • git clone https://github.com/111pontes/xr-pl2.gitでローカルにデータを落とす
  • 対象ディレクトリに移動して以下コマンドの実行
  • pyang --format tree --tree-depth 3 Cisco-IOS-XR-um-interface-cfg.yang
    (pyang) omron@DESKTOP-3K743CQ:~/pyang/xr-pl2/yang/modules/cisco-ios-xr/711$ pyang --format tree --tree-depth 3 Cisco-IOS-XR-um-interface-cfg.yang
    module: Cisco-IOS-XR-um-interface-cfg
      +--rw interfaces
         +--rw interface* [interface-name]
         |  +--rw interface-name        xr:Interface-name
         |  +--rw sub-interface-type
         |  |     ...
         |  +--rw ipv4
         |  +--rw ipv6
         |  +--rw dampening!
         |  |     ...
         |  +--rw encapsulation
         |  |     ...
         |  +--rw shutdown!
         |  +--rw mtu?                  uint32
         |  +--rw logging
         |  |     ...
         |  +--rw bandwidth?            uint32
         |  +--rw description?          string
         +--rw interface-preconfigure* [interface-name]
            +--rw interface-name        xr:Interface-name
            +--rw sub-interface-type
            |     ...
            +--rw ipv4
            +--rw ipv6
            +--rw dampening!
            |     ...
            +--rw encapsulation
            |     ...
            +--rw shutdown!
            +--rw mtu?                  uint32
            +--rw logging
            |     ...
            +--rw bandwidth?            uint32
            +--rw description?          string