1. 程式人生 > >基於pyVmomi編寫vsphere控制管理介面

基於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

驗證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 就可以運行了。 指令碼執行成功會輸出伺服器的詳細資訊。其他例子類似,只是輸入引數不同。

pyvmomi例子執行

二、專案建立

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:注意先後順序,否則會報錯