91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vmware api開發之html5的虛擬機console

發布時間:2020-06-20 17:46:34 來源:網絡 閱讀:1699 作者:superbigsea 欄目:移動開發

公司要自己開發私有云管理平臺,我這邊負責vmware部分的后臺接口編寫。

主要基于vmware官方的 python 接口 pyvmomi進行二次封裝,

主要實現有虛擬機開關機注銷;

虛擬機增刪磁盤;

虛擬機快照增刪還原;

虛擬機 html5的console界面

虛擬機網絡管理

zabbix 監控 esxi的磁盤使用率 

zabbix 接受轉發esxi的報警信息

我把 克隆虛擬機,虛擬機 html5的console界面,虛擬機快照管理 這幾個代碼的放出,水平有限,大神勿噴,并且有部分涉及隱私的地方做了處理,供大家參考下,貼出的只是第一版,沒有錯誤捕捉

需要環境:vcenter 5.1-6.0, python3.5 ,django 1.8 ,redismysql,celery(python 異步后臺任務)等

第二個介紹展示html5的虛擬機console

只適用于vc ,5.x 不適用于6.x,6.x改了登陸驗證方式 暫時還沒搞定

過程,收到前端請求的,找到對應虛擬機,生成sessionTicket和 thumbprint,

拼接對應的網址,當作一個 HttpResponseRedirect 返回前端

先上下效果

輸入 http://10.20.11.4:8001/viewconsole.py?IP=10.20.13.158


vmware api開發之html5的虛擬機console

代碼如下 

  

import atexit

import ssl

import sys

import time

import OpenSSL

import os



from pyVim.connect import SmartConnect, Disconnect

from pyVmomi import vim


from django.http import HttpResponse

from django.http import HttpResponseRedirect


def viewconsole(request):

        vmip = request.GET.get('IP')

        respone=main(vmip)

        return HttpResponseRedirect(a)

        return HttpResponse(a)

def get_vm(content, name): 實例化虛擬機


    vm = None

    container = content.viewManager.CreateContainerView(

        content.rootFolder, [vim.VirtualMachine], True)


    for c in container.view:

        if c.name == name:

            vm = c

            break

    return vm

def main(vmip):

    context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)

    context.verify_mode = ssl.CERT_NONE



    si = SmartConnect(host="######",

                          user="############",

                          pwd="############",

                          port=443,sslContext=context)


    atexit.register(Disconnect, si)


    content = si.RetrieveContent()


    vm = get_vm(content, "{0}".format(vmip))

    vm_moid = vm._moId


    vcenter_data = content.setting

    vcenter_settings = vcenter_data.setting

    console_port = '7331'


    for item in vcenter_settings:

        key = getattr(item, 'key')

        if key == 'VirtualCenter.FQDN':

            vcenter_fqdn = getattr(item, 'value')


    session_manager = content.sessionManager

    session = session_manager.AcquireCloneTicket()


    vc_cert = ssl.get_server_certificate(("vc的ip",443))

    vc_pem = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM,

                                             vc_cert)

    vc_fingerprint = vc_pem.digest('sha1')


    url="http://vc的ip:7331/console/?vmId={2}&vmName={3}&host={4}&sessionTicket={5}&thumbprint={6}".format("",console_port,vm_moid,vmip,vcenter_fqdn,session,vc_fingerprint.decode())

    return url


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昭觉县| 宣恩县| 呼玛县| 莱州市| 兴文县| 井冈山市| 阳原县| 宣化县| 双流县| 余姚市| 华池县| 长治县| 淮北市| 陆良县| 鲜城| 上饶市| 安阳县| 南溪县| 当雄县| 武山县| 务川| 宽甸| 卢龙县| 教育| 布拖县| 卢湾区| 大连市| 察隅县| 偃师市| 石林| 阳东县| 洪洞县| 澎湖县| 乳山市| 若羌县| 珠海市| 西乌珠穆沁旗| 白朗县| 莱芜市| 京山县| 阿拉尔市|