@Override @DB public DataCenterVnetVO take(long physicalNetworkId, long accountId, String reservationId, List<Long> vlanDbIds) { SearchCriteria<DataCenterVnetVO> sc; if (vlanDbIds != null) { sc = FreeDedicatedVnetSearch.create(); sc.setParameters("accountGuestVlanMapId", vlanDbIds.toArray()); } else { sc = FreeVnetSearch.create(); } sc.setParameters("physicalNetworkId", physicalNetworkId); Date now = new Date(); TransactionLegacy txn = TransactionLegacy.currentTxn(); txn.start(); DataCenterVnetVO vo = lockOneRandomRow(sc, true); if (vo == null) { return null; } vo.setTakenAt(now); vo.setAccountId(accountId); vo.setReservationId(reservationId); update(vo.getId(), vo); txn.commit(); return vo; }