From cc7d786086ab5b24d8b5dbd6ce504f946d51758d Mon Sep 17 00:00:00 2001 From: Suresh Kumar Anaparti Date: Mon, 26 Aug 2024 11:47:38 +0530 Subject: [PATCH] Updated listStoragePools response - added new managed parameter --- .../api/response/StoragePoolResponse.java | 12 ++++++++++++ .../cloud/api/query/dao/StoragePoolJoinDaoImpl.java | 13 +++++++++++++ 2 files changed, 25 insertions(+) diff --git a/api/src/main/java/org/apache/cloudstack/api/response/StoragePoolResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/StoragePoolResponse.java index bd468a9201f8..06d5103d7319 100644 --- a/api/src/main/java/org/apache/cloudstack/api/response/StoragePoolResponse.java +++ b/api/src/main/java/org/apache/cloudstack/api/response/StoragePoolResponse.java @@ -141,6 +141,10 @@ public class StoragePoolResponse extends BaseResponseWithAnnotations { @Param(description = "the storage pool capabilities") private Map caps; + @SerializedName(ApiConstants.MANAGED) + @Param(description = "whether this pool is managed or not") + private Boolean managed; + public Map getCaps() { return caps; } @@ -383,4 +387,12 @@ public Boolean getTagARule() { public void setTagARule(Boolean tagARule) { isTagARule = tagARule; } + + public Boolean getManaged() { + return managed; + } + + public void setManaged(Boolean managed) { + this.managed = managed; + } } diff --git a/server/src/main/java/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java index 8c828ba20674..186e121b62c4 100644 --- a/server/src/main/java/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java @@ -171,6 +171,7 @@ public StoragePoolResponse newStoragePoolResponse(StoragePoolJoinVO pool, boolea poolResponse.setTags(pool.getTag()); poolResponse.setIsTagARule(pool.getIsTagARule()); poolResponse.setOverProvisionFactor(Double.toString(CapacityManager.StorageOverprovisioningFactor.valueIn(pool.getId()))); + poolResponse.setManaged(storagePool.isManaged()); // set async job if (pool.getJobId() != null) { @@ -203,6 +204,7 @@ public StoragePoolResponse setStoragePoolResponse(StoragePoolResponse response, @Override public StoragePoolResponse newStoragePoolForMigrationResponse(StoragePoolJoinVO pool) { + StoragePool storagePool = storagePoolDao.findById(pool.getId()); StoragePoolResponse poolResponse = new StoragePoolResponse(); poolResponse.setId(pool.getUuid()); poolResponse.setName(pool.getName()); @@ -229,6 +231,17 @@ public StoragePoolResponse newStoragePoolForMigrationResponse(StoragePoolJoinVO poolResponse.setDiskSizeTotal(pool.getCapacityBytes()); poolResponse.setDiskSizeAllocated(allocatedSize); poolResponse.setCapacityIops(pool.getCapacityIops()); + + if (storagePool != null) { + poolResponse.setManaged(storagePool.isManaged()); + if (storagePool.isManaged()) { + DataStore store = dataStoreMgr.getDataStore(pool.getId(), DataStoreRole.Primary); + PrimaryDataStoreDriver driver = (PrimaryDataStoreDriver) store.getDriver(); + long usedIops = driver.getUsedIops(storagePool); + poolResponse.setAllocatedIops(usedIops); + } + } + poolResponse.setOverProvisionFactor(Double.toString(CapacityManager.StorageOverprovisioningFactor.valueIn(pool.getId()))); // TODO: StatsCollector does not persist data