package org.ovirt.engine.core.bll.network.vm.mac; import java.util.Collection; import java.util.Collections; import java.util.Objects; import java.util.stream.Collectors; import org.ovirt.engine.core.bll.network.macpool.ReadMacPool; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; class VmMacsInUseFinder implements ProblematicVmMacsFinder { private final ReadMacPool readMacPool; VmMacsInUseFinder(ReadMacPool readMacPool) { this.readMacPool = Objects.requireNonNull(readMacPool); } @Override public Collection<String> findProblematicMacs(VM vm) { if (readMacPool.isDuplicateMacAddressesAllowed()) { return Collections.emptyList(); } else { return vm.getInterfaces() .stream() .map(VmNetworkInterface::getMacAddress) .filter(readMacPool::isMacInUse) .collect(Collectors.toList()); } } }