def find_vm(credentials, name)
vsphere = new_client(credentials)
safely do
rootFolder = vsphere.serviceInstance.content.rootFolder
vm = {}
rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter).each do |dc|
dslist = list_datastores(dc.datastoreFolder)
dslist.each do |datastore|
vm[:instance] = datastore.vm.find { |x| x.name == name }
if vm[:instance]
vm[:datastore] = datastore.name
break
end
stored_tasks(datastore, vsphere) do |task|
if task.info.entity.class == RbVmomi::VIM::VirtualMachine and ['queued', 'running'].member? task.info.state
vm = { :stored_instance => load_serialized_instance(datastore,task.info.key), :datastore => datastore.name }
end
end
end
break if [:datastore]
end
vm
end
end