@Override
 public void reserve(
     NicProfile nic,
     Network network,
     VirtualMachineProfile<? extends VirtualMachine> vm,
     DeployDestination dest,
     ReservationContext context)
     throws InsufficientVirtualNetworkCapcityException, InsufficientAddressCapacityException,
         ConcurrentOperationException {
   if (nic.getIp4Address() == null) {
     _networkMgr.allocateDirectIp(nic, dest.getDataCenter(), vm, network, null);
     nic.setStrategy(ReservationStrategy.Create);
   }
 }
  @Override
  public NicProfile allocate(
      Network network, NicProfile nic, VirtualMachineProfile<? extends VirtualMachine> vm)
      throws InsufficientVirtualNetworkCapcityException, InsufficientAddressCapacityException,
          ConcurrentOperationException {

    DataCenter dc = _dcDao.findById(network.getDataCenterId());

    if (nic == null) {
      nic = new NicProfile(ReservationStrategy.Create, null, null, null, null);
    } else if (nic.getIp4Address() == null) {
      nic.setStrategy(ReservationStrategy.Start);
    } else {
      nic.setStrategy(ReservationStrategy.Create);
    }

    _networkMgr.allocateDirectIp(nic, dc, vm, network, nic.getRequestedIp());
    nic.setStrategy(ReservationStrategy.Create);

    return nic;
  }