天天看點

openstack 源碼分析

  Nova對于底層Hypervisor(如KVM/QEMU等)的調用與管理主要通過LibvirtDriver類,nova/virt/libvirt/driver.py

  Libvirt對Hypervisor的連接配接有兩種方式:一種是隻讀式,用于管理;另一種是認證式,用于操作;

  建立執行個體過程:/nova/api/ec2/cloud.py/L1193, run_instances(),擷取建立數目,kernal_id,ramdisk_id,鏡像uuid等通過self.compute_api.create()

  發送執行個體的資訊和要運作執行個體的請求消息到遠端排程器scheduler.

  

openstack 源碼分析

   從使用者發送請求(建立新執行個體)的工作流程:

   上圖是一個全局的流程圖,圖中每個服務是一個單獨的程序執行個體,他們之間通過rpc調用(廣播或者調用)另一個服務。

  nova-api服務是一個wsgi服務執行個體,建立新instance的入口代碼是在nova /api/openstack/compute/servers.py,處理函數為create(self, req, body);

  參數驗證之後,調用compute api的create 函數(代碼在nova/compute/api.py中):

http://www.infoq.com/cn/articles/openstack-access-request-calling-process

eclipse快捷鍵:

  注釋:ctrl+/

  跳轉函數定義:F3

  顯示outline: <code>ctrl+o</code>

  自己用c++實作c++反射機制;類比java反射機制