We can move it to storage driver's capabilities method.
Each storage driver can report its capabilities in DataStoreDriver-> 
getCapabilities(), which returns a map[String, String], we can change the 
signature to map[String, Object]
In CloudStackPrimaryDataStoreDriverImpl(the default storage driver)-> 
getCapabilities, which can return something like:

Var comparator = new  storageOverProvision() {
    Public Boolean isOverProvisionSupported(DataStore store) {
       Var storagepool = (PrimaryDataStoreInfo)store;
       If (store.getPoolType() == NFS or VMFS) {
           Return true; 
      }
     };
};
Var caps = new HashMap[String, Object]();
Caps.put("storageOverProvision", comparator);
Return caps;
}

Whenever, other places in mgt server want to check the capabilities of 
overprovision, we can do the following:

Var primaryStore = DataStoreManager. getPrimaryDataStore(primaryStoreId);
var caps = primaryStore. getDriver().getCapabilities();
var overprovision = caps.get("storageOverProvision");
var result = overprovision. isOverProvisionSupported(primaryStore);





> -----Original Message-----
> From: Marcus Sorensen [mailto:shadow...@gmail.com]
> Sent: Monday, January 06, 2014 9:19 AM
> To: dev@cloudstack.apache.org
> Subject: HELP: storage overprovision for storage plugins
> 
> Does anyone know how to make our storage plugin allow overprovisioning
> with the new storage framework? Looks like its currently hardcoded to just
> NFS or VMFS.
> 
> I imagine we'd want to add a method to StoragePool, boolean
> StoragePool.getOverprovision()
> 
> 
> server/src/com/cloud/storage/StorageManagerImpl.java
> 
>         if (storagePool.getPoolType() == StoragePoolType.NetworkFilesystem ||
> storagePool.getPoolType() ==
> StoragePoolType.VMFS) {
>             BigDecimal overProvFactor =
> getStorageOverProvisioningFactor(storagePool.getDataCenterId());
>             totalOverProvCapacity = overProvFactor.multiply(new
> BigDecimal(storagePool.getCapacityBytes())).longValue();
>             // All this is for the inaccuracy of floats for big number 
> multiplication.
>         } else {
>             totalOverProvCapacity = storagePool.getCapacityBytes();
>         }

Reply via email to