OpenStack API的使用套路分享
寫在前面
近期有openstack和vmware相關的開發(fā)需求,N年前從事虛擬化運維的時候玩過了,所以對它倆的API使用套路早忘得一干二凈。這次借這個機會把使用套路做個文檔并分享出來,希望可以幫到有需要的盆友。本篇先分享openstack的API使用套路,后續(xù)再分享vmware api的使用套路。在本篇中,只給出了1個小例子,更多例子可自行去寫代碼,API的使用套路當然是萬變不離其宗。
OpenStack官方API文檔:https://docs.openstack.org/zed/api/
還有最重要的一點,請確保你已經搭建好openstack環(huán)境
獲取token
https://docs.openstack.org/api-quick-start/api-quick-start.html
通過上面的API頁面可得知,認證服務的API是:http://controller:5000/v3/
使用python代碼請求token
import?requests import?json USER?=?"admin" PASSWORD?=?"xxxxxx" DOMAIN?=?"Default" PROJECT?=?"admin" TOKEN_URL?=?"http://10.0.0.10:5000/v3/auth/tokens?nocatalog" def?getToken(): ????reqJson?=?{ ????????"auth":{ ????????????"identity":{ ????????????????"methods":["password"], ????????????????"password":{ ????????????????????"user":{ ????????????????????????"domain":{"name":DOMAIN}, ????????????????????????"name":USER, ????????????????????????"password":PASSWORD ????????????????????} ????????????????} ????????????}, ????????????"scope":{ ????????????????"project":{ ????????????????????"domain":{ ????????????????????????"name":DOMAIN ????????????????????}, ????????????????????"name":PROJECT ????????????????} ????????????} ????????} ????} ????payload?=?json.dumps(reqJson) ????headers?=?{ ????'Content-Type':?'application/json' ????} ????response?=?requests.request("POST",?TOKEN_URL,?headers=headers,?data=payload) ????return?response.headers.get("X-Subject-Token") if?__name__?==?"__main__": ????token?=?getToken() ????print(token)
獲取到的token如下:
gAAAAABj2cwy_AOflA6gDQiR8fGK0VzLGawXPScsKB-1hIp46JdKCY68Nuz8ZQ8-USTcyY_3cCoJRpIsq8OrcZl8ztMSkUU26VF_dnkBLm4lXAyM3dZF8lHWoqmEHOevfuC0IwqQdQ66FTUF7Nl9sFElFlB39QEuSR1mZSTBrJy6bwycd8a_C5c
小栗子:獲取所有實例詳情
假設有個需求,獲取所有實例的詳情信息。提到虛擬機實例,那肯定就是nova服務,所以要知道nova服務的api。在之前訪問API的頁面中,就是Compute服務。服務端點是http://controller:8774/v2.1
Compute API 官方文檔:https://docs.openstack.org/api-ref/compute/
openstack的api是完全遵循REST風格的api,通過上面的api文檔可得知,請求方法是GET,點開detail,可以看到更詳細的API說明。
下面使用python寫代碼
import?requests import?json USER?=?"admin" PASSWORD?=?"xxxxxxxxx" DOMAIN?=?"Default" PROJECT?=?"admin" TOKEN_URL?=?"http://10.0.0.10:5000/v3/auth/tokens?nocatalog" SERVER_DETAIL_URL?=?"http://10.0.0.10:8774/v2.1/servers/detail" def?getToken(): ????reqJson?=?{ ????????"auth":{ ????????????"identity":{ ????????????????"methods":["password"], ????????????????"password":{ ????????????????????"user":{ ????????????????????????"domain":{"name":DOMAIN}, ????????????????????????"name":USER, ????????????????????????"password":PASSWORD ????????????????????} ????????????????} ????????????}, ????????????"scope":{ ????????????????"project":{ ????????????????????"domain":{ ????????????????????????"name":DOMAIN ????????????????????}, ????????????????????"name":PROJECT ????????????????} ????????????} ????????} ????} ????payload?=?json.dumps(reqJson) ????headers?=?{ ????'Content-Type':?'application/json' ????} ????response?=?requests.request("POST",?TOKEN_URL,?headers=headers,?data=payload) ????return?response.headers.get("X-Subject-Token") def?serversDetail(token): ????headers?=?{ ????'X-Auth-Token':?token ????} ????response?=?requests.request("GET",?SERVER_DETAIL_URL,?headers=headers) ????serversList?=?response.json().get("servers") ????for?s?in?serversList: ????????status?=?s.get("status") ????????name?=?s.get("name") ????????ip?=?s.get("addresses").get("my-net")[0].get("addr") ????????print(status,?name,?ip) if?__name__?==?"__main__": ????token?=?getToken() ????serversDetail(token)
結果
(u'SHUTOFF', u'app-2', u'172.18.45.60')
(u'SHUTOFF', u'app-4', u'172.18.45.34')
(u'SHUTOFF', u'app-5', u'172.18.45.71')
(u'SHUTOFF', u'app-3', u'172.18.45.67')
(u'SHUTOFF', u'app-1', u'172.18.45.26')
(u'SHUTOFF', u'web', u'172.18.45.38')
到此這篇關于OpenStack API的使用套路分享的文章就介紹到這了,更多相關OpenStack API內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Openstack 使用migrate進行數(shù)據(jù)庫升級實現(xiàn)方案詳細介紹
這篇文章主要介紹了Openstack 使用migrate進行數(shù)據(jù)庫升級詳細介紹的相關資料,數(shù)據(jù)庫表或者增加字段等是必然的事情,如何比較容易的進行這些數(shù)據(jù)庫升級的適配和管理,這里提供實現(xiàn)方法,需要的朋友可以參考下2016-12-12OpenStack Heat AutoScaling詳解及實例代碼
這篇文章主要介紹了OpenStack Heat AutoScaling詳解及實例代碼的相關資料,需要的朋友可以參考下2016-12-12CentOS 6.4下安裝部署OpenStack云計算平臺的方法
現(xiàn)在好多公司都使用Openstack,所以也想著學習下用OpenStack云計算平臺,這篇文章給加詳細介紹了CentOS 6.4下安裝部署OpenStack云計算平臺的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-10-10Centos7環(huán)境準備openstack pike的安裝
本篇文章主要介紹了Centos7環(huán)境準備openstack pike的安裝,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03OpenStack手動分布式部署Keystone(Queens版)
這篇文章主要介紹了OpenStack手動分布式部署Keystone(Queens版),Keystone是OpenStack框架中負責管理身份驗證服務訪問規(guī)則和服務令牌功能的組件,需要的朋友可以參考下2023-03-03