>>> server.get_hosts()
{}
import sysfrom pysphere import VIServer, VITask, VIMorfrom pysphere.vi_virtual_machine import VIVirtualMachinefrom pysphere.resources import VimService_services as VI
if len(sys.argv) < 4: print "To less arguments" sys.exit(1)
server = VIServer()
try: server.connect(sys.argv[1], sys.argv[2], sys.argv[3])except: print 'Could not estabilish connection!' sys.exit(2);
def host_mor(mor): if not VIMor.is_mor(mor): return VIMor(mor, "HostSystem") return mor
def enter_maintenance_mode(host, timeout, evacuate_powered_off_vms=None): host = host_mor(host) request = VI.EnterMaintenanceMode_TaskRequestMsg() _this = request.new__this(host) _this.set_attribute_type(host.get_attribute_type()) request.set_element__this(_this) request.set_element_timeout(timeout) if evacuate_powered_off_vms in [False, True]: request.set_element_evacuatePoweredOffVms(evacuate_powered_off_vms)
task = server._proxy.EnterMaintenanceMode_Task(request)._returnval return VITask(task, server)
def shutdown_host(host, force): host = host_mor(host) request = VI.ShutdownHost_TaskRequestMsg() _this = request.new__this(host) _this.set_attribute_type(host.get_attribute_type()) request.set_element__this(_this) request.set_element_force(force) task = server._proxy.ShutdownHost_Task(request)._returnval return VITask(task, server)
def suspend_all_powered_on_vms(): for path in server.get_registered_vms(status='poweredOn'): vm = server.get_vm_by_path(path) vm.suspend(sync_run=False)
def migrate_powered_on_vms(from_host, to_host): from_host = host_mor(from_host) to_host = host_mor(to_host) props = ['runtime.powerState'] oc = server._retrieve_properties_traversal(property_names=props, from_node=from_host, obj_type='VirtualMachine') for o in oc: powered_on = False if hasattr(o, "PropSet") and o.PropSet: for p in o.PropSet: if p.Name=='runtime.powerState' and p.Val == 'poweredOn': vm = VIVirtualMachine(server, o.Obj) vm.migrate(sync_run=False, host=to_host)
# Here I need to set the host (the esxi itself)host = VIMor(server, "HostSystem")
print "Entering maintenance mode..."task = enter_maintenance_mode(host, 10)print "State: ",task.get_state()
print "Suspending all VMs..."suspend_all_powered_on_vms()print "Done"
print "Shutdown host..."shutdown_host(host, True)
server.disconnect()
server.get_hosts().keys() will give you list of host mor objects