递归示例(获取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