# File lib/fog/vsphere/requests/compute/get_folder.rb, line 26 def get_raw_vmfolder(path, datacenter_name) # The required path syntax - 'topfolder/subfolder # Clean up path to be relative since we're providing datacenter name paths = path.sub(/^\/?Datacenters\/#{datacenter_name}\/vm\/?/, '').split('/') dc = find_raw_datacenter(datacenter_name) dc_root_folder = dc.vmFolder return dc_root_folder if paths.empty? # Walk the tree resetting the folder pointer as we go paths.inject(dc_root_folder) do |last_returned_folder, sub_folder| # JJM VIM::Folder#find appears to be quite efficient as it uses the # searchIndex It certainly appears to be faster than # VIM::Folder#inventory since that returns _all_ managed objects of # a certain type _and_ their properties. sub = last_returned_folder.find(sub_folder, RbVmomi::VIM::Folder) raise ArgumentError, "Could not descend into #{sub_folder}. Please check your path. #{path}" unless sub sub end end