public interface NetworkElement extends Adapter {
boolean implement(Network network, NetworkOffering offering, DeployDestination dest, ReservationContext context) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException;
boolean prepare(Network network, NicProfile nic, VirtualMachineProfile<? extends VirtualMachine> vm, DeployDestination dest, ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientNetworkCapacityException;
boolean release(Network network, NicProfile nic, VirtualMachineProfile<? extends VirtualMachine> vm, ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException;
boolean shutdown(Network network, ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException;
<BUG>boolean associate(Network network, Ip ipAddress) throws ResourceUnavailableException;

boolean disassociate(Network network, Ip ipAddress) throws ResourceUnavailableException;
</BUG>
boolean applyRules(Network network, List<? extends FirewallRule> rules) throws ResourceUnavailableException;

public interface NetworkElement extends Adapter {
boolean implement(Network network, NetworkOffering offering, DeployDestination dest, ReservationContext context) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException;
boolean prepare(Network network, NicProfile nic, VirtualMachineProfile<? extends VirtualMachine> vm, DeployDestination dest, ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientNetworkCapacityException;
boolean release(Network network, NicProfile nic, VirtualMachineProfile<? extends VirtualMachine> vm, ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException;
boolean shutdown(Network network, ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException;
boolean associate(Network network, IpAddress ipAddress) throws ResourceUnavailableException;
boolean disassociate(Network network, IpAddress ipAddress) throws ResourceUnavailableException;
boolean applyRules(Network network, List<? extends FirewallRule> rules) throws ResourceUnavailableException;
