Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2085,13 +2085,31 @@ public void finalizeUpdateInSequence(Network network, boolean success) {
}
}

private Map<Long, NetworkVO> batchLoadNetworksForNics(List<NicVO> nics) {
List<Long> networkIds = new ArrayList<>(nics.size());
for (NicVO nic : nics) {
networkIds.add(nic.getNetworkId());
}
Map<Long, NetworkVO> result = new HashMap<>(networkIds.size());
if (!networkIds.isEmpty()) {
for (NetworkVO network : _networksDao.listByIds(networkIds)) {
result.put(network.getId(), network);
}
}
return result;
}

@Override
public void setHypervisorHostname(VirtualMachineProfile vm, DeployDestination dest, boolean migrationSuccessful) throws ResourceUnavailableException {
String hypervisorHostName = VirtualMachineManager.getHypervisorHostname(dest.getHost().getName());
if (StringUtils.isNotEmpty(hypervisorHostName)) {
final List<NicVO> nics = _nicDao.listByVmId(vm.getId());
final Map<Long, NetworkVO> networksById = batchLoadNetworksForNics(nics);
for (final NicVO nic : nics) {
final NetworkVO network = _networksDao.findById(nic.getNetworkId());
final NetworkVO network = networksById.get(nic.getNetworkId());
if (network == null) {
continue;
}
final Integer networkRate = _networkModel.getNetworkRate(network.getId(), vm.getId());
final NicProfile profile = new NicProfile(nic, network, nic.getBroadcastUri(), nic.getIsolationUri(), networkRate, _networkModel.isSecurityGroupSupportedInNetwork(network),
_networkModel.getNetworkTag(vm.getHypervisorType(), network));
Expand Down Expand Up @@ -2266,8 +2284,13 @@ public void prepareNicForMigration(final VirtualMachineProfile vm, final DeployD
}
final List<NicVO> nics = _nicDao.listByVmId(vm.getId());
final ReservationContext context = new ReservationContextImpl(UUID.randomUUID().toString(), null, null);
final Map<Long, NetworkVO> networksById = batchLoadNetworksForNics(nics);
for (final NicVO nic : nics) {
final NetworkVO network = _networksDao.findById(nic.getNetworkId());
final NetworkVO network = networksById.get(nic.getNetworkId());
if (network == null) {
logger.warn("Network {} not found for nic {} during migration prep, skipping", nic.getNetworkId(), nic);
continue;
}
final Integer networkRate = _networkModel.getNetworkRate(network.getId(), vm.getId());

final NetworkGuru guru = AdapterBase.getAdapterByName(networkGurus, network.getGuruName());
Expand Down Expand Up @@ -2311,9 +2334,14 @@ public void prepareNicForMigration(final VirtualMachineProfile vm, final DeployD
public void prepareAllNicsForMigration(final VirtualMachineProfile vm, final DeployDestination dest) {
final List<NicVO> nics = _nicDao.listByVmId(vm.getId());
final ReservationContext context = new ReservationContextImpl(UUID.randomUUID().toString(), null, null);
final Map<Long, NetworkVO> networksById = batchLoadNetworksForNics(nics);
Long guestNetworkId = null;
for (final NicVO nic : nics) {
final NetworkVO network = _networksDao.findById(nic.getNetworkId());
final NetworkVO network = networksById.get(nic.getNetworkId());
if (network == null) {
logger.warn("Network {} not found for nic {} during migration prep, skipping", nic.getNetworkId(), nic);
continue;
}
if (network.getTrafficType().equals(TrafficType.Guest) && network.getGuestType().equals(GuestType.Isolated)) {
guestNetworkId = network.getId();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ public interface NetworkDao extends GenericDao<NetworkVO, Long>, StateDao<State,

List<NetworkVO> listByOwner(long ownerId);

List<NetworkVO> listByIds(List<Long> ids);

List<NetworkVO> listByGuestType(GuestType type);

List<NetworkVO> listBy(long accountId, long offeringId, long dataCenterId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -563,6 +563,19 @@ public List<NetworkVO> listByOwner(final long ownerId) {
return listBy(sc);
}

@Override
public List<NetworkVO> listByIds(List<Long> ids) {
if (ids == null || ids.isEmpty()) {
return new ArrayList<>();
}
SearchBuilder<NetworkVO> sb = createSearchBuilder();
sb.and("id", sb.entity().getId(), Op.IN);
sb.done();
SearchCriteria<NetworkVO> sc = sb.create();
sc.setParameters("id", ids.toArray());
return listBy(sc);
}

@Override
public void addDomainToNetwork(final long networkId, final long domainId, final Boolean subdomainAccess) {
addDomainToNetworknetwork(networkId, domainId, subdomainAccess);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -280,4 +280,9 @@ public List<NetworkVO> listByNetworkDomainsAndAccountIds(Set<String> uniqueNtwkD
public List<NetworkVO> listByNetworkDomainsAndDomainIds(Set<String> uniqueNtwkDomains, Set<Long> domainIds) {
return List.of();
}

@Override
public List<NetworkVO> listByIds(List<Long> ids) {
return null;
}
}
Loading