https://issues.apache.org/jira/browse/CLOUDSTACK-5806
On Mon, Jan 6, 2014 at 12:46 PM, Marcus Sorensen <shadow...@gmail.com> wrote: > Thanks, I've created an issue for it. It's unassigned, I assume > Edison, Mike, Chris S, or myself could fix it, I don't have time to > immediately look into it (I simply removed the check for type to get > around our immediate issue) but will try to circle back around on it > if nobody can help. > > On Mon, Jan 6, 2014 at 12:14 PM, Edison Su <edison...@citrix.com> wrote: >> 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(); >>> }