這裏主要是用python來作爲開發工具,固然,若是你喜歡,go、java、C均可以。語言只是一種工具,沒必要糾結那種,用得順手,方便,並且適合團隊做戰的最好。html
我選python,主要是python是高級語言,擁有大量的開源模板庫,初期學習成本低,適合在團隊內迅速推廣。簡單的說就是不用我一我的去搞,我閃了後,別人也能輕鬆接手維護。java
XenServer的開放接口工具叫Xapi,網站是 : http://xapi-project.github.io/xen-api/ 。固然,使用Xapi前,咱們首先要理解下Xenserver的結構,借用下官網的一張圖:python
關於這圖裏面各個組件的說明,我就不說了,若是要進行Xapi開發,我假設已經擁有對Xenserver必定的基礎認識,下面就開始着手進行第一步git
首選,搭建一個基本環境,我用的是7.2的版本,下載頁面爲: https://www.citrix.com/downloads/xenserver/product-software/xenserver-72-standard-edition.html ,選擇「Development Components」-「SDK (Software Development Kit) 7.2.0」,下載後解壓,會看到github
說明Xenserver支持的幾種語言包括python,.net,java,powershell,咱們進入XenServerPython,選擇這裏看到的XenApi.py就是咱們的須要惟一一個引用,對,搞了這麼多,其實就只須要這個文件,我藉助這個,咱們首選來寫個HelloWorldweb
#!coding=utf-8 import traceback import XenAPI #若是是集羣,必須是集羣的master的ip host='192.168.1.120' username = 'root' password = 'password' xen_url = "http://"+host def login(): url = xen_url session = XenAPI.Session( url ) session.login_with_password( username, password, '1.2', 'xen-api-scripts-xenapi.py' ) return session def loginout(session): if session is not None : session.xenapi.session.logout() if __name__ == "__main__": session = None try: session = login() print(session.xenapi.host.get_all()) except Exception as ex : print(traceback.format_exc()) finally: loginout(session)
輸出相似下面,個人測試集羣有三臺宿主機:shell
['OpaqueRef:ee00cb86-944e-86a0-2f9d-3d7031f3d800', 'OpaqueRef:da401fdc-6943-4372-fb30-5be73d21af87', 'OpaqueRef:b63c443c-6e73-fcb6-4966-b35f1ba9b647']
這裏分爲三個部分,第一部分是登陸,經過建立一個XenAPI.Session對象,再經過帳號密碼登陸,若是登陸成功,該session保留登陸信息,返回出去。第二部分是session.xenapi.host.get_all(),利用session獲取當前資源池的host列表,並打印出來。第三部分固然是安全退出。api
代碼簡單,沒閱讀難度,這裏主要要注意的session。Xapi在服務器端會啓動一個web服務,暴露出80端口,客戶端經過url調用來對Xenserver進行自動化管理,經過鏈接Xapi,咱們獲取一個session對象,利用這個session對象調用其它對象查詢時,一般是這樣的格式:安全
session.xenapi.host.[支持的方法]
session.xenapi.SR.[支持的方法]
session.xenapi.PIF.[支持的方法]
session.xenapi.VBD.[支持的方法]
......
*更多具體的支持接口以及方法,能夠查看 http://xapi-project.github.io/xen-api/
因此這裏調用的get_all()是host對象裏面的一個方法,用於顯示全部的宿主機對象。上面的返回不是你能理解的主機信息,你能夠把主機的全部元信息顯示出來,能夠試試session.xenapi.host.get_record(host),這裏的host就是上面的返回列表中的對象。服務器
好吧,若是到這裏,都能理解,那ok,Xapi的操做已經畢業了,就是這麼簡單,下一個繼續說怎麼建立一個虛擬機。