Method: RbVmomi::VIM::Folder#traverse
- Defined in:
- lib/rbvmomi/vim/Folder.rb
#traverse(path, type = Object, create = false) ⇒ VIM::ManagedEntity
TODO:
Move create functionality into another method.
Retrieve a descendant of this Folder.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/rbvmomi/vim/Folder.rb', line 78 def traverse path, type=Object, create=false if path.is_a? String es = path.split('/').reject(&:empty?) elsif path.is_a? Enumerable es = path else fail "unexpected path class #{path.class}" end return self if es.empty? final = es.pop p = es.inject(self) do |f,e| f.find(e, RbVmomi::VIM::Folder) || (create && f.CreateFolder(:name => e)) || return end if x = p.find(final, type) x elsif create and type == RbVmomi::VIM::Folder p.CreateFolder(:name => final) elsif create and type == RbVmomi::VIM::Datacenter p.CreateDatacenter(:name => final) else nil end end |