@Override public String allocateVnet(long dataCenterId, long physicalNetworkId, long accountId, String reservationId, boolean canUseSystemGuestVlans) { ArrayList<Long> dedicatedVlanDbIds = new ArrayList<Long>(); boolean useDedicatedGuestVlans = false; List<AccountGuestVlanMapVO> maps = _accountGuestVlanMapDao.listAccountGuestVlanMapsByAccount(accountId); for (AccountGuestVlanMapVO map : maps) { dedicatedVlanDbIds.add(map.getId()); } if (dedicatedVlanDbIds != null && !dedicatedVlanDbIds.isEmpty()) { useDedicatedGuestVlans = true; DataCenterVnetVO vo = _vnetAllocDao.take(physicalNetworkId, accountId, reservationId, dedicatedVlanDbIds); if (vo != null) return vo.getVnet(); } if (!useDedicatedGuestVlans || (useDedicatedGuestVlans && canUseSystemGuestVlans)) { DataCenterVnetVO vo = _vnetAllocDao.take(physicalNetworkId, accountId, reservationId, null); if (vo != null) { return vo.getVnet(); } } return null; }
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; }
for (DataCenterVnetVO allocatedVlan : allocatedVlans) { if (allocatedVlan.getAccountId() != vlanOwner.getAccountId()) { throw new InvalidParameterValueException("Guest vlan from this range " + allocatedVlan.getVnet() + " is allocated to a different account." + " Can only dedicate a range which has no allocated vlans or has vlans allocated to the same account ");
DcSearchAllocatedInRange.and("physicalNetworkId", DcSearchAllocatedInRange.entity().getPhysicalNetworkId(), Op.EQ); DcSearchAllocatedInRange.and("allocated", DcSearchAllocatedInRange.entity().getTakenAt(), Op.NNULL); DcSearchAllocatedInRange.and("vnetRange", DcSearchAllocatedInRange.entity().getVnet(), Op.BETWEEN); DcSearchAllocatedInRange.done(); SearchRange.and("dc", SearchRange.entity().getDataCenterId(), Op.EQ); SearchRange.and("physicalNetworkId", SearchRange.entity().getPhysicalNetworkId(), Op.EQ); SearchRange.and("vnetRange", SearchRange.entity().getVnet(), Op.BETWEEN); VnetDcSearch.and("vnet", VnetDcSearch.entity().getVnet(), SearchCriteria.Op.EQ); VnetDcSearch.and("dc", VnetDcSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ); VnetDcSearch.and("physicalNetworkId", VnetDcSearch.entity().getPhysicalNetworkId(), SearchCriteria.Op.EQ); VnetDcSearchAllocated.and("vnet", VnetDcSearchAllocated.entity().getVnet(), SearchCriteria.Op.EQ); VnetDcSearchAllocated.and("dc", VnetDcSearchAllocated.entity().getDataCenterId(), SearchCriteria.Op.EQ); VnetDcSearchAllocated.and("physicalNetworkId", VnetDcSearchAllocated.entity().getPhysicalNetworkId(), SearchCriteria.Op.EQ); ListAllVnetSearch.select(null, Func.NATIVE, ListAllVnetSearch.entity().getVnet()); ListAllVnetSearch.and("dc", ListAllVnetSearch.entity().getDataCenterId(), Op.EQ); ListAllVnetSearch.and("physicalNetworkId", ListAllVnetSearch.entity().getPhysicalNetworkId(), Op.EQ);