Class: RbVmomi::VIM::Folder
- Inherits:
-
Object
- Object
- RbVmomi::VIM::Folder
- Defined in:
- lib/rbvmomi/vim/Folder.rb
Overview
Copyright © 2011-2017 VMware, Inc. All Rights Reserved. SPDX-License-Identifier: MIT
Instance Method Summary collapse
-
#children ⇒ Object
Alias to
childEntity
. -
#find(name, type = Object) ⇒ VIM::ManagedEntity
Retrieve a child entity.
-
#findByDnsName(name, type = RbVmomi::VIM::VirtualMachine, dc = nil) ⇒ VIM::ManagedEntity
Retrieve a virtual machine or host by DNS name.
-
#findByInventoryPath(path) ⇒ VIM::ManagedEntity
Retrieve a managed entity by inventory path.
-
#findByIp(ip, type = RbVmomi::VIM::VirtualMachine, dc = nil) ⇒ VIM::ManagedEntity
Retrieve a virtual machine or host by IP address.
-
#findByUuid(uuid, type = RbVmomi::VIM::VirtualMachine, dc = nil, instance_uuid = false) ⇒ VIM::ManagedEntity
Finds a virtual machine or host by BIOS or instance UUID.
- #inventory(propSpecs = {}) ⇒ Hash deprecated Deprecated.
-
#inventory_flat(propSpecs = {}) ⇒ Hash
Efficiently retrieve properties from descendants of this folder.
-
#inventory_tree(propSpecs = {}) ⇒ Hash
Efficiently retrieve properties from descendants of this folder.
-
#traverse(path, type = Object, create = false) ⇒ VIM::ManagedEntity
Retrieve a descendant of this Folder.
-
#traverse!(path, type = Object) ⇒ Object
Alias to
traverse path, type, true
.
Instance Method Details
#children ⇒ Object
Alias to childEntity
.
112 113 114 |
# File 'lib/rbvmomi/vim/Folder.rb', line 112 def children childEntity end |
#find(name, type = Object) ⇒ VIM::ManagedEntity
Retrieve a child entity
9 10 11 12 |
# File 'lib/rbvmomi/vim/Folder.rb', line 9 def find name, type=Object x = _connection.searchIndex.FindChild(:entity => self, :name => name) x if x.is_a? type end |
#findByDnsName(name, type = RbVmomi::VIM::VirtualMachine, dc = nil) ⇒ VIM::ManagedEntity
Retrieve a virtual machine or host by DNS name
19 20 21 22 23 24 25 26 27 |
# File 'lib/rbvmomi/vim/Folder.rb', line 19 def findByDnsName name, type=RbVmomi::VIM::VirtualMachine, dc=nil propSpecs = { :entity => self, :dnsName => name, :vmSearch => type == RbVmomi::VIM::VirtualMachine } propSpecs[:datacenter] = dc if dc x = _connection.searchIndex.FindByDnsName(propSpecs) x if x.is_a? type end |
#findByInventoryPath(path) ⇒ VIM::ManagedEntity
Retrieve a managed entity by inventory path.
66 67 68 69 70 71 |
# File 'lib/rbvmomi/vim/Folder.rb', line 66 def findByInventoryPath path propSpecs = { :entity => self, :inventoryPath => path } _connection.searchIndex.FindByInventoryPath(propSpecs) end |
#findByIp(ip, type = RbVmomi::VIM::VirtualMachine, dc = nil) ⇒ VIM::ManagedEntity
Retrieve a virtual machine or host by IP address
34 35 36 37 38 39 40 41 42 |
# File 'lib/rbvmomi/vim/Folder.rb', line 34 def findByIp ip, type=RbVmomi::VIM::VirtualMachine, dc=nil propSpecs = { :entity => self, :ip => ip, :vmSearch => type == RbVmomi::VIM::VirtualMachine } propSpecs[:datacenter] = dc if dc x = _connection.searchIndex.FindByIp(propSpecs) x if x.is_a? type end |
#findByUuid(uuid, type = RbVmomi::VIM::VirtualMachine, dc = nil, instance_uuid = false) ⇒ VIM::ManagedEntity
Finds a virtual machine or host by BIOS or instance UUID
51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/rbvmomi/vim/Folder.rb', line 51 def findByUuid(uuid, type = RbVmomi::VIM::VirtualMachine, dc = nil, instance_uuid = false) prop_specs = { :entity => self, :instanceUuid => instance_uuid, :uuid => uuid, :vmSearch => type == RbVmomi::VIM::VirtualMachine } prop_specs[:datacenter] = dc if dc x = _connection.searchIndex.FindByUuid(prop_specs) x if x.is_a?(type) end |
#inventory(propSpecs = {}) ⇒ Hash
Efficiently retrieve properties from descendants of this folder.
203 204 205 206 207 208 209 210 211 212 213 |
# File 'lib/rbvmomi/vim/Folder.rb', line 203 def inventory propSpecs={} inv = inventory_flat propSpecs tree = { self => {} } inv.each do |obj,x| next if obj == self h = Hash[x.propSet.map { |y| [y.name, y.val] }] tree[h['parent']][h['name']] = [obj, h] tree[obj] = {} if obj.is_a? RbVmomi::VIM::Folder end tree end |
#inventory_flat(propSpecs = {}) ⇒ Hash
Efficiently retrieve properties from descendants of this folder.
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/rbvmomi/vim/Folder.rb', line 125 def inventory_flat propSpecs={} propSet = [{ :type => 'Folder', :pathSet => ['name', 'parent', 'childEntity'] }] propSpecs.each do |k,v| case k when Class fail "key must be a subclass of ManagedEntity" unless k < RbVmomi::VIM::ManagedEntity k = k.wsdl_name when Symbol, String k = k.to_s else fail "invalid key" end h = { :type => k } if v == :all h[:all] = true elsif v.is_a? Array h[:pathSet] = v + %w(parent) else fail "value must be an array of property paths or :all" end propSet << h end filterSpec = RbVmomi::VIM.PropertyFilterSpec( :objectSet => [ :obj => self, :selectSet => [ RbVmomi::VIM.TraversalSpec( :name => 'tsFolder', :type => 'Folder', :path => 'childEntity', :skip => false, :selectSet => [ RbVmomi::VIM.SelectionSpec(:name => 'tsFolder') ] ) ] ], :propSet => propSet ) result = _connection.propertyCollector.RetrieveProperties(:specSet => [filterSpec]) {}.tap do |h| result.each { |r| h[r.obj] = r } end end |
#inventory_tree(propSpecs = {}) ⇒ Hash
Efficiently retrieve properties from descendants of this folder.
183 184 185 186 187 188 |
# File 'lib/rbvmomi/vim/Folder.rb', line 183 def inventory_tree propSpecs={} inv = inventory_flat propSpecs children = inv.values.group_by { |v| v['parent'] } rec = lambda { |parent| Hash[(children[parent]||[]).map { |x| [x, rec[x.obj]] }] } rec[self] end |
#traverse(path, type = Object, create = false) ⇒ VIM::ManagedEntity
Move create
functionality into another method.
Retrieve a descendant of this Folder.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/rbvmomi/vim/Folder.rb', line 85 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 |
#traverse!(path, type = Object) ⇒ Object
Alias to traverse path, type, true
75 76 77 |
# File 'lib/rbvmomi/vim/Folder.rb', line 75 def traverse! path, type=Object traverse path, type, true end |