|
32 | 32 | import java.util.Locale; |
33 | 33 | import java.util.Map; |
34 | 34 | import java.util.Random; |
35 | | -import java.util.Set; |
36 | 35 | import java.util.stream.Collectors; |
37 | 36 |
|
38 | 37 | import javax.inject.Inject; |
|
60 | 59 | import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; |
61 | 60 | import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; |
62 | 61 | import org.apache.cloudstack.utils.identity.ManagementServerNode; |
63 | | - |
64 | 62 | import org.apache.commons.collections.CollectionUtils; |
65 | 63 | import org.apache.commons.lang.ObjectUtils; |
66 | 64 | import org.springframework.stereotype.Component; |
|
176 | 174 | import com.cloud.storage.dao.VolumeDao; |
177 | 175 | import com.cloud.user.Account; |
178 | 176 | import com.cloud.user.AccountManager; |
| 177 | +import com.cloud.utils.StringUtils; |
179 | 178 | import com.cloud.utils.Ternary; |
180 | 179 | import com.cloud.utils.UriUtils; |
181 | 180 | import com.cloud.utils.component.Manager; |
|
202 | 201 | import com.cloud.utils.ssh.SSHCmdHelper; |
203 | 202 | import com.cloud.utils.ssh.SshException; |
204 | 203 | import com.cloud.vm.UserVmManager; |
205 | | -import com.cloud.utils.StringUtils; |
206 | 204 | import com.cloud.vm.VMInstanceVO; |
207 | 205 | import com.cloud.vm.VirtualMachine; |
208 | 206 | import com.cloud.vm.VirtualMachine.State; |
@@ -3288,12 +3286,16 @@ public List<HostVO> listAllHostsInAllZonesByType(final Type type) { |
3288 | 3286 |
|
3289 | 3287 | @Override |
3290 | 3288 | public List<HypervisorType> listAvailHypervisorInZone(final Long zoneId) { |
3291 | | - List<VMTemplateVO> systemVMTemplates = _templateDao.listAllReadySystemVMTemplates(zoneId); |
3292 | | - final Set<HypervisorType> hypervisors = new HashSet<>(); |
3293 | | - for (final VMTemplateVO systemVMTemplate : systemVMTemplates) { |
3294 | | - hypervisors.add(systemVMTemplate.getHypervisorType()); |
| 3289 | + final SearchCriteria<String> sc = _hypervisorsInDC.create(); |
| 3290 | + if (zoneId != null) { |
| 3291 | + sc.setParameters("dataCenter", zoneId); |
3295 | 3292 | } |
3296 | | - return new ArrayList<>(hypervisors); |
| 3293 | + sc.setParameters("type", Host.Type.Routing); |
| 3294 | + |
| 3295 | + return _hostDao.customSearch(sc, null).stream() |
| 3296 | + // The search is not able to return list of enums, so getting |
| 3297 | + // list of hypervisors as strings and then converting them to enum |
| 3298 | + .map(HypervisorType::getType).collect(Collectors.toList()); |
3297 | 3299 | } |
3298 | 3300 |
|
3299 | 3301 | @Override |
|
0 commit comments