使用Python-libvirt函式庫來操作虛擬機,主要的步驟是先取得和Node上的libvirtd連線,然後再透過listAllDomains找出所有在該Node上所有的Domain並儲放在串列變數中,這樣子就可以自由地操作以及查詢該Node上的Domain了。以下是程式片段:
[code]
#!/usr/bin/python
import sys, libvirt
conn = libvirt.open("qemu:///system")
domains = conn.listAllDomains()
[/code]
上述程式碼執行之後,本機所有的Domain(虛擬機)就都被放在domains中了,其中domains[0]是第一台,domains[1] 是第二台,依此類推。
listAllDomains()預設是找出所有的Domain,如果我們想要檢查的是某些特定類型也沒問題,只要把旗標值傳進去就可以了。所有可以用的旗標如下:
VIR_CONNECT_LIST_DOMAINS_ACTIVE |
VIR_CONNECT_LIST_DOMAINS_INACTIVE |
VIR_CONNECT_LIST_DOMAINS_PERSISTENT |
VIR_CONNECT_LIST_DOMAINS_TRANSIENT |
VIR_CONNECT_LIST_DOMAINS_RUNNING |
VIR_CONNECT_LIST_DOMAINS_PAUSED |
VIR_CONNECT_LIST_DOMAINS_SHUTOFF |
VIR_CONNECT_LIST_DOMAINS_OTHER |
VIR_CONNECT_LIST_DOMAINS_MANAGEDSAVE |
VIR_CONNECT_LIST_DOMAINS_NO_MANAGEDSAVE |
VIR_CONNECT_LIST_DOMAINS_AUTOSTART |
VIR_CONNECT_LIST_DOMAINS_NO_AUTOSTART |
VIR_CONNECT_LIST_DOMAINS_HAS_SNAPSHOT |
VIR_CONNECT_LIST_DOMAINS_NO_SNAPSHOT |
在使用之前,記得要加上libvirt,例如以下的程式片段是要找出所有暫停中的Domain:
[code]
#!/usr/bin/python
import sys, libvirt
conn = libvirt.open("qemu:///system")
paused_domains = conn.listAllDomains(libvirt.VIR_CONNECT_LIST_DOMAINS_PAUSED)
[/code]
有了這些旗標的協助,要操作某些特定的虛擬機(例如把所有暫停中的虛擬機全部恢復執行,或是列出所有還沒有SNAPSHOT的虛擬機,是不是就更容易了呢!