openstack之在nova-api中擴展接口

// 未經(jīng)博主本人允許,謝絕轉(zhuǎn)載,謝謝

近期有需求在openstack的nova-api模塊中添加接口添诉,借此機會搞清楚nova-api如何利用wsgi等組件做的url api mapping

https://docs.openstack.org/nova/latest/contributor/api.html 這是官網(wǎng)對如何擴展API做的說明

首先增加接口有兩種形式潭陪,一種是為已有的Resource擴展接口,由ControllerExtension入口做擴展即可培己,一種是新增了Resource及其相關(guān)接口,那么胚泌,由ResourceExtension入口做擴展省咨。用戶應(yīng)當(dāng)根據(jù)自己的業(yè)務(wù)場景來選擇合適的擴展方式。

兩個類及說明如下


以ControllerExtension為例玷室,可以看admin_password.py是如何做ControllerExtension的

首先實現(xiàn)了AdminPasswordController類零蓉,在其中實現(xiàn)change_password接口,接口用裝飾器標(biāo)注:@wsgi.action('changePassword')

這個裝飾器的作用是為函數(shù)屬性wsgi_action賦值穷缤,另wsgi_action='changePassword'敌蜂,后續(xù)在初始化的時候,會用到這個字段

接下來需要繼承V21APIExtensionBase類實現(xiàn)get_controller_extensions接口


這里面同時指明了這個AdminPasswordController類是為名為servers的resource擴展的

nova-api初始化時津肛,在APIRouterV21類初始化api路由表章喉,會做_register_controllers,此時會拿到所有ControllerExtension類的子類實例,調(diào)用get_controller_extensions秸脱,將用戶自己實現(xiàn)的controller注冊到對應(yīng)的resource實例(比如上面AdminPasswordController對應(yīng)的resource名字是servers落包,會根據(jù)servers拿到resource實例)的action和extension中,如action的注冊方式是提取這個controller的wsgi_actions信息摊唇,添加到resource實例中wsgi_actions字典中咐蝇,這個例子中,key是changePassword巷查,value是AdminPasswordController的change_password接口信息


如此有序,請求進來時,wsgi的__call__接口進入_process_stack接口吮便,進入get_method邏輯時


會根據(jù)wsgi_action字典記錄的action name找到對應(yīng)的Controller類和method name信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笔呀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子髓需,更是在濱河造成了極大的恐慌许师,老刑警劉巖畸肆,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溺忧,死亡現(xiàn)場離奇詭異,居然都是意外死亡循狰,警方通過查閱死者的電腦和手機咧擂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門逞盆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人松申,你說我怎么就攤上這事云芦。” “怎么了贸桶?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵舅逸,是天一觀的道長。 經(jīng)常有香客問我皇筛,道長琉历,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任水醋,我火速辦了婚禮旗笔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拄踪。我一直安慰自己蝇恶,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布惶桐。 她就那樣靜靜地躺著艘包,像睡著了一般的猛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上想虎,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音叛拷,去河邊找鬼舌厨。 笑死,一個胖子當(dāng)著我的面吹牛忿薇,可吹牛的內(nèi)容都是我干的裙椭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼署浩,長吁一口氣:“原來是場噩夢啊……” “哼揉燃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起筋栋,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤炊汤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后弊攘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抢腐,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年襟交,在試婚紗的時候發(fā)現(xiàn)自己被綠了迈倍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡捣域,死狀恐怖啼染,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情焕梅,我是刑警寧澤迹鹅,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站丘侠,受9級特大地震影響徒欣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蜗字,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一打肝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挪捕,春花似錦粗梭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滞乙。三九已至,卻和暖如春鉴嗤,著一層夾襖步出監(jiān)牢的瞬間斩启,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工醉锅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留兔簇,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓垄琐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親经柴。 傳聞我的和親對象是個殘疾皇子狸窘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)坯认,斷路器翻擒,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • Openstack Mitaka安裝部署教程 一、實驗環(huán)境: 系統(tǒng):centos7.2-minimal 網(wǎng)絡(luò):管理...
    指間_流年閱讀 2,180評論 0 0
  • 文/唐宋 為什么為什么 為什么會離開鹃操,會支離破碎 我狠狠地抽著煙 仿佛能把煙草融進我的身體里 可是如何抽韭寸,也抽不了...
    唐宋a閱讀 269評論 2 1
  • 每個初入職場的新人都希望自己能盡快打開工作局面恩伺,力爭在短短幾年內(nèi)實現(xiàn)自己事業(yè)、愛情椰拒、家庭的大豐收晶渠。但往往事與愿違,...
    第一任職閱讀 511評論 0 3
  • 現(xiàn)在的社會燃观,節(jié)奏越來越快褒脯。有些人弄弄副業(yè),有些人要休息休息缆毁, 所以不應(yīng)該占用別人的太多時間番川。 就好比: 拜訪別人的...
    wyscjm閱讀 1,884評論 0 0