AOC萌新探索之旅第二期——在线AOC环境进阶
本萌新又来啦
接着上期的内容,
我们这期试试修改一下包,给他安装到AOCmini上去,然后观察一下修改效果;
继续帮大家趟水探坑
今天我们一起来尝试一下在线CLOUD IDE中我们修改代码怎样传到AOCmini上去。
本次涉及在线环境基础的debug操作,不了解的同学可以看下第一期的内容:
https://bbs.huaweicloud.com/forum/thread-143693-1-1.html
==================================================================
进入正题吧
上一期吹了python,那我们这期就先拿python来试水吧。
看到python我最想尝试的就是cloudide上修改完成之后直接debug是否可以生效
虽然我的潜意识告诉我这不可能但我还是倔强的试了一下
我在ncs_map中return前增加了一句日志打印,并在return之前打上断点
启动debug后我们发现原来在12行的断点跳到了11行,
像不像vscode我们debug代码没编译直接运行,
隐约已经察觉是由于debug的执行文件与代码不符合
果不其然,运行完成后并未打出日志
倔强的试探终以失败告终
其实原因很简单 就是我们写的这个代码没同步给aocmini吧,
这个时候我发现右侧有个上传的按钮
上传成功后,我们再次启动debug,我们的打印终于成功啦
“the modification can be done!”
这里我们对python在这套在线环境中的修改与上传至AOCmini总结下来就一句话:修改完成后务必点击右侧插件栏中的上传按钮
========================================
下面我们来尝试修改一下YANG和JINJA
改这俩文件需要配套来改,毕竟一个是数据结构一个是映射逻辑
修改之前我们先确定一下这里我们要增加怎样一个数据结构吧
这里我随手写了个名为test的leaf节点(随手就给大家趟了个大水坑,后面我们详细来说)
预期在aocmini业务管理中会新增一个test的输入框并且在试运行的数据中增加一个名为test的字符串参数
aocmini的业务管理界面由业务YANG文件自动生成,我这里在业务YANG中添加test节点应该没有问题
试运行的数据由jinja模板映射而来,修改jinja应该也没有问题
话不多说,我们开搞
在YANG文件中增加名为test的leaf节点
这里可以看到实际调用的是hbng-aaa.j2,我们修改com目录下的该文件
在JINJA中增加test结构的映射节点
这次我们直接点击上传
我们打开业务管理 发现并未生效,WEBUI中未生成test相关数据输入框
屏幕面前我的表情
经过一阵分析发现
由于WEBUI界面是通过业务YANG直接自动生成的,
这里未生效就只能有一个原因:
是在线环境的上传按钮不能对YANG文件修改生效!!!
我们把包下载到本地直接从AOCmini上传来试一下
先卸载删除原来的aaamini的ssp包
将本地的SSP包直接上传至AOCmini
点击部署将SSP包激活
然后我们点击业务管理验证一下这样修改是否生效
可以看到这里我们修改的YANG文件以及正确的生成了WEBUI,我们填入字符串
点击试运行后我们发现生成的报文中还是没有我们增加的test节点
这是为啥(再揪头发就没了)
经过一番交流与研究(就是刚才我们随手增加test节点掉进的那个大坑)
我发现生成netconf报文时实际还会调用SND包中的设备YANG文件,
如果业务YANG与设备YANG有不一致数据那么我们新增的这test节点就无法下发到设备上去,
因为设备不能识别,所以netconf报文不会生成该条数据
我们将AOCmini中预置的SND包下载到本地
打开YANG文件夹在其中搜索key为username的结构
在huawei-aaa-lam.yang中找到了我们业务YANG中对应的users结构
可以看到其中确实没有test节点,
那么我们从设备YANG中选择一个节点添加至业务YANG中进行尝试
这里我们选择isLoginAnytime来进行尝试
JINJA中我们也进行相应的修改
修改完成后我们打包进行验证,WEBUI上没有问题,正常生成
点击试运行,进行debug进入断点后,我们可以看到我们填写的数据正常传入ide
这里可以看到生成的netconf报文已经包含isLoginAnytime
至此,真是不容易,目标终于都达成了;坑趟了不少,希望大家不要像我一样黑眼眶
=============================================================================================================
下面我们来做一下技术总结
1、在线环境上python文件修改完成后务必点击右侧插件栏中的上传按钮上传至AOCmini
2、在线环境上业务YANG文件与JINJIA文件修改后使用右侧插件栏中上传按钮无效,需要本地打包后手动上传至AOCmini(应该算个bug了,不过已经有人在修改了)
3、业务YANG的修改要基于SND包中的设备YANG的结构,不能随手写设备YANG中不存在的节点,这种节点设备无法识别不能下发到设备上去
希望这些记录可以帮助到大家,也希望大家多多参与多多交流。
下一次探索一下JINJA的映射逻辑以及具体的业务开发,敬请期待哦。
- 点赞
- 收藏
- 关注作者
评论(0)