Revision df599f74
Added by Martin Matuška over 10 years ago
app/services/fog_extensions/vsphere/mini_servers.rb | ||
---|---|---|
end
|
||
|
||
def all(filters = { })
|
||
dc.vmFolder.childEntity.grep(RbVmomi::VIM::VirtualMachine).map do |server|
|
||
MiniServer.new(server)
|
||
allvmsbyfolder(dc.vmFolder, nil).map do |entry|
|
||
MiniServer.new(entry[:vm], entry[:path], entry[:uuid])
|
||
end
|
||
end
|
||
|
||
def allvmsbyfolder(folder, path = nil)
|
||
ret = []
|
||
unless folder == @dc.vmFolder
|
||
path = path.nil? ? folder.name : path + '/' + folder.name
|
||
end
|
||
folder.childEntity.each do |entity|
|
||
if entity.is_a?(RbVmomi::VIM::Folder)
|
||
ret.push(*allvmsbyfolder(entity, path))
|
||
elsif entity.is_a?(RbVmomi::VIM::VirtualMachine)
|
||
config = entity.config
|
||
if (!config.template && (uuid = config.instanceUuid))
|
||
ret.push({ :vm => entity, :path => path, :uuid => uuid})
|
||
end
|
||
end
|
||
end
|
||
ret
|
||
end
|
||
|
||
private
|
||
attr_reader :client, :dc
|
||
end
|
||
end
|
||
end
|
||
end
|
Also available in: Unified diff
fixes #2093 - list VMs in every VMware folder
(cherry picked from commit aba96a743f566eda5f81c451f52c040267a9cf04)
Conflicts:
app/views/compute_resources_vms/index/_vmware.html.erb