基於pyVmomi編寫vsphere控制管理介面
VMware的vsphere客戶端是介面操作,本文想做的是基於pyVmomi編寫具有vsphere功能各個介面。
一、環境搭建
本機環境:
Ubuntu14.04
python2.7.6
pycharm4.5.3
Django1.9
pyvmomi5.5.0-2014.1.1
依賴項:
python
pip
pyvmomi-community-samples
1.1pyVmomi安裝
檔名稱:
pyvmomi-5.5.0-2014.1.1.tar.gz
安裝:
首先要確認已安裝python,pycharm,pip
執行命令安裝: pip install --upgrade pyvmomi
或者下載檔案包解壓後在資料夾裡執行命令:python setup.py install
驗證安裝是否成功
進入終端輸入python,再輸入:import pyVmomi
1.2 執行 pyvmomi-community-samples 中的例子:
檔名稱:
pyvmomi-community-samples
安裝
確認已安裝 Python, pycharm,pip,pyvmomi
方法一: 下載 tar 或者 zip 檔案,解壓然後用 pycharm 開啟
方法二:使用 git:
git clone https://github.com/vmware/pyvmomi-community-samples.git
例子執行
如圖所示,在左側列表中選擇一個例子如: hello_world_vcenter_with_yaml_recorder.py 然後點選 test,選擇Edit Configurations…選項, 在視窗 Script 中選擇要執行的指令碼, Script Parameters 中輸入:-s {伺服器 IP} -u {使用者名稱} -p {使用者登入密碼}。 然後指令碼hello_world_vcenter_with_yaml_recorder.py 就可以運行了。 指令碼執行成功會輸出伺服器的詳細資訊。其他例子類似,只是輸入引數不同。
二、專案建立
2.1基於django建立專案tutorial:
專案名稱:
tutorial
命令1:django-admin.py startproject tutorial
進入 tutorial 資料夾,修改 setting.py 檔案
1、 時區改為: TIME_ZONE=’Asia/Shanghai’
2、 在 INSTALLED_APPS 中新增新的[’quickstart’,]
3、 DATABASES 的格式如下所示:
DATABASES = {
'default':{
'ENGINE':'django.db.backends.sqlite3',
'NAME':os.path.join(BASE_DIR,'db.sqlite3'),
'USER':'database_user',
'PASSWORD':'database_password',
'HOST':'',
'PORT':''
}
}
命令2: cd tutorial
命令3: python manage.py startapp quickstart
2.2 依賴項匯入
把 pyvmomi-community-samples/samples 資料夾裡的 tools 資料夾拷到 tutorial/quickstart 資料夾裡。
三、問題集合
3.1 關於pyVmomi:
1、在 pycharm 裡,from pyVmomi import vim, vmodl 這行程式碼 vim,vmodl 有紅色下劃線
解決方法:這是一個 bug,可忽略這個錯誤, vim 和 vmodl 裡面的函式是可以正常呼叫的
2、呼叫 pyVmomi 裡面的函式時,系統沒有自動補全功能,也不會顯示其包含哪些可呼叫子函式
解決方法:提前檢視 pyVmomi 程式碼或程式碼相關說明文件,找到所需相關函式及呼叫方法
*可參考文獻:*
3、起變數名時,先看下tools資料夾裡面的指令碼,避免變數名重複。
4、仔細看引數name的註釋,部分要求的是虛擬機器的DNS Name,部分要求的是虛擬機器的名稱(在vsphere裡面顯示的名字)
3.2 依賴項匯入
把pyvmomi-community-samples/samples資料夾裡的tools資料夾拷到tutorial/quickstart 資料夾裡。
在tutorial專案quickstart資料夾裡的views.py腳本里匯入依賴項:
import pyVmomi
import atexit
from pyVim.connect import SmartConnect, Disconnect
from pyVmomi import vim,vmodl
from tools import tasks,vm
3.3 關於Django
1、pycharm自帶的Tools–Test RESTFUL web Service介面檢測工具使用時,可能會發生拒絕連線,但網頁訪問又沒有問題。
解決方法:安裝postman介面測試工具
2、URL配置 :django1.10 及 以後的版本將對刪除django.conf.patterns()
3、使用POST方法的函式需要加個裝飾器
先標明使用POST方法:@require_http_methods(['POST'])
再新增裝飾器:@csrf_exempt
N:注意先後順序,否則會報錯