@Override public List<DataCenterVnetVO> findVnet(long dcId, long physicalNetworkId, String vnet) { return findOverlappingVnets(dcId, physicalNetworkId, vnet); }
@Override public void releaseDedicatedGuestVlans(Long dedicatedGuestVlanRangeId) { SearchCriteria<DataCenterVnetVO> sc = DedicatedGuestVlanRangeSearch.create(); sc.setParameters("dedicatedGuestVlanRangeId", dedicatedGuestVlanRangeId); List<DataCenterVnetVO> vnets = listBy(sc); for (DataCenterVnetVO vnet : vnets) { vnet.setAccountGuestVlanMapId(null); update(vnet.getId(), vnet); } }
@Override public void release(String vnet, long physicalNetworkId, long accountId, String reservationId) { SearchCriteria<DataCenterVnetVO> sc = VnetDcSearchAllocated.create(); sc.setParameters("vnet", vnet); sc.setParameters("physicalNetworkId", physicalNetworkId); sc.setParameters("account", accountId); sc.setParameters("reservation", reservationId); DataCenterVnetVO vo = findOneIncludingRemovedBy(sc); if (vo == null) { return; } vo.setTakenAt(null); vo.setAccountId(null); vo.setReservationId(null); update(vo.getId(), vo); }
@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; }
@Override public int countAllocatedVnets(long physicalNetworkId) { SearchCriteria<DataCenterVnetVO> sc = DcSearchAllocated.create(); sc.setParameters("physicalNetworkId", physicalNetworkId); return listBy(sc).size(); }
@Override public int countZoneVlans(long dcId, boolean onlyCountAllocated) { SearchCriteria<Integer> sc = onlyCountAllocated ? countAllocatedZoneVlans.create() : countZoneVlans.create(); sc.setParameters("dc", dcId); return customSearch(sc, null).get(0); }
public DataCenterVnetDaoImpl() { super(); DcSearchAllocated = createSearchBuilder(); DcSearchAllocated.and("dc", DcSearchAllocated.entity().getDataCenterId(), SearchCriteria.Op.EQ); DcSearchAllocated.and("physicalNetworkId", DcSearchAllocated.entity().getPhysicalNetworkId(), SearchCriteria.Op.EQ); DcSearchAllocatedInRange = createSearchBuilder(); DcSearchAllocatedInRange.and("dc", DcSearchAllocatedInRange.entity().getDataCenterId(), Op.EQ); DcSearchAllocatedInRange.and("physicalNetworkId", DcSearchAllocatedInRange.entity().getPhysicalNetworkId(), Op.EQ); SearchRange = createSearchBuilder(); SearchRange.and("dc", SearchRange.entity().getDataCenterId(), Op.EQ); SearchRange.and("physicalNetworkId", SearchRange.entity().getPhysicalNetworkId(), Op.EQ); SearchRange.and("vnetRange", SearchRange.entity().getVnet(), Op.BETWEEN); FreeVnetSearch = createSearchBuilder(); FreeVnetSearch.and("dc", FreeVnetSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ); FreeVnetSearch.and("physicalNetworkId", FreeVnetSearch.entity().getPhysicalNetworkId(), SearchCriteria.Op.EQ); FreeDedicatedVnetSearch = createSearchBuilder(); FreeDedicatedVnetSearch.and("dc", FreeDedicatedVnetSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ); FreeDedicatedVnetSearch.and("physicalNetworkId", FreeDedicatedVnetSearch.entity().getPhysicalNetworkId(), SearchCriteria.Op.EQ); VnetDcSearch = createSearchBuilder(); VnetDcSearch.and("vnet", VnetDcSearch.entity().getVnet(), SearchCriteria.Op.EQ); VnetDcSearch.and("dc", VnetDcSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ); countZoneVlans = createSearchBuilder(Integer.class); countZoneVlans.select(null, Func.COUNT, countZoneVlans.entity().getId()); countZoneVlans.and("dc", countZoneVlans.entity().getDataCenterId(), Op.EQ);
@Override public void delete(long physicalNetworkId) { SearchCriteria<DataCenterVnetVO> sc = VnetDcSearch.create(); sc.setParameters("physicalNetworkId", physicalNetworkId); remove(sc); }
@Override public void lockRange(long dcId, long physicalNetworkId, Integer start, Integer end) { SearchCriteria<DataCenterVnetVO> sc = SearchRange.create(); sc.setParameters("dc", dcId); sc.setParameters("physicalNetworkId", physicalNetworkId); sc.setParameters("vnetRange", start.toString(), end.toString()); lockRows(sc, null, true); }
@Override public List<DataCenterVnetVO> listAllocatedVnets(long physicalNetworkId) { SearchCriteria<DataCenterVnetVO> sc = DcSearchAllocated.create(); sc.setParameters("physicalNetworkId", physicalNetworkId); return listBy(sc); }
@Override public int countVnetsDedicatedToAccount(long dcId, long accountId) { SearchCriteria<Integer> sc = countVnetsDedicatedToAccount.create(); sc.setParameters("dc", dcId); sc.setParameters("accountId", accountId); return customSearch(sc, null).get(0); }
@Override public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { boolean result = super.configure(name, params); countVnetsDedicatedToAccount = createSearchBuilder(Integer.class); countVnetsDedicatedToAccount.and("dc", countVnetsDedicatedToAccount.entity().getDataCenterId(), SearchCriteria.Op.EQ); countVnetsDedicatedToAccount.and("accountGuestVlanMapId", countVnetsDedicatedToAccount.entity().getAccountGuestVlanMapId(), Op.NNULL); AccountGuestVlanMapSearch = _accountGuestVlanMapDao.createSearchBuilder(); AccountGuestVlanMapSearch.and("accountId", AccountGuestVlanMapSearch.entity().getAccountId(), SearchCriteria.Op.EQ); countVnetsDedicatedToAccount.join("AccountGuestVlanMapSearch", AccountGuestVlanMapSearch, countVnetsDedicatedToAccount.entity().getAccountGuestVlanMapId(), AccountGuestVlanMapSearch.entity().getId(), JoinBuilder.JoinType.INNER); countVnetsDedicatedToAccount.select(null, Func.COUNT, countVnetsDedicatedToAccount.entity().getId()); countVnetsDedicatedToAccount.done(); AccountGuestVlanMapSearch.done(); return result; }
@Override public List<DataCenterVnetVO> listAllocatedVnetsInRange(long dcId, long physicalNetworkId, Integer start, Integer end) { SearchCriteria<DataCenterVnetVO> sc = DcSearchAllocatedInRange.create(); sc.setParameters("dc", dcId); sc.setParameters("physicalNetworkId", physicalNetworkId); sc.setParameters("vnetRange", start.toString(), end.toString()); return listBy(sc); }
@Override public int countVnetsAllocatedToAccount(long dcId, long accountId) { SearchCriteria<Integer> sc = countVnetsAllocatedToAccount.create(); sc.setParameters("dc", dcId); sc.setParameters("accountId", accountId); return customSearch(sc, null).get(0); }
@Override public List<DataCenterVnetVO> findVnet(long dcId, String vnet) { return findOverlappingVnets(dcId, null, vnet); }
private List<DataCenterVnetVO> findOverlappingVnets(final long dcId, final Long physicalNetworkId, final String vnet) { final List<Integer> searchVnets = UriUtils.expandVlanUri(vnet); final List<DataCenterVnetVO> overlappingVnets = new ArrayList<>(); if (searchVnets == null || searchVnets.isEmpty()) { return overlappingVnets; } SearchCriteria<DataCenterVnetVO> sc = VnetDcSearch.create(); sc.setParameters("dc", dcId); if (physicalNetworkId != null) { sc.setParameters("physicalNetworkId", physicalNetworkId); } for (final DataCenterVnetVO dcVNet : listBy(sc)) { if (dcVNet == null || dcVNet.getVnet() == null) { continue; } final Integer vnetValue = NumbersUtil.parseInt(dcVNet.getVnet(), -1); if (vnetValue != -1 && searchVnets.contains(vnetValue)) { overlappingVnets.add(dcVNet); } } return overlappingVnets; }
@Override public List<String> listVnetsByPhysicalNetworkAndDataCenter(long dcId, long physicalNetworkId) { SearchCriteria<String> sc = ListAllVnetSearch.create(); sc.setParameters("dc", dcId); sc.setParameters("physicalNetworkId", physicalNetworkId); return customSearch(sc, null); }