Openstack nova api 處理過程

2021-06-14 05:21:55 字數 3200 閱讀 1826

乙個python函式示例:

乙個python類的示例:

所有的web請求引數都被封裝在environ這個dictionary中,start-response函式讓人難以理解,其主要作用是設定reponse的http返回碼和http header.返回的list的乙個item對應於http response中的乙個chunk。

2、webob -- 

webob.dec.wsgify示例:

利用.ini檔案將python物件載入到執行環境中

為被載入的物件進行進行初始化設定。

.ini示例:

python code 示例:

#filter

class logfilter():

…@classmethod

def factory(cls, global_conf, **kwargs):

return logfilter

class showversion():

def __init__(self):

pass

@classmethod

def factory(cls, global_conf, **kwargs):

return showversion()

class calculator():

def __init__(self):

pass

def __call__(self, environ, start_response):

… …@classmethod

def factory(cls, global_conf, **kwargs):

return calculator()

4、routes -- 

routes :

將url 對映到controller或action上。

靈活的url 對映機制

針對restful的resource定義

python code示例:

>>> class hello(object):

...     def __init__(self, req):

...         self.request = req

...     def get(self):

...         return ''''''

...     def post(self):

...         return 'hello %s!' % self.request.params['name']

>>> hello = rest_controller(hello)

we'll run the same test as before:

.. code-block:: python

>>> hello_world = router()

>>> hello_world.add_route('/', controller=hello)

>>> req = request.blank('/')

>>> resp = req.get_response(hello_world)

>>> print resp

1、openstack架構簡單介紹

nova-api模組對外提供基於nova-api的restful的web api介面。

nova-api模組對各個功能模組的呼叫是通過queue topic的方式非同步地進行,資料傳遞使用database進行。

nova-api模組和各個功能模組在作業系統中都是作為service存在。

2、nova-api初始化過程

1. openstack/bin/nova-api-compute.py

if __name__ == '__main__':

utils.default_flagfile()

flags.flags(sys.argv)

logging.setup()

utils.monkey_patch()

server = service.wsgiservice('osapi_compute')

service.serve(server)

service.wait()

2. nova.service.wsgiservice

class wsgiservice(object):

"""provides ability to launch api from a 'paste' configuration."""

3. nova.wsgi.server

4. openstack/etc/api-paste.ini  

[composite:osapi_compute]

use = call:nova.api.openstack.urlmap:urlmap_factory

/: oscomputeversions

/v1.1: openstack_compute_api_v2

/v2: openstack_compute_api_v2

5. nova.api.openstack.compute.apirouter 

class apirouter(nova.api.openstack.apirouter):

extensionmanager = extensions.extensionmanager

def create_resource():

return wsgi.resource(controller())

6. nova.api.openstack.wsgi.resource

7. nova.api.openstack.compute.servers.controller

3、nova-api 的類結構模型

4、nova api request 的處理過程

USB host處理過程

在usbh core.c中有乙個函式usbh process 這個函式很重要,main 函式每迴圈一次,它就執行一次,它處理所有usb核心狀態的變化,typedef enum host state 根據這個當前狀態 phost gstate 處於以上哪個狀態的不同,做出不同的處理過程。其中最重要的要...

Hadoop map reduce處理過程

1 在hadoop中,每個mapreduce任務都被初始化為乙個job。每個job又可以分成兩個階段 map階段和reduce階段 map函式接受乙個形式的輸入,然後同樣產生乙個形式的中間輸出,hadoop會負責將所有具有相同結果中間key值的value集合到一起傳給reduce函式,reduce函...

編譯處理過程

編譯,編譯程式讀取源程式 字元流 對之進行詞法和語法的分析,將高階語言指令轉換為功能等效的彙編 再由匯程式設計序轉換為機器語言,並且按照作業系統對可執行檔案格式的要求鏈結生成可執行程式。c源程式標頭檔案 預編譯處理 cpp 編譯程式本身 優化程式 匯程式設計序 鏈結程式 可執行檔案 1.編譯預處理 ...