Search in sources :

Example 6 with PrimaryDataStoreDriver

use of org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver in project cloudstack by apache.

the class XenServerStorageMotionStrategy method handleManagedVolumesAfterFailedMigration.

private void handleManagedVolumesAfterFailedMigration(Map<VolumeInfo, DataStore> volumeToPool, Host destHost) {
    for (Map.Entry<VolumeInfo, DataStore> entry : volumeToPool.entrySet()) {
        VolumeInfo volumeInfo = entry.getKey();
        StoragePool storagePool = storagePoolDao.findById(volumeInfo.getPoolId());
        if (storagePool.isManaged()) {
            final Map<String, String> details = new HashMap<>();
            details.put(DeleteStoragePoolCommand.DATASTORE_NAME, getBasicIqn(volumeInfo.getId()));
            final DeleteStoragePoolCommand cmd = new DeleteStoragePoolCommand();
            cmd.setDetails(details);
            cmd.setRemoveDatastore(true);
            final Answer answer = agentMgr.easySend(destHost.getId(), cmd);
            if (answer == null || !answer.getResult()) {
                String errMsg = "Error interacting with host (related to handleManagedVolumesAfterFailedMigration)" + (StringUtils.isNotBlank(answer.getDetails()) ? ": " + answer.getDetails() : "");
                s_logger.error(errMsg);
                // regardless of the success or lack thereof concerning this method
                return;
            }
            final PrimaryDataStoreDriver pdsd = (PrimaryDataStoreDriver) volumeInfo.getDataStore().getDriver();
            VolumeDetailVO volumeDetailVo = new VolumeDetailVO(volumeInfo.getId(), PrimaryDataStoreDriver.BASIC_REVOKE_ACCESS, Boolean.TRUE.toString(), false);
            volumeDetailsDao.persist(volumeDetailVo);
            pdsd.revokeAccess(volumeInfo, destHost, volumeInfo.getDataStore());
            volumeDetailVo = new VolumeDetailVO(volumeInfo.getId(), PrimaryDataStoreDriver.BASIC_DELETE_FAILURE, Boolean.TRUE.toString(), false);
            volumeDetailsDao.persist(volumeDetailVo);
            pdsd.deleteAsync(volumeInfo.getDataStore(), volumeInfo, null);
        }
    }
}
Also used : MigrateWithStorageCompleteAnswer(com.cloud.agent.api.MigrateWithStorageCompleteAnswer) MigrateWithStorageSendAnswer(com.cloud.agent.api.MigrateWithStorageSendAnswer) Answer(com.cloud.agent.api.Answer) MigrateWithStorageReceiveAnswer(com.cloud.agent.api.MigrateWithStorageReceiveAnswer) MigrateWithStorageAnswer(com.cloud.agent.api.MigrateWithStorageAnswer) StoragePool(com.cloud.storage.StoragePool) HashMap(java.util.HashMap) PrimaryDataStoreDriver(org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver) DataStore(org.apache.cloudstack.engine.subsystem.api.storage.DataStore) DeleteStoragePoolCommand(com.cloud.agent.api.DeleteStoragePoolCommand) VolumeDetailVO(com.cloud.storage.VolumeDetailVO) VolumeInfo(org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo) HashMap(java.util.HashMap) Map(java.util.Map)

Example 7 with PrimaryDataStoreDriver

use of org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver in project cloudstack by apache.

the class StorageManagerImpl method getDataObjectSizeIncludingHypervisorSnapshotReserve.

private long getDataObjectSizeIncludingHypervisorSnapshotReserve(Volume volume, StoragePool pool) {
    DataStoreProvider storeProvider = _dataStoreProviderMgr.getDataStoreProvider(pool.getStorageProviderName());
    DataStoreDriver storeDriver = storeProvider.getDataStoreDriver();
    if (storeDriver instanceof PrimaryDataStoreDriver) {
        PrimaryDataStoreDriver primaryStoreDriver = (PrimaryDataStoreDriver) storeDriver;
        VolumeInfo volumeInfo = volFactory.getVolume(volume.getId());
        return primaryStoreDriver.getDataObjectSizeIncludingHypervisorSnapshotReserve(volumeInfo, pool);
    }
    return volume.getSize();
}
Also used : PrimaryDataStoreDriver(org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver) DataStoreProvider(org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider) PrimaryDataStoreDriver(org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver) DataStoreDriver(org.apache.cloudstack.engine.subsystem.api.storage.DataStoreDriver) VolumeInfo(org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo)

