YANG模型浏览器与RPC构建工具

一个开源的YANG模型浏览器和RPC构建工具,用于实验YANG数据模型,支持上传/编译YANG模型、构建NetConf RPC、生成Python示例代码等功能。

  • by AymThomas
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 AymThomas/mcp

使用说明

版权所有2015,思科系统公司

根据Apache许可证2.0版(“许可证”)许可; 除非遵守许可证,否则您不得使用此文件。 您可以在以下网址获得许可证副本

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则软件 根据许可证分发的内容按“原样”分发, 无任何明示或暗示的保证或条件。 请参阅许可证,了解管理权限和 许可证下的限制。

主控程序

一个开源的Yang浏览器和RPC Builder应用程序,用于实验Yang数据模型

特性

  • 从用户界面或命令行上传/编译yang模型
  • 构建NetConf RPC
  • 生成Python示例代码 新
  • 搜索杨expaths 新
  • 对真实的netconf服务器执行RPC
  • 将创建的RPC保存到集合中以供以后使用
  • 为模型构建依赖关系图
  • 浏览数据模型树并检查yang属性

Restconf支持 实验性的

此应用程序处于测试模式,欢迎投稿/建议!!

#####屏幕截图:

2.安装 ####2.1首次安装 #####先决条件:

  • MAC、Linux(Windows不支持)
  • python 2.7
  • pip包管理器(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
  • virtualenv(推荐)
   Ubuntu: sudo apt-get install python-virtualenv
   Fedora: sudo dnf install python-virtualenv
   MAC: sudo pip install virtualenv
  • 石墨(http://www.graphviz.org/Download.php)
   Ubuntu: sudo apt-get install graphviz
   Fedora: sudo dnf install graphviz
   MAC: brew install graphviz
  • 带有最新flash插件的浏览器(用谷歌chrome测试)

#####下载并安装:

   git clone https://github.com/CiscoDevNet/WSL2.git
   cd WSL2
   bash setup.sh

   Note: sudo may be required if you do not use virtualenv.

更多信息请参见第7节故障排除:

   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

####2.2更新现有安装

  cd <install-root>/WSL2
  git stash (if you have local changes)
  git pull origin
  git stash apply (if you have local changes)
  bash setup.sh

####2.3备份数据

YangExplorer数据可以从数据目录备份,并且可以移植到新服务器-

   cp -r <install-root>/WSL2/server/data <backup-location>/data

从备份位置还原-

   cd <install-root>/WSL2/server

   # move current data to tmp location
   mv data data_old
   
   # replace data from backup location
   cp -r <backup-location>/data data

3.运行YangExplorer ####3.1在本地主机上运行 #####启动服务器:

   cd <install-root>/WSL2
   [sudo] ./start.sh &

   Note: sudo may be required if you did not use virtualenv during installation.

#####启动资源管理器:

   http://localhost:8088/static/YangExplorer.html

####3.2使用ip地址运行(共享服务器) #####启动服务器:

   # Determine <ip-address> using if-config
   
   # Add ip-address/port in YangExplorer.html after following line:
   cd <install-root>/WSL2/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>/WSL2
      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

4.注意事项

  • 杨模型上传失败,解决方法:使用谷歌Chrome。
  • 更多信息请参见第6节故障排除:

5.用户指南(待定)

####5.1工作流程

#####5.2.1登录: YangExplorer使用用户帐户来管理工作区。您可以使用管理页面创建用户帐户(请参阅5.3.1创建用户帐户)或使用预定义的登录名(访客/客人)。您必须登录(点击右上角的登录按钮)

您可以使用访客登录 (客人/客人) 或新创建的帐户。

#####5.2.2添加/删除杨模型:

使用WSL2用户界面上传(待定:屏幕截图已过时)
  • 点击 管理模型 标签
  • 点击 工作区 标签
  • 点击 添加 按钮
    • 点击 浏览 并选择要上传的模型
    • 点击 上传
    • 清除 按钮可用于清除上传窗口中的模型
  • 单击订阅和取消订阅按钮,使所选模型在资源管理器区域可见/不可见
  • 单击“删除”按钮从用户帐户中删除所选模型
从设备同步
  • 点击 管理模型 标签
  • 点击 设备 标签
    • 从配置文件列表中选择设备
      • YangExplorer将在设备上列出yang型号
    • 选择要同步到YangExplorer工作区的模型
    • 同步 将模型同步到YangExplorer的按钮
    • 同步过程中可能会遇到以下错误:
      • 缺失的型号:从列表中选择缺失的型号,然后再次尝试同步
      • 重复模型:在工作空间选项卡中,选择重复模型并删除
  • 点击 工作区 标签
  • 单击订阅和取消订阅按钮,使所选模型在资源管理器区域可见/不可见
  • 单击“删除”按钮从用户帐户中删除所选模型
使用服务器控制台上传模型
   cd <install-root>/WSL2
   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

所有模型都必须成功编译,如果出现任何错误,所有模型都不会上传到WSL2。

#####5.2.3生成模型依赖图:

  • 点击 管理模型 标签
  • 点击 工作区 标签
    • 选择一个或多个模型名称以获取依赖关系图
    • 如果没有选择模型,则将使用所有订阅的模型来生成图形
  • 点击“图形”按钮以生成图形

#####5.2.4创建RPC: 您可以使用树导航在资源管理器区域(左侧窗格)中探索yang模型:

  • 资源管理器区域中的值和操作列是可编辑的。

  • 通过浏览模型树在资源管理器区域中探索模型

  • 单击数据节点(叶子、容器等)旁边的值单元格

  • 编辑值

    • 选择<get>和<get-config>进行get、get-config-netconf操作
    • 为rpc选择<rpc>
    • 输入数据值以进行编辑配置操作
    • 使用 重置 右上角的按钮,用于重置模型树中的数据
  • 更新netconf操作以编辑配置(可选高级选项)

![alt tag](https://github.com/CiscoDevNet/WSL2/blob/master/docs/images/netconf-operations.png)
  - Select **Operations** tab
  - Select error-option
  - Check / Uncheck lock option
  • 点击 远程过程调用 按钮下方 构建 标签

#####5.2.5执行RPC:

  • 使用创建RPC 5.2.4
  • 在设备设置选项卡中填充设备信息
  • 点击 跑 按钮下方 构建 标签

Yang Explorer使用ncclient库执行RPC,可以通过配置连接超时 环境变量默认超时值为45秒。

   #update value in start.sh & restart server
   export NCCLIENT_TIMEOUT=120
5.2.6生成Python示例:
  • 创建netconf/xml RPC -使用创建RPC 5.2.4 -(或)提供自定义netconf XML(单击自定义RPC复选框)

  • 点击 脚本 按钮下方 构建 标签

  • 点击 复制 将生成的代码复制到系统剪贴板的按钮

  • 将内容另存为python脚本(例如example.py)

  • 使用脚本头注释中的给定指令从命令行运行python脚本。

5.2.7将RPC保存到集合:
  • 使用创建RPC 5.2.4
  • 点击 保存 按钮下方 构建 标签

#####5.2.7加载已保存的RPC:

  • 点击 集合 选项卡
  • 双击要加载的RPC标题。

####5.3管理任务

#####5.3.1创建用户帐户(可选):

创建用户帐户是可选的,因为您可以使用默认的访客/访客登录,但创建用户帐户可能很有用 如果您有共享的WSL2安装。

  • 点击 管理员 YangExplorer中的按钮
  • 以管理员身份登录(用户:admin,密码:admin)
  • 在管理页面上,单击 用户 链接
  • 在“用户配置文件”页面上,单击 添加用户 链接(右上)
  • 添加用户帐户信息并单击 保存 (警告:密码以明文形式传输)

#####5.3.2创建设备配置文件:

可以创建设备配置文件,以便从WSL2的下拉列表中快速填充设备信息。

注意:您可以使用默认用户登录(访客/客人)

  • 点击 “创建设备配置文件” 链接打开 构建->设备设置
  • (或)单击 “创建设备配置文件” 链接打开 管理模型->设备
  • (或)单击 管理员 YangExplorer中的按钮
    • 以访客身份登录或自己登录
    • 在管理页面上,单击 设备配置文件 链接
  • 在“用户配置文件”页面上,单击 添加设备配置文件 链接(右上)
  • 添加设备凭据(设备登录信息不安全)
    • 添加netconf凭据(连接到netconf服务器时需要)
    • 添加restconf凭据(当前未使用)
  • 点击 保存

#####5.3.3创建集合:

集合可用于在服务器上保存用户生成的RPC,以便可以重复使用保存的RPC。

注意:您可以使用默认用户登录(访客/客人)

  • 点击 管理员 YangExplorer中的按钮
  • 以访客身份登录或自己登录
  • 在管理页面上,单击 集合 链接
  • 在“用户配置文件”页面上,单击 添加收藏 链接(右上)
    • 提供集合名称
    • 从下拉框中选择用户
    • 提供此集合的描述
  • 点击 保存

###6其他功能 ####6.1 UI模型树注释 YangExplorer UI树中的目标内容可以用不同的颜色进行注释,通常表示有关Yang模型节点的其他信息。

安装:

  cd <install-root>/WSL2
  bash setup.sh -a <path to annotation json file>

请刷新浏览器以反映更改。您应该根据注释文件看到不同颜色的UI模型树节点名称。

卸载:

  cd <install-root>/WSL2
  bash setup.sh -r

###7故障排除 ####7.1安装 #####7.1.1缺少python.h或xmlversion.h时出错

  • Ubuntu:sudo apt-get安装libxml2开发libxslt1开发python开发
  • Mac:xcode选择--安装

#####7.1.2 django.db.utils。操作错误:在“翊N”附近:语法错误

  • http://stackoverflow.com/questions/33270297/django-db-utils-operationalerror-near-n-syntax-error

#####7.1.3安装后,如果您无法使用guest/guest登录,请尝试以下操作之一

  • mv服务器/data/db.sqlite3服务器/data/db.sqlite3_backup
  • bash setup.sh 在setup.sh脚本日志的末尾,您应该看到这样的内容-
      ...
      Creating default users ..
      Copying default models ..
      Setup completed.. 
      
      Use start.sh to start WSL2 server

#####7.1.4由于不支持python 3,安装失败 ncclient不支持Python 3。请先安装python 2.7,然后再继续。如果您的系统上已经安装了python 2.7和python 3,virtualenv可能会尝试创建python 3环境。您可以执行以下操作-

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

####7.2杨模型上传 #####7.2.1杨模型上传失败

  • 目前需要Chrome浏览器才能使用用户界面上传模型
  • 请查看失败消息,如果缺少依赖模型,您将在消息窗口中看到特定错误。