vmwareapi开发之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

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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:vmwareapi开发之html5的虚拟机console-创新互联
分享URL:http://myzitong.com/article/iiojs.html