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 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

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

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

67750
来自专栏农夫安全

【原创】中间件测试方法总结---(3)

0x01 应用测试 对于类似4A、BOP这样的应用,需要进行记录,并按照常规的渗透办法进行安全测试。【必要时候,需要进行登录测试】 其他应用测试 发现办法 协议...

48470
来自专栏前端侠2.0

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

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

23020
来自专栏木头编程 - moTzxx

TP5 验证码功能实现

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

1.1K20
来自专栏散尽浮华

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

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

61540
来自专栏互联网杂技

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

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

601110
来自专栏FreeBuf

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

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

33850
来自专栏pythonlove

DNS服务器的基础应用及主从同步

域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互...

24020
来自专栏小曾

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

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

51040
来自专栏FreeBuf

云存储平台&服务安全分析报告

1. 概要 本报告展示了一种新型的攻击,我们称之为“Man in the cloud(MITC)”。MITC攻击将常见的文件同步服务(如GoogleDrive、...

35590

扫码关注云+社区

领取腾讯云代金券