@Override public void createCapacityEntry(long poolId) { StoragePoolVO storage = _storagePoolDao.findById(poolId); createCapacityEntry(storage, Capacity.CAPACITY_TYPE_STORAGE_ALLOCATED, 0); }
@Override public String getPrimaryStorageNameLabel(VolumeVO volume) { Long poolId = volume.getPoolId(); // poolId is null only if volume is destroyed, which has been checked // before. assert poolId != null; StoragePoolVO PrimaryDataStoreVO = _storagePoolDao.findById(poolId); assert PrimaryDataStoreVO != null; return PrimaryDataStoreVO.getUuid(); }
private void verifySufficientBytesForStoragePool(DataObject dataObject, long storagePoolId) { StoragePoolVO storagePool = storagePoolDao.findById(storagePoolId); long requestedBytes = getDataObjectSizeIncludingHypervisorSnapshotReserve(dataObject, storagePool); verifySufficientBytesForStoragePool(requestedBytes, storagePoolId); }
@Override public boolean volumeOnSharedStoragePool(Volume volume) { Long poolId = volume.getPoolId(); if (poolId == null) { return false; } else { StoragePoolVO pool = _storagePoolDao.findById(poolId); if (pool == null) { return false; } else { return (pool.getScope() == ScopeType.HOST) ? false : true; } } }
private void verifyNoSnapshotsOnManagedStorageVolumes(Map<VolumeInfo, DataStore> volumeToPool) { for (Map.Entry<VolumeInfo, DataStore> entry : volumeToPool.entrySet()) { VolumeInfo volumeInfo = entry.getKey(); StoragePool storagePool = storagePoolDao.findById(volumeInfo.getPoolId()); if (storagePool.isManaged()) { List<SnapshotVO> snapshots = getNonDestroyedSnapshots(volumeInfo.getId()); if (snapshots != null && snapshots.size() > 0) { throw new CloudRuntimeException("Cannot perform this action on a volume with one or more snapshots"); } } } }
private void verifySufficientBytesForStoragePool(long requestedBytes, long storagePoolId) { StoragePoolVO storagePool = storagePoolDao.findById(storagePoolId); long capacityBytes = storagePool.getCapacityBytes(); long usedBytes = getUsedBytes(storagePool); usedBytes += requestedBytes; if (usedBytes > capacityBytes) { throw new CloudRuntimeException("Insufficient amount of space remains in this primary storage"); } }
private void verifySufficientIopsForStoragePool(long requestedIops, long storagePoolId) { StoragePoolVO storagePool = storagePoolDao.findById(storagePoolId); long usedIops = getUsedIops(storagePool); long capacityIops = storagePool.getCapacityIops(); if (usedIops + requestedIops > capacityIops) { throw new CloudRuntimeException("Insufficient number of IOPS available in this storage pool"); } }
public boolean cancelMaintain(DataStore store) { StoragePoolVO pool = this.dataStoreDao.findById(store.getId()); pool.setStatus(StoragePoolStatus.Up); dataStoreDao.update(store.getId(), pool); return true; }
public boolean enable(DataStore store) { StoragePoolVO pool = this.dataStoreDao.findById(store.getId()); pool.setStatus(StoragePoolStatus.Up); dataStoreDao.update(pool.getId(), pool); return true; }
public boolean maintain(DataStore store) { StoragePoolVO pool = this.dataStoreDao.findById(store.getId()); pool.setStatus(StoragePoolStatus.Maintenance); this.dataStoreDao.update(pool.getId(), pool); return true; }
private void updateSnapshotPayload(long storagePoolId, CreateSnapshotPayload payload) { StoragePoolVO storagePoolVO = _storagePoolDao.findById(storagePoolId); if (storagePoolVO.isManaged()) { Snapshot.LocationType locationType = payload.getLocationType(); if (locationType == null) { payload.setLocationType(Snapshot.LocationType.PRIMARY); } } else { payload.setLocationType(null); } }
public boolean disable(DataStore store) { StoragePoolVO pool = this.dataStoreDao.findById(store.getId()); pool.setStatus(StoragePoolStatus.Disabled); this.dataStoreDao.update(pool.getId(), pool); return true; }
private boolean isVolumeOnManagedStorage(VolumeInfo volumeInfo) { DataStore dataStore = volumeInfo.getDataStore(); if (dataStore.getRole() == DataStoreRole.Primary) { long storagePooldId = dataStore.getId(); StoragePoolVO storagePoolVO = _storagePoolDao.findById(storagePooldId); return storagePoolVO.isManaged(); } return false; }
@Override public boolean canVmRestartOnAnotherServer(long vmId) { List<VolumeVO> vols = _volsDao.findCreatedByInstance(vmId); for (VolumeVO vol : vols) { StoragePoolVO storagePoolVO = _storagePoolDao.findById(vol.getPoolId()); if (!vol.isRecreatable() && storagePoolVO != null && storagePoolVO.getPoolType() != null && !(storagePoolVO.getPoolType().isShared())) { return false; } } return true; }
public DataStore attachZone(DataStore store) { StoragePoolVO pool = this.dataStoreDao.findById(store.getId()); pool.setScope(ScopeType.ZONE); pool.setStatus(StoragePoolStatus.Up); this.dataStoreDao.update(pool.getId(), pool); return dataStoreMgr.getDataStore(store.getId(), DataStoreRole.Primary); }
@Override public boolean canCopy(DataObject srcData, DataObject destData) { //BUG fix for CLOUDSTACK-4618 DataStore store = destData.getDataStore(); if (store.getRole() == DataStoreRole.Primary && srcData.getType() == DataObjectType.TEMPLATE && (destData.getType() == DataObjectType.TEMPLATE || destData.getType() == DataObjectType.VOLUME)) { StoragePoolVO storagePoolVO = primaryStoreDao.findById(store.getId()); if (storagePoolVO != null && storagePoolVO.getPoolType() == Storage.StoragePoolType.CLVM) { return true; } } return false; }
public DataStore attachZone(DataStore store, HypervisorType hypervisor) { StoragePoolVO pool = this.dataStoreDao.findById(store.getId()); pool.setScope(ScopeType.ZONE); pool.setHypervisor(hypervisor); pool.setStatus(StoragePoolStatus.Up); this.dataStoreDao.update(pool.getId(), pool); return dataStoreMgr.getDataStore(store.getId(), DataStoreRole.Primary); }
public DataStore attachCluster(DataStore store) { StoragePoolVO pool = this.dataStoreDao.findById(store.getId()); storageMgr.createCapacityEntry(pool.getId()); pool.setScope(ScopeType.CLUSTER); pool.setStatus(StoragePoolStatus.Up); this.dataStoreDao.update(pool.getId(), pool); return dataStoreMgr.getDataStore(store.getId(), DataStoreRole.Primary); }
@ReflectionUse private Pair<JobInfo.Status, String> orchestrateMigrateVolume(VmWorkMigrateVolume work) throws Exception { VolumeVO volume = _volsDao.findById(work.getVolumeId()); StoragePoolVO targetStoragePool = _storagePoolDao.findById(work.getDestPoolId()); DiskOfferingVO newDiskOffering = _diskOfferingDao.findById(work.getNewDiskOfferingId()); Volume newVol = orchestrateMigrateVolume(volume, targetStoragePool, work.isLiveMigrate(), newDiskOffering); return new Pair<JobInfo.Status, String>(JobInfo.Status.SUCCEEDED, _jobMgr.marshallResultObject(newVol.getId())); }
public DataStore attachHost(DataStore store, HostScope scope, StoragePoolInfo existingInfo) { StoragePoolHostVO poolHost = storagePoolHostDao.findByPoolHost(store.getId(), scope.getScopeId()); if (poolHost == null) { poolHost = new StoragePoolHostVO(store.getId(), scope.getScopeId(), existingInfo.getLocalPath()); storagePoolHostDao.persist(poolHost); } StoragePoolVO pool = this.dataStoreDao.findById(store.getId()); pool.setScope(scope.getScopeType()); pool.setUsedBytes(existingInfo.getCapacityBytes() - existingInfo.getAvailableBytes()); pool.setCapacityBytes(existingInfo.getCapacityBytes()); pool.setStatus(StoragePoolStatus.Up); this.dataStoreDao.update(pool.getId(), pool); this.storageMgr.createCapacityEntry(pool, Capacity.CAPACITY_TYPE_LOCAL_STORAGE, pool.getUsedBytes()); return dataStoreMgr.getDataStore(pool.getId(), DataStoreRole.Primary); }