From 48f8a95b06b0348ba1349cb5434183c2c18710db Mon Sep 17 00:00:00 2001 From: Saksham Srivastava Date: Tue, 11 Mar 2014 17:52:00 +0530 Subject: [PATCH] CLOUDSTACK-6092: Storage OverProvisioning as a Per Primary Basis Allow storage.overprovisioning.factor to be specified at storape pool level. Signed-off-by: Sateesh Chodapuneedi --- .../api/response/StoragePoolResponse.java | 8 ++ .../com/cloud/capacity/CapacityManager.java | 2 +- .../api/query/dao/StoragePoolJoinDaoImpl.java | 4 +- .../capacity/StorageCapacityListener.java | 2 +- .../com/cloud/storage/StorageManagerImpl.java | 25 ++-- setup/db/db/schema-430to440.sql | 3 + .../smoke/test_over_provisioning.py | 107 ++++++++++++++++++ 7 files changed, 141 insertions(+), 10 deletions(-) create mode 100644 test/integration/smoke/test_over_provisioning.py diff --git a/api/src/org/apache/cloudstack/api/response/StoragePoolResponse.java b/api/src/org/apache/cloudstack/api/response/StoragePoolResponse.java index 03a4f349ba0..98c90e2fd39 100644 --- a/api/src/org/apache/cloudstack/api/response/StoragePoolResponse.java +++ b/api/src/org/apache/cloudstack/api/response/StoragePoolResponse.java @@ -107,6 +107,10 @@ public class StoragePoolResponse extends BaseResponse { @Param(description = "the scope of the storage pool") private String scope; + @SerializedName("overprovisionfactor") + @Param(description = "the overprovisionfactor for the storage pool") + private String overprovisionfactor; + @SerializedName(ApiConstants.HYPERVISOR) @Param(description = "the hypervisor type of the storage pool") private String hypervisor; @@ -301,4 +305,8 @@ public class StoragePoolResponse extends BaseResponse { public void setSuitableForMigration(Boolean suitableForMigration) { this.suitableForMigration = suitableForMigration; } + + public void setOverProvisionFactor(String overProvisionFactor) { + this.overprovisionfactor = overProvisionFactor; + } } diff --git a/engine/components-api/src/com/cloud/capacity/CapacityManager.java b/engine/components-api/src/com/cloud/capacity/CapacityManager.java index bd1a61096c0..038a2c05f01 100755 --- a/engine/components-api/src/com/cloud/capacity/CapacityManager.java +++ b/engine/components-api/src/com/cloud/capacity/CapacityManager.java @@ -44,7 +44,7 @@ public interface CapacityManager { "Percentage (as a value between 0 and 1) of storage utilization above which allocators will disable using the pool for low storage available.", true, ConfigKey.Scope.Zone); static final ConfigKey StorageOverprovisioningFactor = new ConfigKey("Storage", Double.class, StorageOverprovisioningFactorCK, "2", - "Used for storage overprovisioning calculation; available storage will be (actualStorageSize * storage.overprovisioning.factor)", true, ConfigKey.Scope.Zone); + "Used for storage overprovisioning calculation; available storage will be (actualStorageSize * storage.overprovisioning.factor)", true, ConfigKey.Scope.StoragePool); static final ConfigKey StorageAllocatedCapacityDisableThreshold = new ConfigKey( "Alert", diff --git a/server/src/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java index 274bf1c24b8..1d89b193057 100644 --- a/server/src/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java @@ -24,13 +24,13 @@ import javax.inject.Inject; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; - import org.apache.cloudstack.api.response.StoragePoolResponse; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import com.cloud.api.ApiDBUtils; import com.cloud.api.query.vo.StoragePoolJoinVO; import com.cloud.capacity.Capacity; +import com.cloud.capacity.CapacityManager; import com.cloud.storage.ScopeType; import com.cloud.storage.StoragePool; import com.cloud.storage.StorageStats; @@ -103,6 +103,7 @@ public class StoragePoolJoinDaoImpl extends GenericDaoBase