create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):

感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!

如有转载,请保留源作者博客信息。

Better Me的博客:blog.csdn.net/tantexian

如需交流,欢迎大家博客留言。

1、nova底层api创建虚拟机的route入口:
create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第1张图片

2、页面或者命令创建一个虚拟机,则会debug自动断电到pycharm代码:
create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第2张图片


3、调用compute的API接口代码(debug模式下可以看到compute_api对象为:nova.compute.api.API直接找到对应代码即可):
也可以使用debugF5跟踪: (eclipse模式的step into快捷键)

create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第3张图片

4、

在rv函数继续F5

跟踪到nova.compute.api.API的create函数:
create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第4张图片


create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第5张图片

create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第6张图片
create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第7张图片

create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第8张图片

create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第9张图片

create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第10张图片


上述代码表示cast将消息发给消息队列。接下来消息队列收到消息会执行conductor的manager里面代码:
根据build_instances。找到对应的函数:



在此处加上断点,重启服务:


create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第11张图片
create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第12张图片

create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第13张图片

接下来发送到消息队列调用manager代码(cctxt.cast函数中ctxt参数的remote_address:表示将要发送消息动作到主机158执行代码):


走调度算法(详细分析请参考后续nova-scheduler调度算法详解):

create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第14张图片


create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第15张图片
create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第16张图片
create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第17张图片
create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第18张图片

create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第19张图片
create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第20张图片


create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第21张图片


create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第22张图片

create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第23张图片
create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第24张图片
create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):_第25张图片
生成实例结束。

你可能感兴趣的:(create instance 生成创建虚拟机从nova到调用libvirt流程(pycharm debug):)