前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vmware api开发之快照管理

vmware api开发之快照管理

作者头像
用户1057912
发布2018-07-06 18:15:51
1.4K0
发布2018-07-06 18:15:51
举报
文章被收录于专栏:老安的博客

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

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

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

虚拟机增删磁盘;

虚拟机快照增删还原;

虚拟机 html5的console界面

虚拟机网络管理

zabbix 监控 esxi的磁盘使用率 

zabbix 接受转发esxi的报警信息

本文展示快照功能,快照其实是一个很小的功能,主要是让大家了解下vmware快照的接口,网上没有干过我这个事情,中间有个遍历的算法

先上图

1实际效果

wKiom1d02gezzSlhAABXB-vAUkU642.png-wh_50
wKiom1d02gezzSlhAABXB-vAUkU642.png-wh_50

2、实际的数据

wKioL1d02gfTbF6_AACK_4GmMA4538.png-wh_50
wKioL1d02gfTbF6_AACK_4GmMA4538.png-wh_50

代码如下

代码语言:javascript
复制
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=[]

#遍历快照的树状结构 注意要设置为全局变量

代码语言:javascript
复制
def showlist(snapshot):
  global output
  output.append({snapshot.snapshot:[snapshot.name,snapshot.createTime.timestamp()]})
  for i in snapshot.childSnapshotList:
          showlist(i)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/06/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档