@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 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; }
@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); } }
public DataCenterVnetDaoImpl() { super(); DcSearchAllocated = createSearchBuilder(); DcSearchAllocated.and("dc", DcSearchAllocated.entity().getDataCenterId(), SearchCriteria.Op.EQ); DcSearchAllocated.and("physicalNetworkId", DcSearchAllocated.entity().getPhysicalNetworkId(), SearchCriteria.Op.EQ); DcSearchAllocated.and("allocated", DcSearchAllocated.entity().getTakenAt(), SearchCriteria.Op.NNULL); DcSearchAllocated.done(); DcSearchAllocatedInRange.and("dc", DcSearchAllocatedInRange.entity().getDataCenterId(), Op.EQ); 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); FreeVnetSearch.and("dc", FreeVnetSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ); FreeVnetSearch.and("physicalNetworkId", FreeVnetSearch.entity().getPhysicalNetworkId(), SearchCriteria.Op.EQ); FreeVnetSearch.and("taken", FreeVnetSearch.entity().getTakenAt(), SearchCriteria.Op.NULL); FreeVnetSearch.and("accountGuestVlanMapId", FreeVnetSearch.entity().getAccountGuestVlanMapId(), SearchCriteria.Op.NULL); FreeVnetSearch.done(); FreeDedicatedVnetSearch.and("dc", FreeDedicatedVnetSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ); FreeDedicatedVnetSearch.and("physicalNetworkId", FreeDedicatedVnetSearch.entity().getPhysicalNetworkId(), SearchCriteria.Op.EQ); FreeDedicatedVnetSearch.and("taken", FreeDedicatedVnetSearch.entity().getTakenAt(), SearchCriteria.Op.NULL); FreeDedicatedVnetSearch.and("accountGuestVlanMapId", FreeDedicatedVnetSearch.entity().getAccountGuestVlanMapId(), SearchCriteria.Op.IN); FreeDedicatedVnetSearch.done();
if (allocatedVlans != null && !allocatedVlans.isEmpty()) { 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 "); for (int i = finaVlanTokens.get(0).intValue(); i <= finaVlanTokens.get(1).intValue(); i++) { List<DataCenterVnetVO> dataCenterVnet = _datacneterVnet.findVnet(physicalNetwork.getDataCenterId(), physicalNetworkId, Integer.toString(i)); dataCenterVnet.get(0).setAccountGuestVlanMapId(accountGuestVlanMapVO.getId()); _datacneterVnet.update(dataCenterVnet.get(0).getId(), dataCenterVnet.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; }
if (vnis != null && !vnis.isEmpty()) { for (DataCenterVnetVO vni : vnis) { if (vni.getPhysicalNetworkId() != network.getId()) { s_logger.debug("VNI " + vnet + " already exists on another network in zone, please specify a unique range"); throw new InvalidParameterValueException("VNI " + vnet + " already exists on another network in zone, please specify a unique range");
final DataCenterVnetVO dcVnet = dcVnets.get(0); if (dcVnet.getAccountGuestVlanMapId() != null) { final Long accountGuestVlanMapId = dcVnet.getAccountGuestVlanMapId(); final AccountGuestVlanMapVO map = _accountGuestVlanMapDao.findById(accountGuestVlanMapId); if (map.getAccountId() != owner.getAccountId()) {
@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; }
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; }