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()); } } }
@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; }
@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; }