vmware api开发之克隆虚拟机

  • 时间:
  • 浏览:4
  • 来源:神彩大发幸运飞艇_彩神大发幸运飞艇官方

from celery import Celery

    # if None, get the first one

    template = None

        cluster_name, resource_pool, power_on,cpunum,memsize):

            "存储名字", '集群名字 ',

    else:

    template = templates[str(templateid)]

流程 :前端发起请求,提交的参数有 源模板id,虚拟机的配置,后端提交请求到vcenter,提交成功一句话,,给个反馈给前端,并在后台启用好友克隆虚拟机的守护守护进程,后台除理用,celery实现,虚拟机好友克隆完成后,虚拟os上边有个开机脚曾经我的管理端注册下ip地址

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

        datastore = get_obj(

    relospec = vim.vm.RelocateSpec()

def get_obj(content, vimtype, name): #把好友克隆源的虚拟机实例化

import argparse

    vm.CreateSnapshot("fromstart","this created when it is been cloned by system",False,False) #好友克隆好了创建俩个快照,以便实现重装系统的功能

                obj = c

首先介绍好友克隆虚拟机

都要环境:vcenter 5.1-6.0, python3.5 ,django 1.8 ,redis,mysql,celery(python 异步后台任务)等

            "", False,cpunum,memsize)

    datacenter = get_obj(content, [vim.Datacenter], datacenter_name)

虚拟机 html5的console界面

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

from celery import platforms

        if name:

zabbix 接受转发esxi的报警信息

    task = template.Clone(folder=destfolder, name=randomname, spec=clonespec)

                break

    spec.memoryMB=memsize

        destfolder = get_obj(content, [vim.Folder], vm_folder)

    randomname=get_hostname()

        resource_pool = cluster.resourcePool

import random

            obj = c

            if c.name == name:

    else:

                     sslContext=context)

    template = get_obj(content, [vim.VirtualMachine], template)

            "", "",

def action(num,flavor,templateid):  #主函数 被Celery调用 

        destfolder = datacenter.vmFolder

            content, [vim.Datastore], template.datastore[0].info.name)

        clone_vm(

    clonespec.location = relospec

    clonespec.powerOn = power_on

    return obj

    cpunum=hardwareconfiglist[int(flavor)][0]

        content, template,  si,

                     port=443,

    for c in container.view:

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

虚拟机网络管理

from pyVim.connect import SmartConnect, Disconnect

    context.verify_mode = ssl.CERT_NONE

        datastore = get_obj(content, [vim.Datastore], datastore_name)

    cluster = get_obj(content, [vim.ClusterComputeResource], cluster_name)

    vm = get_obj(content, [vim.VirtualMachine], randomname)

    if resource_pool:

    content = si.RetrieveContent()

    wait_for_task(task)

import atexit

    hardwareconfiglist={1:[2,8*1024],2:[4,16*1024],3:[8,32*1024]}

    relospec.datastore = datastore

            content, template, si,

    spec.numCPUs=cpunum

    si = None

        datacenter_name, vm_folder, datastore_name,

主要实现有虚拟机开关机退还;

    relospec.pool = resource_pool

platforms.C_FORCE_ROOT = True

    if datastore_name:

虚拟机快照增删还原;

我把 好友克隆虚拟机,虚拟机 html5的console界面,虚拟机快照管理 这有十几个 代码的放出,水平有限,大神勿喷,后来有次责涉及隐私的地方做了除理,供亲戚亲戚亲戚朋友参考下贴出的就是 第一版,越来越 错误捕捉

公司要当事人开发私有云管理平台,我这边负责vmware次责的后台接口编写。

    atexit.register(Disconnect, si)

            break

        resource_pool = get_obj(content, [vim.ResourcePool], resource_pool)

    vm.PowerOn()

代码如下

    obj = None

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

    if vm_folder:

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

    memsize=hardwareconfiglist[int(flavor)][1]

    spec = vim.vm.ConfigSpec()

    vm.ReconfigVM_Task(spec=spec) #设置好友克隆好的虚拟机的cpu 和 内存

    clonespec = vim.vm.CloneSpec()

import ssl

def clone_vm(   #好友克隆虚拟机,好友克隆出来的虚拟机名字是随机,

import getpass

        content.rootFolder, vimtype, True)

    container = content.viewManager.CreateContainerView(

    context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)

    for i in range(0,int(num)):

    else:

zabbix 监控 esxi的磁盘使用率 

from pyVmomi import vim

        else:

虚拟机增删磁盘;

celery = Celery('tasks', broker='redis://:########redis连接信息/0')

import cgi, cgitb