vmware api开发之快照管理
2016-06-30 16:40
1031 查看
公司要自己开发私有云管理平台,我这边负责vmware部分的后台接口编写。主要基于vmware官方的 python 接口 pyvmomi进行二次封装,主要实现有虚拟机开关机注销;
虚拟机增删磁盘;虚拟机快照增删还原;虚拟机 html5的console界面虚拟机网络管理zabbix 监控 esxi的磁盘使用率 zabbix 接受转发esxi的报警信息本文展示快照功能,快照其实是一个很小的功能,主要是让大家了解下vmware快照的接口,网上没有干过我这个事情,中间有个遍历的算法
先上图
1实际效果
2、实际的数据
代码如下
from pyVmomi import vim
from pyVim.connect import SmartConnect, Disconnect
import atexit
import argparse
import getpass
import ssl
import random
import cgi, cgitb
import sys
import json
def wait_for_task(task):
""" wait for a vCenter task to finish """
task_done = False
while not task_done:
if task.info.state == 'success':
return task.info.result
if task.info.state == 'error':
print ("there was an error")
task_done = True
form = cgi.FieldStorage()
vmnames= form.getvalue('IP')
si = None
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
context.verify_mode = ssl.CERT_NONE
si = SmartConnect(host="10.20.11.3",
user="root",
pwd="vmware",
port=443,
sslContext=context)
atexit.register(Disconnect, si)
content = si.RetrieveContent()
container = content.viewManager.CreateContainerView(content.rootFolder, [vim.VirtualMachine], True)
for c in container.view:
if c.name == vmnames:
obj = c
break
try:
obj.name
except Exception as e:
res={'status':'failed','result':'IP is not found'}
body = json.dumps(res)
print ("Status: 200 OK")
print ("Content-Type: application/json")
print ("Content-Length: %d" % (len(body)))
print ("")
print (res)
sys.exit()
output=[]
#遍历快照的树状结构 注意要设置为全局变量
def showlist(snapshot):
global output
output.append({snapshot.snapshot:[snapshot.name,snapshot.createTime.timestamp()]})
for i in snapshot.childSnapshotList:
showlist(i)
虚拟机增删磁盘;虚拟机快照增删还原;虚拟机 html5的console界面虚拟机网络管理zabbix 监控 esxi的磁盘使用率 zabbix 接受转发esxi的报警信息本文展示快照功能,快照其实是一个很小的功能,主要是让大家了解下vmware快照的接口,网上没有干过我这个事情,中间有个遍历的算法
先上图
1实际效果
2、实际的数据
代码如下
from pyVmomi import vim
from pyVim.connect import SmartConnect, Disconnect
import atexit
import argparse
import getpass
import ssl
import random
import cgi, cgitb
import sys
import json
def wait_for_task(task):
""" wait for a vCenter task to finish """
task_done = False
while not task_done:
if task.info.state == 'success':
return task.info.result
if task.info.state == 'error':
print ("there was an error")
task_done = True
form = cgi.FieldStorage()
vmnames= form.getvalue('IP')
si = None
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
context.verify_mode = ssl.CERT_NONE
si = SmartConnect(host="10.20.11.3",
user="root",
pwd="vmware",
port=443,
sslContext=context)
atexit.register(Disconnect, si)
content = si.RetrieveContent()
container = content.viewManager.CreateContainerView(content.rootFolder, [vim.VirtualMachine], True)
for c in container.view:
if c.name == vmnames:
obj = c
break
try:
obj.name
except Exception as e:
res={'status':'failed','result':'IP is not found'}
body = json.dumps(res)
print ("Status: 200 OK")
print ("Content-Type: application/json")
print ("Content-Length: %d" % (len(body)))
print ("")
print (res)
sys.exit()
output=[]
#遍历快照的树状结构 注意要设置为全局变量
def showlist(snapshot):
global output
output.append({snapshot.snapshot:[snapshot.name,snapshot.createTime.timestamp()]})
for i in snapshot.childSnapshotList:
showlist(i)
相关文章推荐
- 在 Linux 上安装 VMware 工具
- 把Chrome OS安装在VMWare下及Chrome OS的关键特性和一些截图
- 安装 VMware Tools 时报 客户机操作系统已将 CD-ROM 门锁定,并且可能正在使用CD-ROM
- 企业云 2.0:VMware 眼中的企业 IT 的未来
- 如何成为一名专家级的开发人员
- gitinspector+jenkins 开发代码统计CI
- Windows 8虚拟机不能全屏的解决方法
- 使用VMware Workstation虚拟机保护数据
- VMware Workstation 5.5.3 Build 34685 汉化补丁
- .NET微信公众号开发之公众号消息处理
- Node.js开发者必须了解的4个JS要点
- 使用nodejs开发cli项目实例
- 谷歌Chrome浏览器扩展程序开发小记
- jQuery插件开发汇总
- nodejs开发微博实例
- Egret引擎开发指南之创建项目
- Android开发自学笔记(二):工程文件剖析
- Java开发人员需知的十大戒律
- Web 开发常用工具 大家自己查找下载
- 三种Web开发主流技术的性价评价