|
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 | | - |
67 | 64 | import org.springframework.stereotype.Component; |
68 | 65 |
|
69 | 66 | import com.cloud.agent.AgentManager; |
|
175 | 172 | import com.cloud.storage.dao.VolumeDao; |
176 | 173 | import com.cloud.user.Account; |
177 | 174 | import com.cloud.user.AccountManager; |
| 175 | +import com.cloud.utils.StringUtils; |
178 | 176 | import com.cloud.utils.Ternary; |
179 | 177 | import com.cloud.utils.UriUtils; |
180 | 178 | import com.cloud.utils.component.Manager; |
|
201 | 199 | import com.cloud.utils.ssh.SSHCmdHelper; |
202 | 200 | import com.cloud.utils.ssh.SshException; |
203 | 201 | import com.cloud.vm.UserVmManager; |
204 | | -import com.cloud.utils.StringUtils; |
205 | 202 | import com.cloud.vm.VMInstanceVO; |
206 | 203 | import com.cloud.vm.VirtualMachine; |
207 | 204 | import com.cloud.vm.VirtualMachine.State; |
@@ -3266,12 +3263,16 @@ public List<HostVO> listAllHostsInAllZonesByType(final Type type) { |
3266 | 3263 |
|
3267 | 3264 | @Override |
3268 | 3265 | public List<HypervisorType> listAvailHypervisorInZone(final Long zoneId) { |
3269 | | - List<VMTemplateVO> systemVMTemplates = _templateDao.listAllReadySystemVMTemplates(zoneId); |
3270 | | - final Set<HypervisorType> hypervisors = new HashSet<>(); |
3271 | | - for (final VMTemplateVO systemVMTemplate : systemVMTemplates) { |
3272 | | - hypervisors.add(systemVMTemplate.getHypervisorType()); |
| 3266 | + final SearchCriteria<String> sc = _hypervisorsInDC.create(); |
| 3267 | + if (zoneId != null) { |
| 3268 | + sc.setParameters("dataCenter", zoneId); |
3273 | 3269 | } |
3274 | | - return new ArrayList<>(hypervisors); |
| 3270 | + sc.setParameters("type", Host.Type.Routing); |
| 3271 | + |
| 3272 | + return _hostDao.customSearch(sc, null).stream() |
| 3273 | + // The search is not able to return list of enums, so getting |
| 3274 | + // list of hypervisors as strings and then converting them to enum |
| 3275 | + .map(HypervisorType::getType).collect(Collectors.toList()); |
3275 | 3276 | } |
3276 | 3277 |
|
3277 | 3278 | @Override |
|
0 commit comments