AOC萌新探索之旅第二期——在线AOC环境进阶

举报
oysterzz 发表于 2021/08/18 15:02:14 2021/08/18
【摘要】 本萌新又来啦接着上期的内容,我们这期试试修改一下包,给他安装到AOCmini上去,然后观察一下修改效果;继续帮大家趟水探坑今天我们一起来尝试一下在线CLOUD IDE中我们修改代码怎样传到AOCmini上去。本次涉及在线环境基础的debug操作,不了解的同学可以看下第一期的内容:https://bbs.huaweicloud.com/forum/thread-143693-1-1.html=...

本萌新又来啦又来了.jpg

接着上期的内容,

我们这期试试修改一下包,给他安装到AOCmini上去,然后观察一下修改效果;

继续帮大家趟水探坑

趟水坑.gif

 

今天我们一起来尝试一下在线CLOUD IDE中我们修改代码怎样传到AOCmini上去。

本次涉及在线环境基础的debug操作,不了解的同学可以看下第一期的内容:打广告.jpg

https://bbs.huaweicloud.com/forum/thread-143693-1-1.html

==================================================================

进入正题吧

上一期吹了python,那我们这期就先拿python来试水吧。

看到python我最想尝试的就是cloudide上修改完成之后直接debug是否可以生效

虽然我的潜意识告诉我这不可能但我还是倔强的试了一下 倔强.png

 

我在ncs_map中return前增加了一句日志打印,并在return之前打上断点

1.png

启动debug后我们发现原来在12行的断点跳到了11行,

像不像vscode我们debug代码没编译直接运行,

隐约已经察觉是由于debug的执行文件与代码不符合机智.jpg

2.png

 

果不其然,运行完成后并未打出日志

3.png

 

倔强的试探终以失败告终试探之后.jpg

其实原因很简单 就是我们写的这个代码没同步给aocmini吧,

 

这个时候我发现右侧有个上传的按钮瞎了.jpg

4.png

5.png

上传成功后,我们再次启动debug,我们的打印终于成功啦

“the modification can be done!”

6.png

mission.png

这里我们对python在这套在线环境中的修改与上传至AOCmini总结下来就一句话:修改完成后务必点击右侧插件栏中的上传按钮

 

 

========================================

 

下面我们来尝试修改一下YANG和JINJA

改这俩文件需要配套来改,毕竟一个是数据结构一个是映射逻辑哥俩好.png

 

修改之前我们先确定一下这里我们要增加怎样一个数据结构吧

这里我随手写了个名为test的leaf节点(随手就给大家趟了个大水坑,后面我们详细来说)

预期在aocmini业务管理中会新增一个test的输入框并且在试运行的数据中增加一个名为test的字符串参数

aocmini的业务管理界面由业务YANG文件自动生成,我这里在业务YANG中添加test节点应该没有问题

试运行的数据由jinja模板映射而来,修改jinja应该也没有问题

话不多说,我们开搞

在YANG文件中增加名为test的leaf节点

7.png

这里可以看到实际调用的是hbng-aaa.j2,我们修改com目录下的该文件

8.png

在JINJA中增加test结构的映射节点

9.png

这次我们直接点击上传

10.png

我们打开业务管理 发现并未生效,WEBUI中未生成test相关数据输入框

11.png

屏幕面前我的表情疑问.jpg

经过一阵分析发现

由于WEBUI界面是通过业务YANG直接自动生成的,

这里未生效就只能有一个原因:

是在线环境的上传按钮不能对YANG文件修改生效!!!

真相只有一个.jpg

我们把包下载到本地直接从AOCmini上传来试一下

先卸载删除原来的aaamini的ssp包

12.png

将本地的SSP包直接上传至AOCmini

13.png

点击部署将SSP包激活

14.png

15.png

然后我们点击业务管理验证一下这样修改是否生效

16.png

可以看到这里我们修改的YANG文件以及正确的生成了WEBUI,我们填入字符串

17.png

点击试运行后我们发现生成的报文中还是没有我们增加的test节点

18.png

这是为啥(再揪头发就没了)

经过一番交流与研究(就是刚才我们随手增加test节点掉进的那个大坑)

大坑.jpg

我发现生成netconf报文时实际还会调用SND包中的设备YANG文件,

如果业务YANG与设备YANG有不一致数据那么我们新增的这test节点就无法下发到设备上去,

因为设备不能识别,所以netconf报文不会生成该条数据

我们将AOCmini中预置的SND包下载到本地

打开YANG文件夹在其中搜索key为username的结构

在huawei-aaa-lam.yang中找到了我们业务YANG中对应的users结构

可以看到其中确实没有test节点,

那么我们从设备YANG中选择一个节点添加至业务YANG中进行尝试

19.png

这里我们选择isLoginAnytime来进行尝试

20.png

JINJA中我们也进行相应的修改

21.png

修改完成后我们打包进行验证,WEBUI上没有问题,正常生成

22.png

点击试运行,进行debug进入断点后,我们可以看到我们填写的数据正常传入ide

23.png

这里可以看到生成的netconf报文已经包含isLoginAnytime

24.png

 

至此,真是不容易,目标终于都达成了;坑趟了不少,希望大家不要像我一样黑眼眶疲惫.jpg

=============================================================================================================

下面我们来做一下技术总结王刚.jpg

1、在线环境上python文件修改完成后务必点击右侧插件栏中的上传按钮上传至AOCmini

2、在线环境上业务YANG文件与JINJIA文件修改后使用右侧插件栏中上传按钮无效,需要本地打包后手动上传至AOCmini(应该算个bug了,不过已经有人在修改了)

3、业务YANG的修改要基于SND包中的设备YANG的结构,不能随手写设备YANG中不存在的节点,这种节点设备无法识别不能下发到设备上去

希望这些记录可以帮助到大家,也希望大家多多参与多多交流。

下一次探索一下JINJA的映射逻辑以及具体的业务开发,敬请期待哦。

 

再见.jpg

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。