vmware api开发之克隆虚拟机

  • 时间:
  • 浏览:0

    spec.memoryMB=memsize

        destfolder = datacenter.vmFolder

    relospec = vim.vm.RelocateSpec()

        clone_vm(

    spec.numCPUs=cpunum

zabbix 接受转发esxi的报警信息

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

        datacenter_name, vm_folder, datastore_name,

            obj = c

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

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

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

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

import argparse

                break

    if resource_pool:

        cluster_name, resource_pool, power_on,cpunum,memsize):

    container = content.viewManager.CreateContainerView(

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

虚拟机快照增删还原;

    context.verify_mode = ssl.CERT_NONE

    relospec.pool = resource_pool

    clonespec.powerOn = power_on

import getpass

import atexit

        else:

                     sslContext=context)

    si = None

    # if None, get the first one

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

    clonespec = vim.vm.CloneSpec()

    else:

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

    relospec.datastore = datastore

            if c.name == name:

虚拟机 html5的console界面

            content, template, si,

    if vm_folder:

        content, template,  si,

虚拟机网络管理

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

    obj = None

            break

from celery import platforms

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

    return obj

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

                obj = c

    wait_for_task(task)

代码如下

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

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

from pyVmomi import vim

    else:

            "", "",

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

from pyVim.connect import SmartConnect, Disconnect

    vm.PowerOn()

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

        resource_pool = cluster.resourcePool

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

    content = si.RetrieveContent()

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

    atexit.register(Disconnect, si)

from celery import Celery

我把 qqqq克隆好友 虚拟机,虚拟机 html5的console界面,虚拟机快照管理 这十几个 代码的放出,水平有限,大神勿喷,但会 有次要涉及隐私的地方做了解决,供朋友参考下贴出的就说 我第一版,没有 错误捕捉

首先介绍qqqq克隆好友 虚拟机

    else:

import ssl

            "", False,cpunum,memsize)

    template = None

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

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

        if name:

流程 :前端发起请求,提交的参数有 源模板id,虚拟机的配置,后端提交请求到vcenter,提交成功的话,,给个反馈给前端,并在后台启用qqqq克隆好友 虚拟机的线程运行运行,后台解决用,celery实现,虚拟机qqqq克隆好友 完成后,虚拟os底下有个开机脚那我我的管理端注册下ip地址

    randomname=get_hostname()

import cgi, cgitb

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

zabbix 监控 esxi的磁盘使用率 

platforms.C_FORCE_ROOT = True

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

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

    context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)

        content.rootFolder, vimtype, True)

    clonespec.location = relospec

主要实现有虚拟机开关机撤除;

    for c in container.view:

    if datastore_name:

    spec = vim.vm.ConfigSpec()

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

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

        datastore = get_obj(

                     port=443,

虚拟机增删磁盘;

    template = templates[str(templateid)]

import random

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

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

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