创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)

本文相关参考博客:http://blog.csdn.net/tantexian/article/details/38559669

自己搭建samba将相关代码映射:(参考博客:http://blog.csdn.net/tantexian/article/details/38275761


pycharm的windows代码映射:
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第1张图片



web页面点击创建虚拟机:
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第2张图片


chorme浏览器F12开启debug获取network的url链接:
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第3张图片


映射到openstack的horizon的openstack-dashboard代码模块:(更多请自行学习djangbook及相关django资料)
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第4张图片

创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第5张图片

创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第6张图片
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第7张图片


后续跟进到novaclient的server.create(更多详细请回顾第11次课的视频教程及本次视频教程讲解)
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第8张图片


创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第9张图片
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第10张图片
分析servers.create()函数重要逻辑代码:
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第11张图片
日志打印结果:


根据第十一次课视频教程,接下来跟进到nova-api的入口:



先附上上图中提到的两种方法之一的直接分析代码跟进代码方法(以上图代码为例):
第一步找到self.compute_api:
然后再找到compute(注:此例中的诸如compute要么是在前面赋值,要么就是import导入进来的模块):
接下来去nova.compute模块中查找compute.API()
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第12张图片
接下来在API()类找到对应的create方法:
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第13张图片
成功找到。

再讲解上图中提到的两种方法之二的打印对象跟踪代码方法(以上图代码为例):
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第14张图片


创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第15张图片
注意:上图代码修改完毕记得重启nova-api服务使代码生效!!!!(后续中任何修改代码都需要重启相关服务才能使代码生效,所以不再重复讲解需要重启服务!!!)

创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第16张图片



创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第17张图片

创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第18张图片




创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第19张图片




所有的cctx.call或者cctxt.cast调用规则都雷同,下图只讲解一次,后续不再进行重复讲解。
注:其中call为同步等待消息返回值,为同步。cast则直接丢调用消息过去,不需要有返回值,为异步。
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第20张图片


出现下面错误则直接从其他模块将LOG模块复制过来即可:
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第21张图片
如下图:



 



此处调用scheduler模块的重要逻辑:
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第22张图片


创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第23张图片

创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第24张图片


创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第25张图片

创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第26张图片
关于调度模块的流程跟踪,请自行根据之前讲解的两种方法进行跟踪,由于代码流程太长,就不再一一跟进。





调度模块结束,继续回到生成虚拟机流程:



创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第27张图片




创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第28张图片



创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第29张图片


创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第30张图片


创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第31张图片




创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第32张图片


创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第33张图片

创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第34张图片


创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第35张图片

整个openstack从页面生成虚拟机到,一直跟踪到底层libvirt驱动层调用libvirt流程到此就全部完成了。


接下来补充一些关于openstack如何调用libvirt的知识(供参考):
上述通过_conn连接domain后的对象则直接调用/usr/lib64/python2.7/site-packages/libvirt.py函数:
创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备)_第36张图片



更多详细请参考博文第二部分分析:
http://blog.csdn.net/tantexian/article/details/41517191。

你可能感兴趣的:(创建虚拟机生成虚拟机全程日志打印输出流程详解(openstack开发必备))