2013-03-21 11:48:30 -04:00
|
|
|
module Fog
|
|
|
|
module Compute
|
|
|
|
class Vsphere
|
|
|
|
class Real
|
|
|
|
def list_templates(options = { })
|
|
|
|
options[:folder] ||= options['folder']
|
|
|
|
if options[:folder] then
|
|
|
|
list_all_templates_in_folder(options[:folder], options[:datacenter])
|
|
|
|
else
|
|
|
|
list_all_templates(options)
|
|
|
|
end
|
|
|
|
end
|
2013-04-05 02:05:03 -04:00
|
|
|
|
2013-03-21 11:48:30 -04:00
|
|
|
private
|
2013-04-05 02:05:03 -04:00
|
|
|
|
2013-03-21 11:48:30 -04:00
|
|
|
def list_all_templates_in_folder(path, datacenter_name)
|
|
|
|
folder = get_raw_vmfolder(path, datacenter_name)
|
|
|
|
|
|
|
|
vms = folder.children.grep(RbVmomi::VIM::VirtualMachine)
|
|
|
|
# remove all virtual machines that are not template
|
2013-04-10 03:28:12 -04:00
|
|
|
vms.delete_if { |v| v.config.nil? or not v.config.template }
|
2013-04-05 02:05:03 -04:00
|
|
|
|
2013-03-21 11:48:30 -04:00
|
|
|
vms.map(&method(:convert_vm_mob_ref_to_attr_hash))
|
|
|
|
end
|
2013-04-05 02:05:03 -04:00
|
|
|
|
2013-03-21 11:48:30 -04:00
|
|
|
def list_all_templates(options = {})
|
|
|
|
datacenters = find_datacenters(options[:datacenter])
|
|
|
|
|
|
|
|
vms = datacenters.map do |dc|
|
|
|
|
@connection.serviceContent.viewManager.CreateContainerView({
|
|
|
|
:container => dc.vmFolder,
|
|
|
|
:type => ["VirtualMachine"],
|
|
|
|
:recursive => true
|
|
|
|
}).view
|
|
|
|
end.flatten
|
|
|
|
# remove all virtual machines that are not templates
|
2013-04-10 03:28:12 -04:00
|
|
|
vms.delete_if { |v| v.config.nil? or not v.config.template }
|
2013-03-21 11:48:30 -04:00
|
|
|
|
|
|
|
vms.map(&method(:convert_vm_mob_ref_to_attr_hash))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
class Mock
|
|
|
|
def list_templates(filters = { })
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|