searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

openstack创建虚机代码调用过程梳理

2023-10-30 09:20:20
32
0

1.查看\nova\api\openstack\compute\routes.py路由文件,可知下一步调用servers.py中的create函数。

   

2.\nova\api\openstack\compute\servers.py中的create( )函数解析req,body数据后调用computer的api的create( )函数。

   

   

3.\nova\compute\api.py的create( )函数,检查ip,端口,主机聚合等,进而调用self._create_instance(  )函数。

   

create() 函数调用同文件下的self._create_instance()函数。

     

4.\nova\compute\api.py的_create_instance()函数,验证输入参数,调度。

     

_create_instance()调用self.compute_task_api.schedule_and_build_instance()转到conductor的api接口。

     

5./nova/conductor/api.py的schedule_and_build_instance函数调用conductor的rpc服务      self.conductor_compute_rpcapi.schedule_and_build_instances( ),远程调用过程

     

/nova/conductor/rpcapi.py的schedule_and_build_instances( )。

     

6.conductor的rpc服务异步调用自己manager文件的def schedule_and_build_instances( )函数

/nova/conductor/manager.py 的 schedule_and_build_instances( )函数

   

schedule_and_build_instances( )给虚机添加uuid,进而开始调度manager中的host_lists = self._schedule_instances( )获得主机可用列表

   

nova/conductor/manager.py 的 _schedule_instances( )开始查询可用主机host_lists = self.query_client.select_destinations( )

   

nova/scheduler/client/query.py 中的 query_client.select_destinations( )返回最合适的目标

   

query.py文件的select_destinations( )转到scheduler 的rpc服务self.scheduler_rpcapi.select_destinations( )

/nova/scheduler/rpcapi.py   的  select_destinations( )

     

scheduler 的rpc服务select_destinations()异步调用scheduler的manager中的cctxt.call(ctxt, 'select_destinations', **msg_args)

nova/scheduler/manager.py 的 select_destinations( )返回最适合RequestSpec的目标

   

其中,调用底层的driver.select_destinations( )

   

7.返回到nova/conductor/manager.py的 schedule_and_build_instances( )函数,循环调用compute的rpc服务调用build_and_run_instance,异步构建实例

   

8.到compute的manager的def build_and_run_instance()

nova/compute/manager.py  的 build_and_run_instance( )

   

build_and_run_instance调用utils.spawn_n(_locked_do_build_and_run_instance,
context, instance, image, request_spec,
filter_properties, admin_password, injected_files,
requested_networks, security_groups,
block_device_mapping, node, limits, host_list)

   

9.utils.spawn_n( )调用_do_build_and_run_instance( )

nova/compute/manager.py 的 _do_build_and_run_instance( )

   

 

10.  _do_build_and_run_instance( )调用_build_and_run_instance( )

nova/compute/manager.py 的 _build_and_run_instance( )

   

11._build_and_run_instance( )调用_build_resources( )准备资源,调用self.driver.spawn创建虚机

  

spawn调用libvirt等底层命令创建虚机。
0条评论
0 / 1000
y****n
4文章数
0粉丝数
y****n
4 文章 | 0 粉丝
原创

openstack创建虚机代码调用过程梳理

2023-10-30 09:20:20
32
0

1.查看\nova\api\openstack\compute\routes.py路由文件,可知下一步调用servers.py中的create函数。

   

2.\nova\api\openstack\compute\servers.py中的create( )函数解析req,body数据后调用computer的api的create( )函数。

   

   

3.\nova\compute\api.py的create( )函数,检查ip,端口,主机聚合等,进而调用self._create_instance(  )函数。

   

create() 函数调用同文件下的self._create_instance()函数。

     

4.\nova\compute\api.py的_create_instance()函数,验证输入参数,调度。

     

_create_instance()调用self.compute_task_api.schedule_and_build_instance()转到conductor的api接口。

     

5./nova/conductor/api.py的schedule_and_build_instance函数调用conductor的rpc服务      self.conductor_compute_rpcapi.schedule_and_build_instances( ),远程调用过程

     

/nova/conductor/rpcapi.py的schedule_and_build_instances( )。

     

6.conductor的rpc服务异步调用自己manager文件的def schedule_and_build_instances( )函数

/nova/conductor/manager.py 的 schedule_and_build_instances( )函数

   

schedule_and_build_instances( )给虚机添加uuid,进而开始调度manager中的host_lists = self._schedule_instances( )获得主机可用列表

   

nova/conductor/manager.py 的 _schedule_instances( )开始查询可用主机host_lists = self.query_client.select_destinations( )

   

nova/scheduler/client/query.py 中的 query_client.select_destinations( )返回最合适的目标

   

query.py文件的select_destinations( )转到scheduler 的rpc服务self.scheduler_rpcapi.select_destinations( )

/nova/scheduler/rpcapi.py   的  select_destinations( )

     

scheduler 的rpc服务select_destinations()异步调用scheduler的manager中的cctxt.call(ctxt, 'select_destinations', **msg_args)

nova/scheduler/manager.py 的 select_destinations( )返回最适合RequestSpec的目标

   

其中,调用底层的driver.select_destinations( )

   

7.返回到nova/conductor/manager.py的 schedule_and_build_instances( )函数,循环调用compute的rpc服务调用build_and_run_instance,异步构建实例

   

8.到compute的manager的def build_and_run_instance()

nova/compute/manager.py  的 build_and_run_instance( )

   

build_and_run_instance调用utils.spawn_n(_locked_do_build_and_run_instance,
context, instance, image, request_spec,
filter_properties, admin_password, injected_files,
requested_networks, security_groups,
block_device_mapping, node, limits, host_list)

   

9.utils.spawn_n( )调用_do_build_and_run_instance( )

nova/compute/manager.py 的 _do_build_and_run_instance( )

   

 

10.  _do_build_and_run_instance( )调用_build_and_run_instance( )

nova/compute/manager.py 的 _build_and_run_instance( )

   

11._build_and_run_instance( )调用_build_resources( )准备资源,调用self.driver.spawn创建虚机

  

spawn调用libvirt等底层命令创建虚机。
文章来自个人专栏
openstack_yxc
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0