package org.ovirt.engine.core.bll.network.macpool; import java.util.List; import org.ovirt.engine.core.utils.lock.AcquireWriteLock; /** * The interface defines all operations that change a MAC-pool state. */ public interface WriteMacPool { /** * @return free MAC from pool. * @throws org.ovirt.engine.core.common.errors.EngineException if mac address cannot be allocated. */ @AcquireWriteLock String allocateNewMac(); /** * Returns MAC back to pool. * @param mac mac to return to pool. */ @AcquireWriteLock void freeMac(String mac); /** * take specified mac from pool. May be unsuccessful depending on system setting. * @param mac mac to get from pool. * @return true if MAC was added successfully, and false if the MAC is in use and * {@link org.ovirt.engine.core.common.businessentities.MacPool#isAllowDuplicateMacAddresses()} is set to false */ @AcquireWriteLock boolean addMac(String mac); /** * @param macs macs to be added. * @return list of macs, which failed to be added, because of existence of duplicate. */ @AcquireWriteLock List<String> addMacs(List<String> macs); /** * Add given MAC address, regardless of it being in use. * @param mac MAC to add. */ @AcquireWriteLock void forceAddMac(String mac); @AcquireWriteLock void forceAddMacs(List<String> macs); /** * * @param macs macs to return to pool */ @AcquireWriteLock void freeMacs(List<String> macs); /** * @param numberOfAddresses The number of MAC addresses to allocate * @return The list of MAC addresses, sorted in ascending order * @throws org.ovirt.engine.core.common.errors.EngineException if mac address cannot be allocated. */ @AcquireWriteLock List<String> allocateMacAddresses(int numberOfAddresses); }