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