@Override public String getObjectId() { return this.getId(); }
@Override public List<StoragePoolMetricsResponse> listStoragePoolMetrics(List<StoragePoolResponse> poolResponses) { final List<StoragePoolMetricsResponse> metricsResponses = new ArrayList<>(); for (final StoragePoolResponse poolResponse: poolResponses) { StoragePoolMetricsResponse metricsResponse = new StoragePoolMetricsResponse(); try { BeanUtils.copyProperties(metricsResponse, poolResponse); } catch (IllegalAccessException | InvocationTargetException e) { throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to generate storagepool metrics response"); } Long poolClusterId = null; final Cluster cluster = clusterDao.findByUuid(poolResponse.getClusterId()); if (cluster != null) { poolClusterId = cluster.getId(); } final Double storageThreshold = AlertManager.StorageCapacityThreshold.valueIn(poolClusterId); final Double storageDisableThreshold = CapacityManager.StorageCapacityDisableThreshold.valueIn(poolClusterId); metricsResponse.setDiskSizeUsedGB(poolResponse.getDiskSizeUsed()); metricsResponse.setDiskSizeTotalGB(poolResponse.getDiskSizeTotal(), poolResponse.getOverProvisionFactor()); metricsResponse.setDiskSizeAllocatedGB(poolResponse.getDiskSizeAllocated()); metricsResponse.setDiskSizeUnallocatedGB(poolResponse.getDiskSizeTotal(), poolResponse.getDiskSizeAllocated(), poolResponse.getOverProvisionFactor()); metricsResponse.setStorageUsedThreshold(poolResponse.getDiskSizeTotal(), poolResponse.getDiskSizeUsed(), poolResponse.getOverProvisionFactor(), storageThreshold); metricsResponse.setStorageUsedDisableThreshold(poolResponse.getDiskSizeTotal(), poolResponse.getDiskSizeUsed(), poolResponse.getOverProvisionFactor(), storageDisableThreshold); metricsResponse.setStorageAllocatedThreshold(poolResponse.getDiskSizeTotal(), poolResponse.getDiskSizeAllocated(), poolResponse.getOverProvisionFactor(), storageThreshold); metricsResponse.setStorageAllocatedDisableThreshold(poolResponse.getDiskSizeTotal(), poolResponse.getDiskSizeUsed(), poolResponse.getOverProvisionFactor(), storageDisableThreshold); metricsResponses.add(metricsResponse); } return metricsResponses; }
@Override public StoragePoolResponse newStoragePoolForMigrationResponse(StoragePoolJoinVO pool) { StoragePoolResponse poolResponse = new StoragePoolResponse(); poolResponse.setId(pool.getUuid()); poolResponse.setName(pool.getName()); poolResponse.setState(pool.getStatus()); String path = pool.getPath(); poolResponse.setPath(path); poolResponse.setIpAddress(pool.getHostAddress()); poolResponse.setZoneId(pool.getZoneUuid()); poolResponse.setZoneName(pool.getZoneName()); if (pool.getPoolType() != null) { poolResponse.setType(pool.getPoolType().toString()); poolResponse.setPodId(pool.getPodUuid()); poolResponse.setPodName(pool.getPodName()); poolResponse.setCreated(pool.getCreated()); poolResponse.setScope(pool.getScope().toString()); if (pool.getHypervisor() != null) { poolResponse.setHypervisor(pool.getHypervisor().toString()); poolResponse.setDiskSizeTotal(pool.getCapacityBytes()); poolResponse.setDiskSizeAllocated(allocatedSize); poolResponse.setCapacityIops(pool.getCapacityIops()); poolResponse.setOverProvisionFactor(Double.toString(CapacityManager.StorageOverprovisioningFactor.valueIn(pool.getId()))); if (stats != null) { Long used = stats.getByteUsed(); poolResponse.setDiskSizeUsed(used);
@Test public void sortPoolsBySuitability() { List<StoragePoolResponse> storagePoolsResponse = new ArrayList<>(); StoragePoolResponse storagePoolResponse1 = new StoragePoolResponse(); storagePoolResponse1.setSuitableForMigration(true); storagePoolResponse1.setId("1"); storagePoolResponse1.setName("1"); StoragePoolResponse storagePoolResponse2 = new StoragePoolResponse(); storagePoolResponse2.setSuitableForMigration(false); storagePoolResponse2.setId("2"); storagePoolResponse2.setName("2"); StoragePoolResponse storagePoolResponse3 = new StoragePoolResponse(); storagePoolResponse3.setSuitableForMigration(true); storagePoolResponse3.setId("3"); storagePoolResponse3.setName("3"); storagePoolsResponse.add(storagePoolResponse3); storagePoolsResponse.add(storagePoolResponse2); storagePoolsResponse.add(storagePoolResponse1); findStoragePoolsForMigrationCmd.sortPoolsBySuitabilityAndName(storagePoolsResponse); Assert.assertEquals("1", storagePoolsResponse.get(0).getId()); Assert.assertEquals("3", storagePoolsResponse.get(1).getId()); Assert.assertEquals("2", storagePoolsResponse.get(2).getId()); }
@Override public ListResponse<StoragePoolResponse> searchForStoragePools(ListStoragePoolsCmd cmd) { Pair<List<StoragePoolJoinVO>, Integer> result = searchForStoragePoolsInternal(cmd); ListResponse<StoragePoolResponse> response = new ListResponse<StoragePoolResponse>(); List<StoragePoolResponse> poolResponses = ViewResponseHelper.createStoragePoolResponse(result.first().toArray(new StoragePoolJoinVO[result.first().size()])); for (StoragePoolResponse poolResponse : poolResponses) { DataStore store = dataStoreManager.getPrimaryDataStore(poolResponse.getId()); if (store != null) { DataStoreDriver driver = store.getDriver(); if (driver != null && driver.getCapabilities() != null) { poolResponse.setCaps(driver.getCapabilities()); } } } response.setResponses(poolResponses, result.second()); return response; }
@Override public void execute() { Pair<List<? extends StoragePool>, List<? extends StoragePool>> pools = _mgr.listStoragePoolsForMigrationOfVolume(getId()); ListResponse<StoragePoolResponse> response = new ListResponse<StoragePoolResponse>(); List<StoragePoolResponse> poolResponses = new ArrayList<StoragePoolResponse>(); List<? extends StoragePool> allPools = pools.first(); List<? extends StoragePool> suitablePoolList = pools.second(); for (StoragePool pool : allPools) { StoragePoolResponse poolResponse = _responseGenerator.createStoragePoolForMigrationResponse(pool); Boolean suitableForMigration = false; for (StoragePool suitablePool : suitablePoolList) { if (StringUtils.equals(suitablePool.getUuid(), pool.getUuid())) { suitableForMigration = true; break; } } poolResponse.setSuitableForMigration(suitableForMigration); poolResponse.setObjectName("storagepool"); poolResponses.add(poolResponse); } sortPoolsBySuitabilityAndName(poolResponses); response.setResponses(poolResponses); response.setResponseName(getCommandName()); this.setResponseObject(response); }
@Override public StoragePoolResponse newStoragePoolResponse(StoragePoolJoinVO pool) { StoragePool storagePool = storagePoolDao.findById(pool.getId()); StoragePoolResponse poolResponse = new StoragePoolResponse(); poolResponse.setId(pool.getUuid()); poolResponse.setName(pool.getName()); poolResponse.setState(pool.getStatus()); String path = pool.getPath(); poolResponse.setPath(path); poolResponse.setIpAddress(pool.getHostAddress()); poolResponse.setZoneId(pool.getZoneUuid()); poolResponse.setZoneName(pool.getZoneName()); poolResponse.setType(pool.getPoolType().toString()); poolResponse.setPodId(pool.getPodUuid()); poolResponse.setPodName(pool.getPodName()); poolResponse.setCreated(pool.getCreated()); if (pool.getScope() != null) { poolResponse.setScope(pool.getScope().toString()); poolResponse.setHypervisor(pool.getHypervisor().toString()); poolResponse.setDiskSizeTotal(pool.getCapacityBytes()); poolResponse.setDiskSizeAllocated(allocatedSize); poolResponse.setCapacityIops(pool.getCapacityIops()); PrimaryDataStoreDriver driver = (PrimaryDataStoreDriver) store.getDriver(); long usedIops = driver.getUsedIops(storagePool); poolResponse.setAllocatedIops(usedIops);