package org.ovirt.engine.core.bll.exportimport; import java.util.Collection; import java.util.Objects; import java.util.Optional; import javax.inject.Inject; import javax.inject.Singleton; import org.ovirt.engine.core.common.businessentities.network.ExternalVnicProfileMapping; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.businessentities.network.VnicProfile; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.network.NetworkDao; import org.ovirt.engine.core.dao.network.VnicProfileDao; @Singleton public class ImportedNetworkInfoUpdater { private final ExternalVnicProfileMappingFinder externalVnicProfileMappingFinder; private final NetworkDao networkDao; private final VnicProfileDao vnicProfileDao; @Inject ImportedNetworkInfoUpdater(ExternalVnicProfileMappingFinder externalVnicProfileMappingFinder, NetworkDao networkDao, VnicProfileDao vnicProfileDao) { this.externalVnicProfileMappingFinder = Objects.requireNonNull(externalVnicProfileMappingFinder); this.networkDao = Objects.requireNonNull(networkDao); this.vnicProfileDao = Objects.requireNonNull(vnicProfileDao); } public void updateNetworkInfo(VmNetworkInterface vnic, Collection<ExternalVnicProfileMapping> externalVnicProfileMappings) { final Optional<ExternalVnicProfileMapping> mappingEntry = externalVnicProfileMappingFinder.findMappingEntry( vnic.getNetworkName(), vnic.getVnicProfileName(), externalVnicProfileMappings); if (mappingEntry.isPresent()) { final Guid vnicProfileId = mappingEntry.get().getVnicProfileId(); if (vnicProfileId == null) { setTargetVnicProfile(vnic, null, null, null); } else { final VnicProfile vnicProfile = vnicProfileDao.get(vnicProfileId); setTargetVnicProfile(vnic, vnicProfile.getId(), vnicProfile.getName(), getVnicProfileNetworkName(vnicProfile.getNetworkId())); } } } private void setTargetVnicProfile(VmNetworkInterface vnic, Guid vnicProfileId, String vnicProfileName, String networkName) { vnic.setVnicProfileId(vnicProfileId); vnic.setNetworkName(networkName); vnic.setVnicProfileName(vnicProfileName); } private String getVnicProfileNetworkName(Guid networkId) { final Network network = networkDao.get(networkId); return network.getName(); } }