vmware api开发之快照管理

公司要自己开发私有云管理平台,我这边负责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)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网杂技

HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事

作为一个经常和web打交道的程序员,了解这些协议是必须的,本文就向大家介绍一下这些协议的区别和基本概念,文中可能不局限于前端知识,还包括一些运维,协议方面的知识...

49111
来自专栏FreeBuf

你的Outlook真的安全?一条恶意规则远程攻陷你的工作站!

背景 当前,构建恶意Outlook规则的限制条件都比较苛刻,至少需要访问被入侵系统的交互GUI,或者拥有登录凭证,而且还要求攻击方直接与Exchange服务器进...

3327
来自专栏FreeBuf

安全科普:利用WireShark破解网站密码

当我们输入账号、密码登录一个网站时,如果网站允许你使用HTTP(明文)进行身份验证,那么此时捕获通信流量非常简单,我们完全可以对捕获到的流量进行分析以获取登录账...

2495
来自专栏前端侠2.0

ng6中,在HTTP拦截器里,异步请求数据,之后再返回拦截器继续执行用户请求的方法研究

      我现在项目就是利用拦截器,在请求头里增加:'Authorization': this.storage.token 的请求头。

1652
来自专栏北京马哥教育

运维需要懂的那些安全技能

运维行业正在变革,推荐阅读:30万年薪Linux运维工程师成长魔法 以前的认知 以前刚接触IT行业,而我身为运维,我以为我所需要做的安全就是修改服务器密码为复...

5555
来自专栏木头编程 - moTzxx

TP5 验证码功能实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

5722
来自专栏FreeBuf

方程式组织DanderSpritz工具测试环境研究

DanderSpritz是NSA泄露的一款著名的界面化远控工具,由于其功能强大因此也成为了许多安全人员争相研究的对象。但在实际测试过程中,由于缺少说明文档,所以...

1144
来自专栏企鹅号快讯

winscp 通过 ssh 连接 ubuntu on windows

  写在前面: 用户升级到 Windows 10 秋季创意者版 Build 16190 及以上,就可以在windows store应用商店下载和安装 Ubunt...

7109
来自专栏散尽浮华

Linux下开源邮件系统Postfix+Extmail+Extman环境部署记录

一、基础知识梳理 MUA (Mail User Agent)  MUA 既是"邮件使用者代理人",因为除非你可以直接利用类似 telnet 之类的软件登入邮件主...

3964
来自专栏小曾

web安全:通俗易懂,以实例讲述破解网站的原理及如何进行防护!如何让网站变得更安全。

本篇以我自己的网站为例来通俗易懂的讲述网站的常见漏洞,如何防止网站被入侵,如何让网站更安全。

2954

扫码关注云+社区