package org.ovirt.engine.core.bll.provider.network;
import java.util.List;
import java.util.Map;
import org.ovirt.engine.core.bll.provider.ProviderProxy;
import org.ovirt.engine.core.common.businessentities.VDS;
import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet;
import org.ovirt.engine.core.common.businessentities.network.Network;
import org.ovirt.engine.core.common.businessentities.network.ProviderNetwork;
import org.ovirt.engine.core.common.businessentities.network.VmNic;
import org.ovirt.engine.core.common.businessentities.network.VnicProfile;
public interface NetworkProviderProxy extends ProviderProxy {
/**
* Add the network to the provider, who is responsible to provide the requested network.
*
* @param network
* The network to add to the provider.
* @return The external ID of the added network.
*/
String add(Network network);
/**
* Remove the network from the external provider.
*
* @param id
* The external ID of the network to remove.
*/
void remove(String id);
/**
* Retrieve a list of all the networks that this provider can provide.
*
* @return A list of the networks available from the provider.
*/
List<Network> getAll();
/**
* Retrieve a list of all subnets that are associated with the given network.
*
* @param network
* The network to get the subnets for.
* @return A list of all subnets for the network.
*/
List<ExternalSubnet> getAllSubnets(ProviderNetwork network);
/**
* Add the subnet to be managed by the provider.
*
* @param subnet
* The subnet to add.
*/
void addSubnet(ExternalSubnet subnet);
/**
* Remove the subnet from the provider.
*
* @param id
* The ID of the subnet to remove.
*/
void removeSubnet(String id);
/**
* Allocate the vNIC on the network in the provider.
*
* @param network
* The network to allocate the vNIC on.
* @param vnicProfile
* The vNIC profile that connects the vNIC to the network.
* @param nic
* The vNIC to allocate.
* @param host
* The host to schedule the vm on
* @return A map of custom properties to forward for the vNIC device. The correct driver will know how to handle
* these properties, and connect the vNIC correctly.
*/
Map<String, String> allocate(Network network, VnicProfile vnicProfile, VmNic nic, VDS host);
/**
* Deallocate the vNIC from the provider. If the vNIC is not on the provider anymore, don't throw an exception.
*
* @param nic
* The vNIC to deallocate.
*/
void deallocate(VmNic nic);
}