亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

openstack-wsgi的route中怎樣增加api

發布時間:2021-12-01 17:44:00 來源:億速云 閱讀:158 作者:柒染 欄目:云計算

今天就跟大家聊聊有關openstack-wsgi的route中怎樣增加api,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

今天要講解的是當我們以后生成了這樣一個url了,下一步wsgi框架又是如何根據url去調用nova底層相應的代碼。

講解這個之前,先回憶下查看routes已發布的api。更多詳情請查看文章: openstack_ice之wsgi詳解(paste從ini配置文件->routesr具體發布流程)


1、首先將route mapper信息打印出來:

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

openstack-wsgi的route中怎樣增加api

重啟openstack-nova-api服務

service  openstack-nova-api restart    

tailf /var/log/nova/api.log    

openstack-wsgi的route中怎樣增加api

以上打印的route信息,就是底層通過wsgi,將api以添加到route的mapper,發布給外邊調用。


2、接下來講解如何添加自定義api,并加入到route mapper中,發布出來給外部調用.

注:接下來以網絡模塊為例,增加一個test_api接口。

下圖為未添加前,network的route信息:

openstack-wsgi的route中怎樣增加api


通過之前的文章分析,找到wsgi的入口:

vim /usr/lib/python2.6/site-packages/nova/api/openstack/compute/contrib/os_networks.py


openstack-wsgi的route中怎樣增加api

os_network為openstack封裝的,用來增加映射route mapper路由的類:


openstack-wsgi的route中怎樣增加api

中添加下圖代碼:test_member:post、test_collection:

openstack-wsgi的route中怎樣增加api

每次添加完成需要重新發布需要重啟openstack-nova-api服務。

重啟后查看os-network路由信息如下圖:

openstack-wsgi的route中怎樣增加api


openstack-wsgi的route中怎樣增加api

如上圖發現test_member、test_collection路由信息發布成功。

member_actions發布的api是針對每個特定的對象,例如獲取id為1的person全部信息。因此需要在url前面增加id字段屬性。

collection_actions發布的api是針對對象集合,例如獲取所有person的信息。


跟多關于route信息請參考文章: wsgi-restful-routes詳解


3、講解:發布api成功,后臺的route控制器接收到匹配的url之后,如何控制調用后臺代碼

url的產生大致有三種方式:

1:用dashboard通過novaclient組裝。(網絡的由neutronclient組裝,簡單起見,后續文章默認只提及novaclient)

2:通過系統命令例如nova list產生。

3:通過curl自己組裝。


第一和第二種方式,請參考之前對應文章詳解。接下來詳細介紹下如果通過curl調用已發布的route,開發自定義api。

注:底層api開發,多采用第三種方式進行。


第一步獲取token:

執行nova --debug list:

openstack-wsgi的route中怎樣增加api

其中X-Auth-Token后面的值為需要獲取的token。

第二步:

將token值添加到環境變量中(也可以不加入環境變量,每次請求時帶上)

vim  vim .bashrc

openstack-wsgi的route中怎樣增加api


這樣以后就可以直接使用$token獲取token的值。

export .bashrc文件

echo $token將看到token值


第三步:發送url請求:

curl -i 'http://192.168.1.158:8774/v2/b077619bde964a4eb924db869fba977d/servers/f664204b-d4ec-4d01-aec9-757719a8d06b' -X GET -H "X-Auth-Project-Id: admin" -H "User-Agent: python-novaclient" -H "Accept: application/json" -H "X-Auth-Token:$token"


對應的route為:

openstack-wsgi的route中怎樣增加api


當執行上述url請求時候:則對應找到上述路由。

openstack-wsgi的route中怎樣增加api


4、請求自定義的路由test_collection:

openstack-wsgi的route中怎樣增加api

根據路由信息,拼接url為:


curl -i 'http://192.168.1.158:8774/v2/b077619bde964a4eb924db869fba977d/os-networks/test_collection' -X POST -H "X-Auth-Project-Id: admin" -H "User-Agent: python-novaclient" -H "Accept: application/json" -H "X-Auth-Token:$token"    

錯誤為404沒有找到:
openstack-wsgi的route中怎樣增加api


打開route發布源碼:

vim /usr/lib/python2.6/site-packages/nova/api/openstack/compute/contrib/os_networks.py

openstack-wsgi的route中怎樣增加api


進入到路由控制器:NetworkController():

openstack-wsgi的route中怎樣增加api

可以看到路由控制器類有方法show(),delete()等。

在控制器類定義test_collection方法,如下圖:

openstack-wsgi的route中怎樣增加api

重啟nova-api服務添加的代碼生效。(每次修改api模塊代碼則必須重啟服務,后面將不再重復)


再次請求url:

curl -i 'http://192.168.1.158:8774/v2/b077619bde964a4eb924db869fba977d/os-networks/test_collection' -X POST -H "X-Auth-Project-Id: admin" -H "User-Agent: python-novaclient" -H "Accept: application/json" -H "X-Auth-Token:$token"    

openstack-wsgi的route中怎樣增加api

api日志:
openstack-wsgi的route中怎樣增加api

在test_collection函數中,添加自定義的底層代碼即可。

到此添加底層api完成。

看完上述內容,你們對openstack-wsgi的route中怎樣增加api有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西畴县| 柳林县| 巴青县| 荥阳市| 通辽市| 饶平县| 湘阴县| 理塘县| 济阳县| 和田县| 泽普县| 丰都县| 大丰市| 黄梅县| 安宁市| 门源| 丰原市| 政和县| 泸定县| 曲靖市| 安康市| 勐海县| 祥云县| 惠州市| 张家港市| 东明县| 霍州市| 泽州县| 隆化县| 黄陵县| 东至县| 沽源县| 临颍县| 青浦区| 会理县| 汤阴县| 绥棱县| 兴安县| 彭山县| 铜鼓县| 红桥区|