三分鐘帶你使用Python通過(guò)OpenStack API接口篩選虛機(jī)

開發(fā)背景:

由于在OpenStack上有過(guò)熱遷移失敗的記錄,虛機(jī)重裝掛載磁盤會(huì)報(bào)錯(cuò),數(shù)據(jù)盤掛載不上,所以需要在OpenStack上找出所有有過(guò)熱遷移并且遷移失敗的虛機(jī)處理,以免后續(xù)重裝掛載不上磁盤。

開發(fā)環(huán)境:

centos,Python 2.7.5,OpenStack

具體思路:

Shell篩選命令

nova list –all 找出所有虛機(jī)

nova instance-action-list 虛機(jī)ID | egrep -in 'live-migration|error' 篩選出具有相應(yīng)動(dòng)作的虛機(jī)。

使用shell腳本篩選,但是由于nova instance-action-list命令執(zhí)行太慢,所以考慮使用Python通過(guò)OS的接口去找出這部分虛機(jī)。

通過(guò)OpenStack的API接口調(diào)用,找出所有虛機(jī),并且查詢每個(gè)虛機(jī)的所有動(dòng)作,篩選出有l(wèi)ive-migration動(dòng)作并且message為Error的虛機(jī)就輸出虛機(jī)名稱和虛機(jī)ID。

關(guān)鍵步驟:

1、登錄認(rèn)證實(shí)現(xiàn):OpenStack主要是通過(guò)keystoneauth組件來(lái)提供認(rèn)證服務(wù),我通過(guò)keystoneauth組件的keystoneauth1.session.Session 類初始化一個(gè)Session對(duì)象,此對(duì)象可以存儲(chǔ)用戶名密碼和token等信息。

2、shell命令對(duì)應(yīng)novaclient庫(kù)的方法查詢,主要通過(guò)OpenStack的官方文檔:https://docs.openstack.org/python-novaclient/latest/reference/index.html?去查詢想要的方法以及方法具有的參數(shù)。

具體源代碼

#!/usr/bin/python2# -*- coding: utf-8 -*-? fromnovaclientimportclientfromkeystoneauth1importsessionfromkeystoneauth1.identityimportv3importrequests#登錄認(rèn)證auth = v3.Password(user_domain_name='Default',? ? ? ? ? ? ? ? ? ? username='******',? ? ? ? ? ? ? ? ? ? password='*********',? ? ? ? ? ? ? ? ? ? project_domain_name='Default',? ? ? ? ? ? ? ? ? ? project_name='admin',? ? ? ? ? ? ? ? ? ? auth_url='http://IP:35357/v3')sess = session.Session(auth=auth)nova = client.Client(2,session=sess)#查詢所有虛機(jī)instances = nova.servers.list(search_opts={'all_tenants':'1'})#循環(huán)forinstanceininstances:#查詢每臺(tái)虛機(jī)的動(dòng)作foriinnova.instance_action.list(instance.id):#篩選出live-migration的動(dòng)作并且結(jié)果是Errorifi.to_dict()['action']=='live-migration'andi.to_dict()['message']=='Error':#輸出虛機(jī)名稱和虛機(jī)IDprintinstance.name ,instance.idbreak

總結(jié)

Python的novaclient庫(kù)和keystoneauth1庫(kù),已經(jīng)封裝了具體的請(qǐng)求過(guò)程,基本只需要填好關(guān)鍵信息就可以直接調(diào)用API接口去獲取虛機(jī)信息,主要遇到的問(wèn)題就是OpenStack的API接口資料網(wǎng)上比較少,基本都是需要閱讀官方文檔。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 都是自己的學(xué)習(xí)筆記,僅供參考。 核心模塊-Nova簡(jiǎn)介 管理instance生命周期生成,調(diào)度,終止實(shí)例作用:處理...
    廖馬兒閱讀 3,769評(píng)論 0 3
  • 一、nova介紹: Nova 是 OpenStack 最核心的服務(wù),負(fù)責(zé)維護(hù)和管理云環(huán)境的計(jì)算資源。OpenSta...
    WickJohn閱讀 1,806評(píng)論 0 3
  • 注: 所有命令都要切換到 root 用戶下執(zhí)行,通過(guò) sudo su 命令可切換到 root 用戶 ,這樣就不需要...
    余帶鹽閱讀 2,475評(píng)論 0 4
  • 節(jié)點(diǎn)規(guī)劃 準(zhǔn)備4臺(tái)虛機(jī),分別做Controller,Network,Compute,Middleware。Cont...
    羽煊閱讀 1,734評(píng)論 0 2
  • Intro by Y:去年(2016)八月瑞小姐拉我去參加了一場(chǎng)新書發(fā)布會(huì),作者是吉井忍女士,日本人,北京媳婦。她...
    yuey閱讀 817評(píng)論 1 2

友情鏈接更多精彩內(nèi)容