private void performBasicDelete(SolidFireUtil.SolidFireConnection sfConnection, long volumeId) { Long sfVolumeId = getBasicSfVolumeId(volumeId); Preconditions.checkNotNull(sfVolumeId, "'sfVolumeId' should not be 'null'."); String iqn = getBasicIqn(volumeId); Preconditions.checkNotNull(iqn, "'iqn' should not be 'null'."); VolumeVO volumeVO = volumeDao.findById(volumeId); deleteSolidFireVolume(sfConnection, volumeId, Long.parseLong(volumeVO.getFolder())); volumeVO.setFolder(String.valueOf(sfVolumeId)); volumeVO.set_iScsiName(iqn); volumeDao.update(volumeId, volumeVO); volumeDetailsDao.removeDetail(volumeId, BASIC_SF_ID); volumeDetailsDao.removeDetail(volumeId, BASIC_IQN); volumeDetailsDao.removeDetail(volumeId, BASIC_DELETE); }
private void setCertainVolumeValuesNull(long volumeId) { VolumeVO volumeVO = _volumeDao.findById(volumeId); volumeVO.set_iScsiName(null); volumeVO.setMinIops(null); volumeVO.setMaxIops(null); volumeVO.setHypervisorSnapshotReserve(null); _volumeDao.update(volumeId, volumeVO); }
private void handleFailedVolumeMigration(VolumeInfo srcVolumeInfo, VolumeInfo destVolumeInfo, HostVO hostVO) { try { _volumeService.revokeAccess(destVolumeInfo, hostVO, destVolumeInfo.getDataStore()); } catch (Exception ex) { LOGGER.warn("Failed to revoke access to the volume with the following ID: " + destVolumeInfo.getId()); } try { VolumeDetailVO volumeDetailVO = new VolumeDetailVO(destVolumeInfo.getId(), PrimaryDataStoreDriver.BASIC_DELETE_BY_FOLDER, Boolean.TRUE.toString(), false); volumeDetailsDao.persist(volumeDetailVO); destVolumeInfo.getDataStore().getDriver().deleteAsync(destVolumeInfo.getDataStore(), destVolumeInfo, null); volumeDetailsDao.removeDetails(srcVolumeInfo.getId()); } catch (Exception ex) { LOGGER.warn(ex.getMessage()); } VolumeVO volumeVO = _volumeDao.findById(srcVolumeInfo.getId()); volumeVO.setPoolId(srcVolumeInfo.getPoolId()); volumeVO.setLastPoolId(srcVolumeInfo.getLastPoolId()); volumeVO.setFolder(srcVolumeInfo.getFolder()); volumeVO.set_iScsiName(srcVolumeInfo.get_iScsiName()); _volumeDao.update(srcVolumeInfo.getId(), volumeVO); }
volume.set_iScsiName(esvolume.getPath()); volume.setPoolType(StoragePoolType.NetworkFilesystem); } else { iqn = esvolume.getIqn(); String modifiediqn = "/" + iqn + "/0"; volume.set_iScsiName(modifiediqn); volume.setPoolType(StoragePoolType.IscsiLUN);
@Override public void createAsync(DataStore dataStore, DataObject dataObject, AsyncCompletionCallback<CreateCmdResult> callback) { String iqn = null; String errorMessage = null; if (dataObject.getType() != DataObjectType.VOLUME) { errorMessage = "Invalid DataObjectType (" + dataObject.getType() + ") passed to createAsync"; } else { VolumeInfo volumeInfo = (VolumeInfo) dataObject; long storagePoolId = dataStore.getId(); NexentaStorAppliance appliance = getNexentaStorAppliance(storagePoolId); // TODO: maybe we should use md5(volume name) as volume name NexentaStorZvol zvol = (NexentaStorZvol) appliance.createVolume(volumeInfo.getName(), volumeInfo.getSize()); iqn = zvol.getIqn(); VolumeVO volume = this._volumeDao.findById(volumeInfo.getId()); volume.set_iScsiName(iqn); volume.setFolder(zvol.getName()); volume.setPoolType(Storage.StoragePoolType.IscsiLUN); volume.setPoolId(storagePoolId); _volumeDao.update(volume.getId(), volume); StoragePoolVO storagePool = _storagePoolDao.findById(storagePoolId); long capacityBytes = storagePool.getCapacityBytes(); long usedBytes = storagePool.getUsedBytes(); usedBytes += volumeInfo.getSize(); storagePool.setUsedBytes(usedBytes > capacityBytes ? capacityBytes : usedBytes); _storagePoolDao.update(storagePoolId, storagePool); } CreateCmdResult result = new CreateCmdResult(iqn, new Answer(null, errorMessage == null, errorMessage)); result.setResult(errorMessage); callback.complete(result); }
volume.set_iScsiName(iqn); volume.setFolder(String.valueOf(sfVolume.getId())); volume.setPoolType(StoragePoolType.IscsiLUN);