@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; }
@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 DataObjectInStore findObject(long objId, DataObjectType type, long dataStoreId, DataStoreRole role) { DataObjectInStore vo = null; if (role == DataStoreRole.Image || role == DataStoreRole.ImageCache) { switch (type) { case TEMPLATE: vo = templateDataStoreDao.findByStoreTemplate(dataStoreId, objId); break; case SNAPSHOT: vo = snapshotDataStoreDao.findByStoreSnapshot(role, dataStoreId, objId); break; case VOLUME: vo = volumeDataStoreDao.findByStoreVolume(dataStoreId, objId); break; } } else if (type == DataObjectType.TEMPLATE && role == DataStoreRole.Primary) { vo = templatePoolDao.findByPoolTemplate(dataStoreId, objId); } else if (type == DataObjectType.SNAPSHOT && role == DataStoreRole.Primary) { vo = snapshotDataStoreDao.findByStoreSnapshot(role, dataStoreId, objId); } else { s_logger.debug("Invalid data or store type: " + type + " " + role); throw new CloudRuntimeException("Invalid data or store type: " + type + " " + role); } return vo; }
@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); } }
@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); } }
VolumeDataStoreVO destVolumeStore = volumeDataStoreDao.findByStoreVolume(dataStore.getId(), objId); if (destVolumeStore != null) { return volumeDataStoreDao.remove(destVolumeStore.getId());
VolumeDataStoreVO destVolumeStore = volumeDataStoreDao.findByStoreVolume(dataStore.getId(), objId); if (destVolumeStore != null && destVolumeStore.getState() != ObjectInDataStoreStateMachine.State.Ready) { return volumeDataStoreDao.remove(destVolumeStore.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);
VolumeDataStoreVO volStore = _volumeStoreDao.findByStoreVolume(ds.getId(), vo.getId()); if (volStore != null) { physicalSize = volStore.getPhysicalSize();
@Override public AsyncCallFuture<VolumeApiResult> createVolumeAsync(VolumeInfo volume, DataStore dataStore) { AsyncCallFuture<VolumeApiResult> future = new AsyncCallFuture<VolumeApiResult>(); DataObject volumeOnStore = dataStore.create(volume); volumeOnStore.processEvent(Event.CreateOnlyRequested); try { CreateVolumeContext<VolumeApiResult> context = new CreateVolumeContext<VolumeApiResult>(null, volumeOnStore, future); AsyncCallbackDispatcher<VolumeServiceImpl, CreateCmdResult> caller = AsyncCallbackDispatcher.create(this); caller.setCallback(caller.getTarget().createVolumeCallback(null, null)).setContext(context); dataStore.getDriver().createAsync(dataStore, volumeOnStore, caller); } catch (CloudRuntimeException ex) { // clean up already persisted volume_store_ref entry in case of createVolumeCallback is never called VolumeDataStoreVO volStoreVO = _volumeStoreDao.findByStoreVolume(dataStore.getId(), volume.getId()); if (volStoreVO != null) { VolumeInfo volObj = volFactory.getVolume(volume, dataStore); volObj.processEvent(ObjectInDataStoreStateMachine.Event.OperationFailed); } VolumeApiResult volResult = new VolumeApiResult((VolumeObject)volumeOnStore); volResult.setResult(ex.getMessage()); future.complete(volResult); } return future; }
@Override public AsyncCallFuture<VolumeApiResult> registerVolume(VolumeInfo volume, DataStore store) { AsyncCallFuture<VolumeApiResult> future = new AsyncCallFuture<VolumeApiResult>(); DataObject volumeOnStore = store.create(volume); volumeOnStore.processEvent(Event.CreateOnlyRequested); try { CreateVolumeContext<VolumeApiResult> context = new CreateVolumeContext<VolumeApiResult>(null, volumeOnStore, future); AsyncCallbackDispatcher<VolumeServiceImpl, CreateCmdResult> caller = AsyncCallbackDispatcher.create(this); caller.setCallback(caller.getTarget().registerVolumeCallback(null, null)); caller.setContext(context); store.getDriver().createAsync(store, volumeOnStore, caller); } catch (CloudRuntimeException ex) { // clean up already persisted volume_store_ref entry in case of createVolumeCallback is never called VolumeDataStoreVO volStoreVO = _volumeStoreDao.findByStoreVolume(store.getId(), volume.getId()); if (volStoreVO != null) { VolumeInfo volObj = volFactory.getVolume(volume, store); volObj.processEvent(ObjectInDataStoreStateMachine.Event.OperationFailed); } VolumeApiResult res = new VolumeApiResult((VolumeObject)volumeOnStore); res.setResult(ex.getMessage()); future.complete(res); } return future; }
DataStore store = obj.getDataStore(); VolumeDataStoreVO volStoreVO = _volumeStoreDao.findByStoreVolume(store.getId(), obj.getId()); if (volStoreVO != null) { if (volStoreVO.getDownloadState() == VMTemplateStorageResourceAssoc.Status.DOWNLOADED) {
VolumeDataStoreVO volStore = volumeStoreDao.findByStoreVolume(dataStore.getId(), getId()); volStore.setInstallPath(dwdAnswer.getInstallPath()); volStore.setChecksum(dwdAnswer.getCheckSum()); } else if (answer instanceof CopyCmdAnswer) { CopyCmdAnswer cpyAnswer = (CopyCmdAnswer)answer; VolumeDataStoreVO volStore = volumeStoreDao.findByStoreVolume(dataStore.getId(), getId()); VolumeObjectTO newVol = (VolumeObjectTO)cpyAnswer.getNewData(); volStore.setInstallPath(newVol.getPath());
VolumeDataStoreVO volStore = volumeStoreDao.findByStoreVolume(dataStore.getId(), getId()); volStore.setInstallPath(dwdAnswer.getInstallPath()); volStore.setChecksum(dwdAnswer.getCheckSum()); } else if (answer instanceof CopyCmdAnswer) { CopyCmdAnswer cpyAnswer = (CopyCmdAnswer)answer; VolumeDataStoreVO volStore = volumeStoreDao.findByStoreVolume(dataStore.getId(), getId()); VolumeObjectTO newVol = (VolumeObjectTO)cpyAnswer.getNewData(); volStore.setInstallPath(newVol.getPath());