package org.ovirt.engine.core.bll.network.host; import java.util.List; import java.util.Map; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.compat.Guid; public interface VfScheduler { /** * Validates whether the VM interfaces have suitable virtual functions on the specified host. If the host has * suitable VFs, the mappings belonging to given <code>vmId</code> (obtainable from {@link #getVnicToVfMap}) are * updated with mapping between the VM interfaces to the virtual functions. * If not, the problematic VM interface's names are returned. * * @param vmId id of VM * @param hostId id of host * @param allVmNics All {@link VmNetworkInterface} for given <code>vmId</code> * * @return the names of the problematic vm interfaces */ public List<String> validatePassthroughVnics(Guid vmId, Guid hostId, List<VmNetworkInterface> allVmNics); /** * @return the name of a free suitable vf. If there is no one, return null. */ public String findFreeVfForVnic(Guid hostId, Network vnicNetwork, Guid vmId); /** * @return the mapping between the VM interfaces to the virtual functions. Null is returned if there are no data for * given <code>vmId</code> and <code>hostId</code> */ public Map<Guid, String> getVnicToVfMap(Guid vmId, Guid hostId); /** * Cleans all mappings of the specified vm (obtainable using {@link #getVnicToVfMap}). */ public void cleanVmData(Guid vmId); }