|
64 | 64 | import com.cloud.cluster.dao.ManagementServerHostDao; |
65 | 65 | import com.cloud.dc.Vlan.VlanType; |
66 | 66 | import com.cloud.dc.VlanVO; |
| 67 | +import com.cloud.dc.dao.ClusterDao; |
67 | 68 | import com.cloud.dc.dao.VlanDao; |
68 | 69 | import com.cloud.exception.StorageUnavailableException; |
69 | 70 | import com.cloud.gpu.dao.HostGpuGroupsDao; |
|
92 | 93 | import com.cloud.network.as.dao.AutoScaleVmProfileDao; |
93 | 94 | import com.cloud.network.as.dao.ConditionDao; |
94 | 95 | import com.cloud.network.as.dao.CounterDao; |
| 96 | +import com.cloud.org.Cluster; |
95 | 97 | import com.cloud.resource.ResourceManager; |
96 | 98 | import com.cloud.resource.ResourceState; |
97 | 99 | import com.cloud.service.ServiceOfferingVO; |
98 | 100 | import com.cloud.service.dao.ServiceOfferingDao; |
99 | 101 | import com.cloud.storage.ImageStoreDetailsUtil; |
| 102 | +import com.cloud.storage.ScopeType; |
| 103 | +import com.cloud.storage.Storage.ImageFormat; |
100 | 104 | import com.cloud.storage.StorageManager; |
101 | 105 | import com.cloud.storage.StorageStats; |
102 | 106 | import com.cloud.storage.VolumeStats; |
103 | 107 | import com.cloud.storage.VolumeVO; |
104 | 108 | import com.cloud.storage.dao.VolumeDao; |
105 | 109 | import com.cloud.user.UserStatisticsVO; |
106 | | -import com.cloud.storage.Storage.ImageFormat; |
107 | 110 | import com.cloud.user.VmDiskStatisticsVO; |
108 | 111 | import com.cloud.user.dao.UserStatisticsDao; |
109 | 112 | import com.cloud.user.dao.VmDiskStatisticsDao; |
@@ -173,6 +176,8 @@ public String toString() { |
173 | 176 | @Inject |
174 | 177 | private HostDao _hostDao; |
175 | 178 | @Inject |
| 179 | + private ClusterDao _clusterDao; |
| 180 | + @Inject |
176 | 181 | private UserVmDao _userVmDao; |
177 | 182 | @Inject |
178 | 183 | private VolumeDao _volsDao; |
@@ -916,7 +921,18 @@ else if (volume.getFormat() == ImageFormat.OVA){ |
916 | 921 | } |
917 | 922 | } |
918 | 923 | try { |
919 | | - HashMap<String, VolumeStatsEntry> volumeStatsByUuid = _userVmMgr.getVolumeStatistics(pool.getClusterId(), pool.getUuid(), pool.getPoolType(), volumeLocators, StatsTimeout.value()); |
| 924 | + Map<String, VolumeStatsEntry> volumeStatsByUuid; |
| 925 | + if (pool.getScope() == ScopeType.ZONE) { |
| 926 | + volumeStatsByUuid = new HashMap<>(); |
| 927 | + for (final Cluster cluster: _clusterDao.listByZoneId(pool.getDataCenterId())) { |
| 928 | + final Map<String, VolumeStatsEntry> volumeStatsForCluster = _userVmMgr.getVolumeStatistics(cluster.getId(), pool.getUuid(), pool.getPoolType(), volumeLocators, StatsTimeout.value()); |
| 929 | + if (volumeStatsForCluster != null) { |
| 930 | + volumeStatsByUuid.putAll(volumeStatsForCluster); |
| 931 | + } |
| 932 | + } |
| 933 | + } else { |
| 934 | + volumeStatsByUuid = _userVmMgr.getVolumeStatistics(pool.getClusterId(), pool.getUuid(), pool.getPoolType(), volumeLocators, StatsTimeout.value()); |
| 935 | + } |
920 | 936 | if (volumeStatsByUuid != null){ |
921 | 937 | for (final Map.Entry<String, VolumeStatsEntry> entry : volumeStatsByUuid.entrySet()) { |
922 | 938 | if (entry == null || entry.getKey() == null || entry.getValue() == null) { |
|
0 commit comments