def list_virtual_machines(credentials)
vsphere = new_client(credentials)
vms = []
rootFolder = vsphere.serviceInstance.content.rootFolder
rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter).each do |dc|
list_datastores(dc.datastoreFolder).each do |datastore|
vms += datastore.vm.collect { |vm| { :instance => vm, :datastore => datastore.name } unless vm.nil? }
stored_tasks(datastore, vsphere) do |task|
if task.info.entity.class == RbVmomi::VIM::VirtualMachine
vms << { :stored_instance => load_serialized_instance(datastore, task.info.key), :datastore => datastore.name }
end
end
end
end
vms.flatten.compact
end