openstack代码分析

以下已创建虚拟机为题目对openstack进行通透性代码分析,写得简陋望各位手下留情


  1.发起ec2命令(nova/api/ec2/__init__.py)

 

  2.执行方法__call__解析URL发送参数

 

  3.执行/nova/api/ec2/apirequest.py:apirequest.invoke,这里有一个ec2动作解析,如RunInstances->run_instances;变成小写各独立单词加下划线

 

  4.转向/nova/api/ec2/cloud.py:CloudController.run_instances,在此方法内执行真正创建动作

 

  5./nova/compute/api.py:Api.create,调用rpc.cast,发送数据到目标物理服务器nova-compute

 

  6.目标服务器接收到数据(/nova/rpc/impl_kombu.py),解析数据,并且执行数据里所带的方法run_instance


  7.真正的run_instance在manager.py执行,所有动作功能都在这里被管理,在这里会指向到底是libvirt,db,还是其他来完成工作

 

  8.这里的虚拟机启动是libvirt完成完成,进入文件nova/virt/libvirt/connection.py,执行对应的代码 

 

  9.随后代码自然很容易顺利进行


-----------------------------------------

  后续补充


在api内进行rpc调用时需要注意,如果需要获取返回值调用rpc.call,如果不需要返回值则调用rpc.cast


/usr/lib/python2.6/site-packages/nova/api/ec2/__init__.py

/usr/lib/python2.6/site-packages/nova/api/ec2/cloud.py

/usr/lib/python2.6/site-packages/nova/compute/api.py

/usr/lib/python2.6/site-packages/nova/compute/manager.py

/usr/lib/python2.6/site-packages/nova/virt/libvirt/connection.py


扩展创建虚拟磁盘

http://192.168.1.xx:8773/services/Cloud/?AWSAccessKeyId=test%3Atest&Action=CreateVdisk&hostname=novaxx&vdisknum=1&vdisksize=2G&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2012-07-04T01%3A29%3A53&Version=2009-11-30&Signature=M6381JzVGn6aOSgS70MTmtBdsYceu07cI9WTkv7rw5k%3D


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值