Ich habe mit der offiziellen Python-Bindung für vSphere Pyvmomi herumgespielt (https://github.com/vmware/pyvmomi) Ich habe es geschafft, ein Code-Beispiel zum Einschalten einer VM zu bekommen, aber ich möchte zuerst die VM zu einem bestimmten Snapshot vorher zurückstellen eingeschaltet sein. Irgendeine Idee, wie man das macht? Hier ist was bisher funktioniert.Wie wird ein VM-Snapshot mit Pyvmomi wiederhergestellt?
def main():
args = GetArgs()
if args.password:
password = args.password
else:
password = getpass.getpass(prompt='Enter password for host %s and user %s: ' % (args.host,args.user))
try:
vmnames = args.vmname
if not len(vmnames):
print("No virtual machine specified for poweron")
sys.exit()
si = None
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
context.verify_mode = ssl.CERT_NONE
try:
si = SmartConnect(host=args.host,
user=args.user,
pwd=password,
port=int(args.port),
sslContext=context)
except IOError:
pass
if not si:
print("Cannot connect to specified host using specified username and password")
sys.exit()
atexit.register(Disconnect, si)
# Retreive the list of Virtual Machines from the inventory objects
# under the rootFolder
content = si.content
objView = content.viewManager.CreateContainerView(content.rootFolder,
[vim.VirtualMachine],
True)
vmList = objView.view
objView.Destroy()
#Code to list all available snapshots but not working
#snap_info = [vm.snapshot for vm in vmList if vm.name in vmnames]
#tree = snap_info.rootSnapshotList
#while tree[0].childSnapshotList is not None:
# print("Snap: {0} => {1}".format(tree[0].name, tree[0].description))
# if len(tree[0].childSnapshotList) < 1:
# break
# tree = tree[0].childSnapshotList
# Find the vm and power it on
tasks = [vm.PowerOn() for vm in vmList if vm.name in vmnames]
print("Virtual Machine(s) have been powered on successfully")
except vmodl.MethodFault as e:
print("Caught vmodl fault : " + e.msg)
except Exception as e:
print("Caught Exception : " + str(e))
# Start program
if __name__ == "__main__":
main()
Vielen Dank! Genau das, was ich gesucht habe –