递归示例(获取VM所有Snapshot)

获取VM所有Snapshot

from pyVmomi import vim
from pyVim.connect import SmartConnectNoSSL, Disconnect
import atexit

def connect_vc(host, user, pwd, port):
    si = SmartConnectNoSSL(host=host, user=user, pwd=pwd, port=port)

    # disconnect this thing
    atexit.register(Disconnect, si)
    return si.RetrieveContent()

if __name__ == '__main__':
    username = 'administrator@vsphere.local'
    password = 'xxxx'
    vc_ip = '172.16.65.99'
    vc_port = '443'
    content = connect_vc(host=vc_ip, user=username, pwd=password, port=vc_port)
    container_view = content.viewManager.CreateContainerView(content.rootFolder, [vim.VirtualMachine], True)

    def list_snapshots_recursively(snapshots):
        snapshot_data = []
        for snapshot in snapshots:
            snap_text = "Name: %s; Description: %s; CreateTime: %s; State: %s" % (
                snapshot.name, snapshot.description,
                snapshot.createTime, snapshot.state)
            snapshot_data.append(snap_text)
            snapshot_data = snapshot_data + list_snapshots_recursively(
                snapshot.childSnapshotList)
        return snapshot_data

    for obj in container_view.view:
        print("Display list of snapshots on virtual machine %s" % obj.name)
        try:
            snapshot_paths = list_snapshots_recursively(
                    obj.snapshot.rootSnapshotList)
            for snapshot in snapshot_paths:
                print(snapshot)
        except AttributeError:
            pass

 

posted @ 2017-09-23 09:44  Vincen_shen  阅读(439)  评论(0)    收藏  举报