vmware api开发之快照管理

简介:

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

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

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

虚拟机增删磁盘;

虚拟机快照增删还原;

虚拟机 html5的console界面

虚拟机网络管理

zabbix 监控 esxi的磁盘使用率 

zabbix 接受转发esxi的报警信息

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

先上图

1实际效果

wKiom1d02gezzSlhAABXB-vAUkU642.png-wh_50

2、实际的数据


wKioL1d02gfTbF6_AACK_4GmMA4538.png-wh_50

代码如下

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)

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



相关文章
|
7天前
|
JavaScript API 开发者
GraphQL API开发入门:比RESTful更高效的数据查询方式
**GraphQL API开发入门摘要** GraphQL是一种更高效的数据查询方式,解决RESTful API的过度或不足获取数据问题。它允许客户端按需获取数据,减少网络传输,支持一次请求获取多资源。强类型和自描述特性方便了开发。文章通过一个简单的Node.js示例,展示如何使用`apollo-server-express`搭建GraphQL服务器,包括定义Schema、实现Resolver和创建服务器。通过测试,显示了GraphQL如何提供精确数据和优化查询效率。对于复杂数据需求,GraphQL是现代API设计的有效选择。
17 0
|
2天前
|
开发框架 Java API
Java中的REST API开发详解
Java中的REST API开发详解
|
11天前
|
JSON 前端开发 API
Django API开发实战:前后端分离、Restful风格与DRF序列化器详解
Django API开发实战:前后端分离、Restful风格与DRF序列化器详解
|
13天前
|
SQL Java 数据库连接
JDBC开发之四大核心API:DriverManager Connection Statement ResultSet
JDBC开发之四大核心API:DriverManager Connection Statement ResultSet
19 1
|
4天前
|
开发框架 Java API
Java中的REST API开发详解
Java中的REST API开发详解
|
7天前
|
JSON 安全 API
API开发实战:从设计到部署的全流程指南
在数字化转型中,API成为系统集成的关键。本文引导读者逐步实践API开发: 1. 设计阶段确定需求,选择RESTful风格,例如天气查询API(/api/weather/{city}),返回JSON数据。 2. 使用Python和Flask实现API,处理GET请求,返回城市天气信息。 3. 进行测试,如用curl请求`http://localhost:5000/api/weather/Beijing`。 4. 文档化API,借助Flask-RESTPlus自动生成文档。 5. 部署到Heroku,创建`Procfile`,通过`heroku`命令推送代码。 【6月更文挑战第28天】
29 0
|
12天前
|
缓存 JSON Java
使用Java进行RESTful API开发的最佳实践
使用Java进行RESTful API开发的最佳实践
|
16天前
|
安全 API 开发工具
微信开发:API接口与ipad协议的深度比较及最佳选择
微信开发:API接口与ipad协议的深度比较及最佳选择
|
16天前
|
API Android开发 iOS开发
个人微信开发API协议接口
个人微信开发API协议接口
|
16天前
|
API 开发工具
抖音sdk,抖音开发api接口
抖音sdk,抖音开发api接口