虚拟机创建流程中neutron代码分析(一)

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。虚拟机创建流程中neutron代码分析(一),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

前言:

在openstack的学习当中有一说法就是网络占学习时间的百分之七十。这个说法或许有夸大的成分,但不可否认的是openstack中的

网络是及其重要的部分,并且难度也是相当大。试图通过nova创建虚拟机过程中nova和neutron服务交互的过程来学习openstack网络。

写个学习笔记,整理思路。

 

版本信息:

openstack版本:Newton

linux系统:ubuntu1604-server

 

简要流程:

nova在创建虚拟机时会向neutron请求ip和mac地址等port信息。 大概的代码流程如下图所示。

虚拟机创建流程中neutron代码分析(一)

虚拟机创建流程中neutron代码分析(一)

 

 

 详细分析:

 

 _build_and_run_instance():

作用:

nova创建虚拟机与底层libvirt交互的函数。在该函数中请求了各种资源,如镜像,网络,磁盘等。

通过调用_build_resources()函数整体来获得资源的请求。

虚拟机创建流程中neutron代码分析(一)

 

 _build_resources()

作用:

调用_build_networks_for_instance()函数获取port信息。

调用_default_block_device_names()函数获取块设备信息。

获取网络是重点分析的对象。

虚拟机创建流程中neutron代码分析(一)

 

 _build_networks_for_instance()

作用:

判断传入主机信息是否已经分配过ip和mac,如果已经分配过ip和mac就调用get_instance_new_info()函数更新网卡信息。

如果port还没有被分配ip,mac等,则调用_allocate_network()函数获取信息。

虚拟机创建流程中neutron代码分析(一)

 

 _allocate_network()

作用:

1 修改vm的状态为创建中,修改任务状态为网络中

2 采用异步的方式起一个线程去执行_allocate_network_async()函数

虚拟机创建流程中neutron代码分析(一)

 

_allocate_network_async()

作用:

在一个循环中多次尝试调用_allocate_for_instance()函数去获取网络。

虚拟机创建流程中neutron代码分析(一)

 

allocate_for_instance()

作用:

初始化一个http连接的对象:neutron = get_client(),通过该对象能够从nova服务端发送restful请求到neutron服务端。

调用_create_ports_for_instance()函数去创建port信息。

 

补充:

port信息是指一些列网络元素的集合,实际指的是数据库中的一张表。

虚拟机创建流程中neutron代码分析(一)

其中可以看到有项目id,uuid,名称,网络id等其中我们最关心的是 mac_address 和ip_allocation,不用讲太多,这肯定是mac地址和ip地址。

 

 虚拟机创建流程中neutron代码分析(一)

 

_create_ports_for_instance()

作用:

判断了安全组是否启用,并判断安全组是否配置,如果没有则配置默认的安全组。

调用_create_port_minimal()函数

虚拟机创建流程中neutron代码分析(一)

 

_create_port_minimal()

作用:

判断主机启动时是否制定了ip地址,如果制定了ip地址则将该ip地址填充进变量port_req_body中,调用port.client的方法

以restful的请求方式去neutron请求port中各变量信息。

到这里为止,nova端的网络请求就到一段落,请求会发送到neutron-server中,neutron会处理接下来的过程。

虚拟机创建流程中neutron代码分析(一)

 

关于neutron-server中网络部分的处理,见下一篇笔记。

 

 

参考:http://blog.csdn.net/gj19890923/article/details/51284296

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/194325.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!