vmware api开发之html5的虚拟机console

简介:

公司要自己开发私有云管理平台,我这边负责vmware部分的后台接口编写。

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

主要实现有虚拟机开关机注销;

虚拟机增删磁盘;

虚拟机快照增删还原;

虚拟机 html5的console界面

虚拟机网络管理

zabbix 监控 esxi的磁盘使用率 

zabbix 接受转发esxi的报警信息

我把 克隆虚拟机,虚拟机 html5的console界面,虚拟机快照管理 这几个代码的放出,水平有限,大神勿喷,并且有部分涉及隐私的地方做了处理,供大家参考下,贴出的只是第一版,没有错误捕捉

需要环境:vcenter 5.1-6.0, python3.5 ,django 1.8 ,redis,mysql,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


wKioL1dyb17w9coaAACH67ohdBU841.png-wh_50

代码如下 

  

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



本文转自 superbigsea 51CTO博客,原文链接:http://blog.51cto.com/superbigsea/1793768

相关文章
|
1月前
|
Ubuntu 网络安全 虚拟化
VMware虚拟机ping不通原因排查及分析
下面以 VMware 虚拟机为例进行介绍。
843 3
|
1月前
|
存储 SQL 数据库
虚拟化数据恢复—Vmware虚拟机误还原快照的数据恢复案例
虚拟化数据恢复环境: 一台虚拟机从物理机迁移到ESXI虚拟化平台,迁移完成后做了一个快照。虚拟机上运行了一个SQL Server数据库,记录了数年的数据。 ESXI虚拟化平台上有数十台虚拟机,EXSI虚拟化平台连接了一台EVA存储,所有的虚拟机都存放在EVA存储上。 虚拟化故障: 工组人员误操作将数年前迁移完成后做的快照还原了,也就意味着虚拟机状态还原到数年前,近几年数据都被删除了。 还原快照相当于删除数据,意味着部分存储空间会被释放。为了不让这部分释放的空间被重用,需要将连接到这台存储的所有虚拟机都关掉,需要将不能长时间宕机的虚拟机迁移到别的EXSI虚拟化平台上。
111 50
|
5月前
|
移动开发 前端开发 JavaScript
基于 HTML5 和 Canvas 开发的在线图片编辑器
基于 HTML5 和 Canvas 开发的在线图片编辑器
113 0
|
2月前
|
安全 虚拟化 数据中心
Xshell 连接 VMware虚拟机操作 截图和使用
Xshell 连接 VMware虚拟机操作 截图和使用
81 4
|
2月前
|
Linux 虚拟化
vmware虚拟机安装2024(超详细)
vmware虚拟机安装2024(超详细)
406 6
|
2月前
|
虚拟化 网络虚拟化 网络架构
虚拟机 VMware Workstation 16 PRO 的网络配置
虚拟机 VMware Workstation 16 PRO 的网络配置
95 2
|
3月前
|
存储 SQL 数据挖掘
虚拟化数据恢复—VMware虚拟机vmdk文件被误删除的数据恢复案例
虚拟化数据恢复环境: 某品牌服务器(部署VMware EXSI虚拟机)+同品牌存储(存放虚拟机文件)。 虚拟化故障: 意外断电导致服务器上某台虚拟机无法正常启动。查看虚拟机配置文件发现这台故障虚拟机除了磁盘文件以外其他配置文件全部丢失,xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。管理员联系VMware工程师寻求帮助。VMware工程师尝试新建一个虚拟机来解决故障,但发现ESXi存储空间不足。于是将故障虚拟机下的xxx-flat.vmdk磁盘文件删除,然后重建一个虚拟机并且分配固定大小的虚拟磁盘。
|
4月前
|
测试技术 Linux 虚拟化
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
详细的VMware虚拟机安装macOS Big Sur的保姆级教程,包括下载VMware和macOS镜像、图解安装步骤和遇到问题时的解决方案,旨在帮助读者顺利搭建macOS虚拟机环境。
198 3
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
|
4月前
|
编解码 Linux 虚拟化
超详细VMware虚拟机安装Win10操作系统过程图解
这篇文章提供了一个详细的VMware虚拟机安装Windows 10操作系统的图解教程,包括了从创建虚拟机到安装操作系统的全过程,以及安装后的一些基本设置,如屏幕分辨率调整等。作者还提到了后续会分享关于磁盘分区的创建过程。
超详细VMware虚拟机安装Win10操作系统过程图解
|
4月前
|
虚拟化
vmware虚拟机使用主机代理访问谷歌
vmware虚拟机使用主机代理访问谷歌