Copyright 2015, Cisco Systems, Inc
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
As of 18th August 2020 this application is no longer maintained. Developers are free to use the code as-is, including forking, but no more updates will be forthcoming from the project maintainers and any new or outstanding issues will neither be tracked nor responded to.
For a potential alternative, see YANG Suite.
An open-source Yang Browser and RPC Builder Application to experiment with Yang Data Models
Features
Browse data model tree and inspect yang properties
Restconf support is experimental
This application is under Beta mode, contributions / suggestions are welcome !!
pip package manager (https://pip.pypa.io/en/stable/installing/)
If already installed, make sure that pip / setuptools are upto date (commands may vary)
pip install --upgrade pip
Ubuntu: sudo pip install --upgrade setuptools
Ubuntu: sudo apt-get install python-virtualenv
Fedora: sudo dnf install python-virtualenv
MAC: sudo pip install virtualenv
Ubuntu: sudo apt-get install graphviz
Fedora: sudo dnf install graphviz
MAC: brew install graphviz
git clone https://github.com/CiscoDevNet/yang-explorer.git
cd yang-explorer
bash setup.sh
Note: sudo may be required if you do not use virtualenv.
See section 7 Troubleshooting for more:
If you get installation error for missing python.h or xmlversion.h try installing
dependency packages:
Ubuntu: sudo apt-get install libxml2-dev libxslt1-dev python-dev zlib1g-dev
Fedora: sudo dnf install libxml2-devel libxslt-devel python-devel zlib-devel
cd <install-root>/yang-explorer
git stash (if you have local changes)
git pull origin
git stash apply (if you have local changes)
bash setup.sh
YangExplorer data can be backed up from data directory and it is portable to new servers -
cp -r <install-root>/yang-explorer/server/data <backup-location>/data
Restore from backup location -
cd <install-root>/yang-explorer/server
# move current data to tmp location
mv data data_old
# replace data from backup location
cp -r <backup-location>/data data
cd <install-root>/yang-explorer
[sudo] ./start.sh &
Note: sudo may be required if you did not use virtualenv during installation.
http://localhost:8088/static/YangExplorer.html
# Determine <ip-address> using if-config
# Add ip-address/port in YangExplorer.html after following line:
cd <install-root>/yang-explorer/server/static
vi YangExplorer.html
var flashvars = {};
+ flashvars.host = '<ip-address>';
+ flashvars.port = '8088';
# save & quit
# Update ip-address in startup script
cd <install-root>/yang-explorer
vi start.sh
(update HOST variable with <ip-address>)
# save & quit
./start.sh
Note: sudo may be required if you did not use virtualenv during installation.
http://<ip-address>:8088/static/YangExplorer.html
YangExplorer uses user accounts to manage workspaces. You can create a user account using admin page (See 5.3.1 Creating User Account) or use the predefined login (guest/guest). You must login (click on the Login button on top right corner)
You can use guest login (guest/guest) or newly created account.
cd <install-root>/yang-explorer
source v/bin/activate
cd server
python manage.py --user <username> --git <git-url> --dir <path/to/yang/models>
example: local upload (assumes models are already available at dir path)
python manage.py bulkupload --user guest --dir /users/prgohite/git/yang/vendor/cisco/xr/531
example: git upload
python manage.py bulkupload --user guest --git https://github.com/YangModels/yang.git --dir vendor/cisco/xr/531
All models must be compiled successfully, in case of any error none of the models will be uploaded to yang-explorer.
You can explore yang models in explorer area (left pane) using tree navigation:
Value and Operation columns in explorer area are editable.
Explore model in explorer area by navigating model tree
Click value cell next to data node (leaf, container etc)
Edit values
Update netconf operations for edit-config (optional advance option)
Click RPC button under Build tab
Click Run button under Build tab
Yang Explorer uses ncclient library to execute RPCs, connection timeout can be configured via environment varible default timout value is 45 seconds.
#update value in start.sh & restart server
export NCCLIENT_TIMEOUT=120
Create a netconf / xml RPC
Click Script button under Build tab
Click Copy button to copy generated code into system clipboard
Save content as a python script (say example.py)
Run python script from command line using given instruction in script header comments.
Creating user account is optional as you can use default guest/guest login, however creating user account can be userful if you have a shared yang-explorer installation.
Device profiles can be created to quickly populate device info from drop-down list in yang-explorer.
Note: You can use default user login (guest/guest)
Collections can be used to save user generated RPCs on the server so that saved RPCs can be re-used.
Note: You can use default user login (guest/guest)
Targeted content in YangExplorer UI tree can be annotated in different color, usually to represent additional information about of the Yang model node.
Installation:
cd <install-root>/yang-explorer
bash setup.sh -a <path to annotation json file>
Please refresh browser to reflect changes. You should see UI model tree node name in different color as per annotation file.
Uninstall:
cd <install-root>/yang-explorer
bash setup.sh -r
bash setup.sh In end of setup.sh script log you should see something like this -
...
Creating default users ..
Copying default models ..
Setup completed..
Use start.sh to start yang-explorer server
Python 3 is not supported by ncclient. Please install python 2.7 before proceeding futher. If python 2.7 is already installed on your system along with python 3, virtualenv may try to create python 3 environment. You can do following -
cd YangExplorer
rm -rf v
# find path to python 2.7 on your system
➜ ~ which python2.7
/usr/bin/python2.7
# create a virtualenv with python 2.7, path may differ based on your installation
virtualenv -p /usr/bin/python2.7 v
# rerun setup
setup.sh