This is an automated email from the ASF dual-hosted git repository.

rohit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/master by this push:
     new e1fa270  vmware: fix volume stats logic (#3473)
e1fa270 is described below

commit e1fa270593bb49ccbc85ffa2315570b8d7d8b2e1
Author: Rohit Yadav <rohit.ya...@shapeblue.com>
AuthorDate: Mon Jul 22 17:27:41 2019 +0530

    vmware: fix volume stats logic (#3473)
    
    During volume stats calculation, if a volume has more than one disk in
    the chain-info it is not used to sum the physical and virtual size
    in the loop, instead any previous entry was overwritten by the last disk.
    
    Signed-off-by: Rohit Yadav <rohit.ya...@shapeblue.com>
---
 .../com/cloud/hypervisor/vmware/resource/VmwareResource.java | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git 
a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java
 
b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java
index c195712..141f2f6 100644
--- 
a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java
+++ 
b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java
@@ -3612,8 +3612,16 @@ public class VmwareResource implements 
StoragePoolResource, ServerResource, Vmwa
                                 Pair<VirtualDisk, String> vds = 
vmMo.getDiskDevice(file.getFileName(), true);
                                 long virtualsize = 
vds.first().getCapacityInKB() * 1024;
                                 long physicalsize = 
primaryStorageDatastoreMo.fileDiskSize(file.getPath());
-                                VolumeStatsEntry vse = new 
VolumeStatsEntry(chainInfo, physicalsize, virtualsize);
-                                statEntry.put(chainInfo, vse);
+                                if (statEntry.containsKey(chainInfo)) {
+                                    VolumeStatsEntry vse = 
statEntry.get(chainInfo);
+                                    if (vse != null) {
+                                        
vse.setPhysicalSize(vse.getPhysicalSize() + physicalsize);
+                                        
vse.setVirtualSize(vse.getVirtualSize() + virtualsize);
+                                    }
+                                } else {
+                                    VolumeStatsEntry vse = new 
VolumeStatsEntry(chainInfo, physicalsize, virtualsize);
+                                    statEntry.put(chainInfo, vse);
+                                }
                             }
                         }
                     }

Reply via email to