@Override public void decRefCount() { if (dataStore == null) { return; } if (dataStore.getRole() == DataStoreRole.Image || dataStore.getRole() == DataStoreRole.ImageCache) { VolumeDataStoreVO store = volumeStoreDao.findByStoreVolume(dataStore.getId(), getId()); store.decrRefCnt(); store.setLastUpdated(new Date()); volumeStoreDao.update(store.getId(), store); } }
private boolean canVolumeBeRemoved(long volumeId) { VolumeVO vol = volDao.findById(volumeId); if (vol == null) { // already removed from volumes table return false; } VolumeDataStoreVO volumeStore = _volumeStoreDao.findByVolume(volumeId); if ((vol.getState() == State.Expunged || (vol.getPodId() == null && vol.getState() == State.Destroy)) && volumeStore == null) { // volume is expunged from primary, as well as on secondary return true; } else { return false; } }
List<VolumeDataStoreVO> destroyedStoreVOs = _volumeStoreDao.listDestroyed(store.getId()); s_logger.debug("Secondary storage garbage collector found " + destroyedStoreVOs.size() + " volumes to cleanup on volume_store_ref for store: " + store.getName()); for (VolumeDataStoreVO destroyedStoreVO : destroyedStoreVOs) { s_logger.debug("Deleting volume store DB entry: " + destroyedStoreVO); _volumeStoreDao.remove(destroyedStoreVO.getId());
ImageFormat format = ImageFormat.valueOf(payload.getFormat()); volumeHost = _volumeStoreDao.findByStoreVolume(store.getId(), volume.getId()); if (volumeHost == null) { volumeHost = new VolumeDataStoreVO(store.getId(), volume.getId(), new Date(), 0, Status.NOT_DOWNLOADED, null, null, "jobid0000", null, url, checkSum); _volumeStoreDao.persist(volumeHost); } else if ((volumeHost.getJobId() != null) && (volumeHost.getJobId().length() > 2)) { downloadJobExists = true; _volumeStoreDao.update(volumeHost.getId(), volumeHost);
List<VolumeDataStoreVO> dbVolumes = _volumeStoreDao.listByStoreId(storeId); List<VolumeDataStoreVO> toBeDownloaded = new ArrayList<VolumeDataStoreVO>(dbVolumes); for (VolumeDataStoreVO volumeStore : dbVolumes) { + ", but the volume is not found in volumes table, potentially some bugs in deleteVolume, so we just treat this volume to be deleted and mark it as destroyed"); volumeStore.setDestroyed(true); _volumeStoreDao.update(volumeStore.getId(), volumeStore); continue; if (volume.getState() == State.NotUploaded || volume.getState() == State.UploadInProgress) { s_logger.info("Volume Sync found " + volume.getUuid() + " uploaded using SSVM on image store " + storeId + " as corrupted, marking it as failed"); _volumeStoreDao.update(volumeStore.getId(), volumeStore); } else { s_logger.info("Removing volume_store_ref entry for corrupted volume " + volume.getName()); _volumeStoreDao.remove(volumeStore.getId()); toBeDownloaded.add(volumeStore); volumeStore.setPhysicalSize(volInfo.getPhysicalSize()); volumeStore.setLastUpdated(new Date()); _volumeStoreDao.update(volumeStore.getId(), volumeStore); String msg = "Volume " + volume.getUuid() + " is corrupted on image store"; volumeStore.setErrorString(msg); _volumeStoreDao.update(volumeStore.getId(), volumeStore); _volumeStoreDao.remove(volumeHost.getId());
VolumeDataStoreVO destVolumeStore = volumeDataStoreDao.findByStoreVolume(dataStore.getId(), objId); if (destVolumeStore != null) { return volumeDataStoreDao.remove(destVolumeStore.getId()); } else { s_logger.warn("Volume " + objId + " is not found on image store " + dataStore.getId() + ", so no need to delete");
DataStore store = obj.getDataStore(); VolumeDataStoreVO volStoreVO = _volumeStoreDao.findByStoreVolume(store.getId(), obj.getId()); if (volStoreVO != null) { if (volStoreVO.getDownloadState() == VMTemplateStorageResourceAssoc.Status.DOWNLOADED) { VolumeDataStoreVO updateBuilder = _volumeStoreDao.createForUpdate(); updateBuilder.setDownloadPercent(answer.getDownloadPct()); updateBuilder.setDownloadState(answer.getDownloadStatus()); updateBuilder.setSize(answer.getTemplateSize()); updateBuilder.setPhysicalSize(answer.getTemplatePhySicalSize()); _volumeStoreDao.update(volStoreVO.getId(), updateBuilder);
@Override public List<VolumeInfo> listVolumeOnCache(long volumeId) { List<VolumeInfo> cacheVols = new ArrayList<VolumeInfo>(); // find all image cache stores for this zone scope List<DataStore> cacheStores = storeMgr.listImageCacheStores(); if (cacheStores == null || cacheStores.size() == 0) { return cacheVols; } for (DataStore store : cacheStores) { // check if the volume is stored there VolumeDataStoreVO volStore = volumeStoreDao.findByStoreVolume(store.getId(), volumeId); if (volStore != null) { VolumeInfo vol = getVolume(volumeId, store); cacheVols.add(vol); } } return cacheVols; }
VolumeDataStoreVO volumeStoreRef = _volumeStoreDao.findByVolume(volumeId); volumeStoreRef.setZoneId(zoneId); _volumeStoreDao.update(volumeStoreRef.getId(), volumeStoreRef);
VolumeDataStoreVO volumeStore = _volumeStoreDao.findByVolume(vol.getId()); assert (volumeStore != null) : "sincle volume is registered, volumestore cannot be null at this stage"; volumeStore.setExtractUrl(url); _volumeStoreDao.persist(volumeStore);
@Override public void doInTransactionWithoutResult(TransactionStatus status) { VolumeVO tmpVolume = _volumeDao.findById(volume.getId()); VolumeDataStoreVO tmpVolumeDataStore = _volumeDataStoreDao.findById(volumeDataStore.getId()); boolean sendAlert = false; String msg = null; _volumeDataStoreDao.update(tmpVolumeDataStore.getId(), tmpVolumeDataStore); } catch (NoTransitionException e) { s_logger.error("Unexpected error " + e.getMessage());
throw new InvalidParameterValueException("Cannot delete image store with active snapshots backup!"); List<VolumeDataStoreVO> volumes = _volumeStoreDao.listByStoreId(storeId); if (volumes != null && volumes.size() > 0) { throw new InvalidParameterValueException("Cannot delete image store with active volumes backup!");
vs.setInstallPath(TemplateConstants.DEFAULT_VOLUME_ROOT_DIR + "/" + volumeDao.findById(obj.getId()).getAccountId() + "/" + obj.getId()); vs.setState(ObjectInDataStoreStateMachine.State.Allocated); vs = volumeDataStoreDao.persist(vs); break;
@Override public void doInTransactionWithoutResult(TransactionStatus status) { // first delete from image_store_details table, we need to do that since // we are not actually deleting record from main // image_data_store table, so delete cascade will not work _imageStoreDetailsDao.deleteDetails(storeId); _snapshotStoreDao.deletePrimaryRecordsForStore(storeId, DataStoreRole.ImageCache); _volumeStoreDao.deletePrimaryRecordsForStore(storeId); _templateStoreDao.deletePrimaryRecordsForStore(storeId); _imageStoreDao.remove(storeId); } });
private void duplicateCacheStoreRecordsToRegionStore(long storeId) { _templateStoreDao.duplicateCacheRecordsOnRegionStore(storeId); _snapshotStoreDao.duplicateCacheRecordsOnRegionStore(storeId); _volumeStoreDao.duplicateCacheRecordsOnRegionStore(storeId); }
VolumeDataStoreVO destVolumeStore = volumeDataStoreDao.findByStoreVolume(dataStore.getId(), objId); if (destVolumeStore != null && destVolumeStore.getState() != ObjectInDataStoreStateMachine.State.Ready) { return volumeDataStoreDao.remove(destVolumeStore.getId()); } else { s_logger.warn("Volume " + objId + " is not found on image store " + dataStore.getId() + ", so no need to delete");
@Override public Long getRefCount() { if (dataStore == null) { return null; } if (dataStore.getRole() == DataStoreRole.Image || dataStore.getRole() == DataStoreRole.ImageCache) { VolumeDataStoreVO store = volumeStoreDao.findByStoreVolume(dataStore.getId(), getId()); return store.getRefCnt(); } return null; }
@Override public void doInTransactionWithoutResult(TransactionStatus status) { // first delete from image_store_details table, we need to do that since // we are not actually deleting record from main // image_data_store table, so delete cascade will not work _imageStoreDetailsDao.deleteDetails(storeId); _snapshotStoreDao.deletePrimaryRecordsForStore(storeId, DataStoreRole.Image); _volumeStoreDao.deletePrimaryRecordsForStore(storeId); _templateStoreDao.deletePrimaryRecordsForStore(storeId); _imageStoreDao.remove(storeId); } });
@Override public void incRefCount() { if (dataStore == null) { return; } if (dataStore.getRole() == DataStoreRole.Image || dataStore.getRole() == DataStoreRole.ImageCache) { VolumeDataStoreVO store = volumeStoreDao.findByStoreVolume(dataStore.getId(), getId()); store.incrRefCnt(); store.setLastUpdated(new Date()); volumeStoreDao.update(store.getId(), store); } }
@Override public DataStore findStore(long objId, DataObjectType type, DataStoreRole role) { DataStore store = null; if (role == DataStoreRole.Image) { DataObjectInStore vo = null; switch (type) { case TEMPLATE: vo = templateDataStoreDao.findByTemplate(objId, role); break; case SNAPSHOT: vo = snapshotDataStoreDao.findBySnapshot(objId, role); break; case VOLUME: vo = volumeDataStoreDao.findByVolume(objId); break; } if (vo != null) { store = this.storeMgr.getDataStore(vo.getDataStoreId(), role); } } return store; }