[源码依次]OpenStack中nova组件创立虚拟机的源码流程

  • A+
所属分类:1万元创业项目
摘要

小白源码资源站此处以OpenStackmitaka版本为例,实践最新的Ocata版本也差不多,以创立一个虚拟机为例来剖析nova源码中履行流程,该流程有助于二次开辟,浏览源码前最好先熟悉一下pastedeploy、

小白源码资源站http://www.526bt.com/account?__preferral=41b2453033.2042

此处以OpenStack mitaka版本为例,实践最新的Ocata版本也差不多,以创立一个虚拟机为例来剖析nova源码中履行流程,该流程有助于二次开辟,浏览源码前最好先熟悉一下pastedeploy、webob、stevedo小白源码资源站http://www.526bt.com/account?__preferral=41b2453033.2042ore等openstack中的中间库,和rpc音讯通信机制。

装置完OpenStack后,一切的源码在/usr/lib//usr/lib/python2.7/site-packages/目次下,nova效劳器端源码在nova目次中,客户端源码在novaclient目次中,静态加载nova插件的映照文件在nova-XXXX-info目次中的entry_points.txt文件中。

客户端:

novaclient在初始化的过程会把/nova/v2/下一切的xxxxManager类加载出去,并经过_construct_http_client()结构一个HTTPClient对象,用来发送url恳求,每个xxxxManger类都直接或直接秉承了base.ManagerWithFind类,xxxxManager类中的方法主要用来结构url格局、恳求参数、恳求方法。客户端创立虚拟机的恳求对应在/novaclient/v2/servers.py中的_boot()方法,该方法调用了基类Manager中的_create()方法。

效劳器端:

nova在回收到客户真个恳求后,会经过pastedeploy加载/etc/nova/api-paste.ini设备文件来完成url的映照、认证、恳求等,设备文件中包罗了四类部件app(应用依次)、filter(过滤器)、pipeline(管道)、composite(复合体)。

依据客户端恳求的版本,此处是v2.1,继续进入openstack_compute_api_v21这个管道体。

起首,经过pipeline_factory_v21()方法选择认证计谋,默许设备文件/etc/nova/nova.conf中的认证计谋auth_strategy为keystone。然后,会进入keystone管道体,前面一系列cors compute_req_id faultwrap sizelimit authtoken keystonecontext为过滤器,auth_token是OpenStack中各个组件交互时来完成平安认证的,其调用的中间方法为/keystonemiddleware/auth_token中的_do_fetch_token(),osapi_compute_app_v21为具体的应用,nova主要的功用都在该应用中完成。

该应用依次调用了APIRouterV21类对应的工厂方法factory(),该方法在其父类/nova/api/openstack/APIRouterV21中完成,其创立了一个APIRouterV21()实例,其初始化方法经过以下代码完成插件的静态加载。

个中,经过mapper=ProjectMapper()完成一切插件的url映照,_register_controllers()方法将一切插件对应XXXXController类中的方法停止注册,指定mapper所对应的具体action举措。以创立虚拟机为例,其将会调用/nova/api/openstack/compute/servers.py中的create()方法,该方法调用了/nova/compute/api.py中的create()方法,该方法中会检测用户权限,并调用了_create_instance()方法,该方法中完成虚拟机创立的准备任务。厥后,调用了/nova/conductor/api.py中的build_instances()方法,该方法经过/nova/conductor/rpcapi.py中的build_instances()方法发送创立虚拟机的rpc音讯。

随后,会履行manager.py中的build_instances()方法,该方法会经过_schedule_instances()方法完成虚拟机的调解,个中也触及到rpc音讯通信,调用的中间方法在filter_scheduler.py中的select_destinations(),此处不展开说清晰明了,build_instances()调用了/nova/compute/rpcapi.py中的build_and_instance()方法发送rpc音讯,恳求创立虚拟机。

终究,/nova/compute/manager.py中的build_and_run_instance()方法会完成虚拟机的创立,其调用的中间方法为driver.spawn(),具体的driver由/etc/nova/nova.conf中的compute_driver指定。

分享当前页面将至少获得10%佣金,点此获取推广链接(规则说明)。

本站VIP源码资源永久免费下载!持续更新!www.526bt.com

加入999永久VIP会员带做项目包赚钱!教引流包搭建,社群资源共享!

新项目更新通知QQ群:767688774 站长技术交流QQ付费群:552760713

点击这里给我发消息备用QQ:点击这里给我发消息

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 源码安装视频教程
  • 教程项目网赚APP扫码下载
  • weinxin

微信公众号认证的服务号
域名快速备案个人网站企业公司网站域名快速代理备案快速服务|网站快备
【微信开发者认证】微信开放平台认证/开发者资质申请/认证微信登录/微信分享app
认证服务号 现成服务号 现成公众号 现成认证公众号 微信公众号
点击注册

发表评论

您必须才能发表评论!