Example 8 with PrimaryDataStoreDriver

use of org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver in project cloudstack by apache.

the class CapacityManagerImpl method getUsedIops.

@Override
public long getUsedIops(StoragePoolVO pool) {
    DataStoreProvider storeProvider = _dataStoreProviderMgr.getDataStoreProvider(pool.getStorageProviderName());
    DataStoreDriver storeDriver = storeProvider.getDataStoreDriver();
    if (storeDriver instanceof PrimaryDataStoreDriver) {
        PrimaryDataStoreDriver primaryStoreDriver = (PrimaryDataStoreDriver) storeDriver;
        return primaryStoreDriver.getUsedIops(pool);
    }
    throw new CloudRuntimeException("Storage driver in CapacityManagerImpl.getUsedIops(StoragePoolVO) is not a PrimaryDataStoreDriver.");
}
Also used : PrimaryDataStoreDriver(org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) DataStoreProvider(org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider) DataStoreDriver(org.apache.cloudstack.engine.subsystem.api.storage.DataStoreDriver) PrimaryDataStoreDriver(org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver)

Example 9 with PrimaryDataStoreDriver

use of org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver in project cloudstack by apache.

the class StorageManagerImpl method getBytesRequiredForTemplate.

private long getBytesRequiredForTemplate(VMTemplateVO tmpl, StoragePool pool) {
    DataStoreProvider storeProvider = _dataStoreProviderMgr.getDataStoreProvider(pool.getStorageProviderName());
    DataStoreDriver storeDriver = storeProvider.getDataStoreDriver();
    if (storeDriver instanceof PrimaryDataStoreDriver) {
        PrimaryDataStoreDriver primaryStoreDriver = (PrimaryDataStoreDriver) storeDriver;
        TemplateInfo templateInfo = tmplFactory.getReadyTemplateOnImageStore(tmpl.getId(), pool.getDataCenterId());
        return primaryStoreDriver.getBytesRequiredForTemplate(templateInfo, pool);
    }
    return tmpl.getSize();
}
Also used : TemplateInfo(org.apache.cloudstack.engine.subsystem.api.storage.TemplateInfo) PrimaryDataStoreDriver(org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver) DataStoreProvider(org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider) PrimaryDataStoreDriver(org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver) DataStoreDriver(org.apache.cloudstack.engine.subsystem.api.storage.DataStoreDriver)

Aggregations

PrimaryDataStoreDriver (org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreDriver)9 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)6 DataStoreDriver (org.apache.cloudstack.engine.subsystem.api.storage.DataStoreDriver)4 DataStoreProvider (org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider)4 Answer (com.cloud.agent.api.Answer)3 MigrateWithStorageAnswer (com.cloud.agent.api.MigrateWithStorageAnswer)3 MigrateWithStorageCompleteAnswer (com.cloud.agent.api.MigrateWithStorageCompleteAnswer)3 MigrateWithStorageReceiveAnswer (com.cloud.agent.api.MigrateWithStorageReceiveAnswer)3 MigrateWithStorageSendAnswer (com.cloud.agent.api.MigrateWithStorageSendAnswer)3 VolumeDetailVO (com.cloud.storage.VolumeDetailVO)3 HashMap (java.util.HashMap)3 DeleteStoragePoolCommand (com.cloud.agent.api.DeleteStoragePoolCommand)2 ExecutionException (java.util.concurrent.ExecutionException)2 CopyCommandResult (org.apache.cloudstack.engine.subsystem.api.storage.CopyCommandResult)2 SnapshotResult (org.apache.cloudstack.engine.subsystem.api.storage.SnapshotResult)2 VolumeInfo (org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo)2 AsyncCallFuture (org.apache.cloudstack.framework.async.AsyncCallFuture)2 CommandResult (org.apache.cloudstack.storage.command.CommandResult)2 CreateStoragePoolCommand (com.cloud.agent.api.CreateStoragePoolCommand)1 StoragePool (com.cloud.storage.StoragePool)1