PyYANG docker image
How to build/install
Pull the hellt/pyang image from the docker hub with
docker pull hellt/pyang.
To locally build the image clone the repo and use
docker build -t <your_repo>/<project>:<tag> . command.
hellt/pyang image expects you to mount a directory with YANG models (aka working directory) by the path
/yang/. The following example demonstrates how to use the tools that are part of the PyYANG project with this configuration in mind:
# pyang tool example # navigate to a dir with the YANG model(s) and run the container # assuming the nokia-conf-combined.yang model is in the current directory ## create a tree representation of a yang model docker run --rm -v $(pwd):/yang hellt/pyang pyang -f tree nokia-conf-combined.yang
pyang, the following tools are part of the image:
XML skeleton wrapper
To simplify the process of getting the XML skeleton for the data modelled in YANG and referenced by its model path the
xmlsk.sh wrapper has been created. The sole purpose of this wrapper is to remove the prefix from the path string, since pyang's XML_SKELETON does not digest them.
xmlsk.sh wrapper the workflow of getting the XML skeleton boils down to the following steps:
- Take a YANG module's
M.yangjstree (HTML) representation and get the node path (
P) from the column named
Path. To make an example:
- run the
xmlsk.shwrapper with the both the node path and the YANG module referenced as follows:
# using the node path and the model from step 1 docker run --rm -v $(pwd):/yang hellt/pyang xmlsk.sh "/state:state/state:users/state:session/state:session-id" nokia-state-combined.yang
- As a result, you will be presented with an XML skeleton that you can use in your subtree filters.
Under the hood, the following command is executed inside the container:
pyang -f sample-xml-skeleton --sample-xml-skeleton-path "/state/users/session/session-id" nokia-state-combined.yang
The image is tagged with accordance to the PyYANG releases. The tag
2.1 means that PyYANG of version
2.1 is installed in the image. The untagged image will always represent the latest pyang version that was available at the time of the build process.