mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[vsphere|compute] Bulk fetch all managed views VM properties
This commit is contained in:
parent
81b3242335
commit
88de0d008f
2 changed files with 18 additions and 8 deletions
|
@ -74,6 +74,8 @@ module Fog
|
||||||
:id => 'config.instanceUuid',
|
:id => 'config.instanceUuid',
|
||||||
:name => 'name',
|
:name => 'name',
|
||||||
:uuid => 'config.uuid',
|
:uuid => 'config.uuid',
|
||||||
|
:template => 'config.template',
|
||||||
|
:parent => 'parent',
|
||||||
:hostname => 'summary.guest.hostName',
|
:hostname => 'summary.guest.hostName',
|
||||||
:operatingsystem => 'summary.guest.guestFullName',
|
:operatingsystem => 'summary.guest.guestFullName',
|
||||||
:ipaddress => 'guest.ipAddress',
|
:ipaddress => 'guest.ipAddress',
|
||||||
|
@ -88,6 +90,11 @@ module Fog
|
||||||
:guest_id => 'summary.guest.guestId',
|
:guest_id => 'summary.guest.guestId',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def convert_vm_view_to_attr_hash(vms)
|
||||||
|
vms = @connection.serviceContent.propertyCollector.collectMultiple(vms,*ATTR_TO_PROP.values.uniq)
|
||||||
|
vms.map { |vm| props_to_attr_hash(*vm) }
|
||||||
|
end
|
||||||
|
|
||||||
# Utility method to convert a VMware managed object into an attribute hash.
|
# Utility method to convert a VMware managed object into an attribute hash.
|
||||||
# This should only really be necessary for the real class.
|
# This should only really be necessary for the real class.
|
||||||
# This method is expected to be called by the request methods
|
# This method is expected to be called by the request methods
|
||||||
|
@ -96,6 +103,10 @@ module Fog
|
||||||
return nil unless vm_mob_ref
|
return nil unless vm_mob_ref
|
||||||
|
|
||||||
props = vm_mob_ref.collect!(*ATTR_TO_PROP.values.uniq)
|
props = vm_mob_ref.collect!(*ATTR_TO_PROP.values.uniq)
|
||||||
|
props_to_attr_hash vm_mob_ref, props
|
||||||
|
end
|
||||||
|
|
||||||
|
def props_to_attr_hash vm_mob_ref, props
|
||||||
# NOTE: Object.tap is in 1.8.7 and later.
|
# NOTE: Object.tap is in 1.8.7 and later.
|
||||||
# Here we create the hash object that this method returns, but first we need
|
# Here we create the hash object that this method returns, but first we need
|
||||||
# to add a few more attributes that require additional calls to the vSphere
|
# to add a few more attributes that require additional calls to the vSphere
|
||||||
|
@ -125,11 +136,10 @@ module Fog
|
||||||
# cloning, a call to the macs method will throw and NoMethodError
|
# cloning, a call to the macs method will throw and NoMethodError
|
||||||
attrs['mac_addresses'] = vm_mob_ref.macs rescue nil
|
attrs['mac_addresses'] = vm_mob_ref.macs rescue nil
|
||||||
# Rescue nil to catch testing while vm_mob_ref isn't reaL??
|
# Rescue nil to catch testing while vm_mob_ref isn't reaL??
|
||||||
attrs['path'] = "/"+vm_mob_ref.parent.path.map(&:last).join('/') rescue nil
|
attrs['path'] = "/"+attrs['parent'].path.map(&:last).join('/') rescue nil
|
||||||
attrs['relative_path'] = (attrs['path'].split('/').reject {|e| e.empty?} - ["Datacenters", attrs['datacenter'], "vm"]).join("/") rescue nil
|
attrs['relative_path'] = (attrs['path'].split('/').reject {|e| e.empty?} - ["Datacenters", attrs['datacenter'], "vm"]).join("/") rescue nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# returns the parent object based on a type
|
# returns the parent object based on a type
|
||||||
# provides both real RbVmomi object and its name.
|
# provides both real RbVmomi object and its name.
|
||||||
# e.g.
|
# e.g.
|
||||||
|
|
|
@ -35,12 +35,12 @@ module Fog
|
||||||
:recursive => true
|
:recursive => true
|
||||||
}).view
|
}).view
|
||||||
end.flatten
|
end.flatten
|
||||||
# remove all template based virtual machines
|
|
||||||
vms.delete_if { |v| v.config.template }
|
|
||||||
|
|
||||||
vms.map do |vm_mob|
|
vms = convert_vm_view_to_attr_hash(vms)
|
||||||
convert_vm_mob_ref_to_attr_hash(vm_mob)
|
|
||||||
end
|
# remove all template based virtual machines
|
||||||
|
vms.delete_if { |v| v['template'] }
|
||||||
|
vms
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_folder_path(folder, root = nil)
|
def get_folder_path(folder, root = nil)
|
||||||
|
|
Loading…
Add table
Reference in a new issue