vmware api開發之快照管理

2021-09-20 16:28:55 字數 1969 閱讀 3948

公司要自己開發私有雲管理平台,我這邊負責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=

body = json.dumps(res)

print ("status: 200 ok")

print ("content-length: %d" % (len(body)))

print ("")

print (res)

sys.exit()

output=

#遍歷快照的樹狀結構 注意要設定為全域性變數

def showlist(snapshot):

global output

for i in snapshot.childsnapshotlist:

showlist(i)

磁碟快照管理

作用 進行資料備份和恢復。分類 映象快照 對資料進行完全備份。對系統壓力大,需要占用很大的磁碟空間。原資料損壞不會造成影響。指標型快照 只是記錄當時資料塊的指標位置。之後的操作在新的塊上進行。速度快,占用空間小,原資料損壞無法恢復。建立snapshot的命令 qemu img snapshot c ...

kvm實踐 3 快照管理

ps raw 不支援做快照,qcow2 支援快照,並且快照就儲存在 qcow2 的磁碟檔案中。操作命令 建立快照 virsh snapshot create as 虛擬機器名稱 name 快照名稱 description this is a test snapshot 刪除快照 virsh snap...

Linux中KVM的安裝及快照管理

一 linux中kvm的安裝及狀態檢視 1 安裝軟體yum y install kvm virt manager libvirt 3 新建ifcfg br0配置檔案device br0 nm controlled yes type bridge bootproto none ipaddr 192.1...