@Override public void doInTransactionWithoutResult(TransactionStatus status) { StorageNetworkIpRangeVO range = null; try { range = _sNwIpRangeDao.acquireInLockTable(rangeId); if (range == null) { throw new CloudRuntimeException("Cannot acquire lock on storage ip range " + rangeId); } StorageNetworkIpRangeVO vo = _sNwIpRangeDao.createForUpdate(); if (vlan != null) { vo.setVlan(vlan); } if (startIpFinal != null) { vo.setStartIp(startIpFinal); } if (endIpFinal != null) { vo.setEndIp(endIpFinal); } if (netmask != null) { vo.setNetmask(netmask); } _sNwIpRangeDao.update(rangeId, vo); } finally { if (range != null) { _sNwIpRangeDao.releaseFromLockTable(range.getId()); } } } });
@Override public List<StorageNetworkIpRange> listIpRange(ListStorageNetworkIpRangeCmd cmd) { Long rangeId = cmd.getRangeId(); Long podId = cmd.getPodId(); Long zoneId = cmd.getZoneId(); List result = null; if (rangeId != null) { result = _sNwIpRangeDao.listByRangeId(rangeId); } else if (podId != null) { result = _sNwIpRangeDao.listByPodId(podId); } else if (zoneId != null) { result = _sNwIpRangeDao.listByDataCenterId(zoneId); } else { result = _sNwIpRangeDao.listAll(); } return result; }
@Override public StorageNetworkIpRangeVO doInTransaction(TransactionStatus status) throws SQLException { StorageNetworkIpRangeVO range = new StorageNetworkIpRangeVO(zoneId, podId, nw.getId(), startIp, endIpFinal, vlan, netmask, cmd.getGateWay()); _sNwIpRangeDao.persist(range); try { createStorageIpEntires(TransactionLegacy.currentTxn(), range.getId(), startIp, endIpFinal, zoneId); } catch (SQLException e) { StringBuilder err = new StringBuilder(); err.append("Create storage network range failed."); err.append("startIp=" + startIp); err.append("endIp=" + endIpFinal); err.append("netmask=" + netmask); err.append("zoneId=" + zoneId); s_logger.debug(err.toString(), e); throw e; } return range; } });
@Override public void doInTransactionWithoutResult(TransactionStatus status) { StorageNetworkIpRangeVO range = null; try { range = _sNwIpRangeDao.acquireInLockTable(rangeId); if (range == null) { String msg = "Unable to acquire lock on storage network ip range id=" + rangeId + ", delete failed"; s_logger.warn(msg); throw new CloudRuntimeException(msg); } /* * entries in op_dc_storage_network_ip_address will be deleted automatically due to * fk_storage_ip_address__range_id constraint key */ _sNwIpRangeDao.remove(rangeId); } finally { if (range != null) { _sNwIpRangeDao.releaseFromLockTable(rangeId); } } } });
@Override public StorageNetworkIpAddressVO acquireIpAddress(long podId) { List<StorageNetworkIpRangeVO> ranges = _sNwIpRangeDao.listByPodId(podId); for (StorageNetworkIpRangeVO r : ranges) { try { Long rangeId = r.getId(); r = _sNwIpRangeDao.acquireInLockTable(rangeId); if (r == null) { String msg = "Unable to acquire lock on storage network ip range id=" + rangeId + ", delete failed"; s_logger.warn(msg); throw new CloudRuntimeException(msg); } StorageNetworkIpAddressVO ip = _sNwIpDao.takeIpAddress(r.getId()); if (ip != null) { return ip; } } finally { if (r != null) { _sNwIpRangeDao.releaseFromLockTable(r.getId()); } } } return null; }
public void deleteIpRange(DeleteStorageNetworkIpRangeCmd cmd) { final long rangeId = cmd.getId(); StorageNetworkIpRangeVO range = _sNwIpRangeDao.findById(rangeId); if (range == null) { throw new CloudRuntimeException("Can not find storage network ip range " + rangeId);
@Override public boolean isAnyStorageIpInUseInZone(long zoneId) { List<StorageNetworkIpRangeVO> ranges = _sNwIpRangeDao.listByDataCenterId(zoneId); for (StorageNetworkIpRangeVO r : ranges) { if (_sNwIpDao.countInUseIpByRangeId(r.getId()) > 0) { return true; } } return false; } }
private void checkOverlapStorageIpRange(long podId, String startIp, String endIp) { List<StorageNetworkIpRangeVO> curRanges = _sNwIpRangeDao.listByPodId(podId); for (StorageNetworkIpRangeVO range : curRanges) { if (NetUtils.ipRangesOverlap(startIp, endIp, range.getStartIp(), range.getEndIp())) { throw new InvalidParameterValueException("The Storage network Start IP and endIP address range overlap with private IP :" + range.getStartIp() + " - " + range.getEndIp()); } } }