From 993a5e8e630e4b8be269fd713205cbfc3cf4d66c Mon Sep 17 00:00:00 2001 From: mcabrerizo Date: Tue, 4 Apr 2017 09:44:03 +0200 Subject: [PATCH] F #4913: Add vmdk disk capacity when retrieving size in datastore/stat action --- .../remotes/lib/vcenter_driver/datastore.rb | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/vmm_mad/remotes/lib/vcenter_driver/datastore.rb b/src/vmm_mad/remotes/lib/vcenter_driver/datastore.rb index 0f8a6ebc4c..537017fa87 100644 --- a/src/vmm_mad/remotes/lib/vcenter_driver/datastore.rb +++ b/src/vmm_mad/remotes/lib/vcenter_driver/datastore.rb @@ -363,12 +363,17 @@ class Datastore < Storage search_task.wait_for_completion - file_size = search_task.info.result[0].file[0].fileSize rescue nil + size = 0 - raise "Could not get file size" if file_size.nil? + # Try to get vmdk capacity as seen by VM + size = search_task.info.result[0].file[0].capacityKb / 1024 rescue nil - (file_size / 1024) / 1024 + # Try to get file size + size = search_task.info.result[0].file[0].fileSize / 1024 / 1024 rescue nil if !size + raise "Could not get file size or capacity" if size.nil? + + size rescue raise "Could not find file." end @@ -376,7 +381,14 @@ class Datastore < Storage def get_search_params(ds_name, img_path=nil, img_name=nil) spec = RbVmomi::VIM::HostDatastoreBrowserSearchSpec.new - spec.query = [RbVmomi::VIM::VmDiskFileQuery.new, + + vmdisk_query = RbVmomi::VIM::VmDiskFileQuery.new + vmdisk_query.details = RbVmomi::VIM::VmDiskFileQueryFlags(:diskType => true, + :capacityKb => true, + :hardwareVersion => true, + :controllerType => true) + + spec.query = [vmdisk_query, RbVmomi::VIM::IsoImageFileQuery.new] spec.details = RbVmomi::VIM::FileQueryFlags(:fileOwner => true, :fileSize => true,