Search in sources :

Example 1 with DataMotionStrategy

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

the class DataMotionServiceImpl method copyAsync.

@Override
public void copyAsync(Map<VolumeInfo, DataStore> volumeMap, VirtualMachineTO vmTo, Host srcHost, Host destHost, AsyncCompletionCallback<CopyCommandResult> callback) {
    DataMotionStrategy strategy = storageStrategyFactory.getDataMotionStrategy(volumeMap, srcHost, destHost);
    if (strategy == null) {
        List<String> volumeIds = new LinkedList<String>();
        for (final VolumeInfo volumeInfo : volumeMap.keySet()) {
            volumeIds.add(volumeInfo.getUuid());
        }
        throw new CloudRuntimeException("Can't find strategy to move data. " + "Source Host: " + srcHost.getName() + ", Destination Host: " + destHost.getName() + ", Volume UUIDs: " + StringUtils.join(volumeIds, ","));
    }
    strategy.copyAsync(volumeMap, vmTo, srcHost, destHost, callback);
}
Also used : CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) DataMotionStrategy(org.apache.cloudstack.engine.subsystem.api.storage.DataMotionStrategy) VolumeInfo(org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo) LinkedList(java.util.LinkedList)

Example 2 with DataMotionStrategy

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

the class DataMotionServiceImpl method copyAsync.

@Override
public void copyAsync(DataObject srcData, DataObject destData, Host destHost, AsyncCompletionCallback<CopyCommandResult> callback) {
    if (srcData.getDataStore() == null || destData.getDataStore() == null) {
        throw new CloudRuntimeException("can't find data store");
    }
    if (srcData.getDataStore().getDriver().canCopy(srcData, destData)) {
        srcData.getDataStore().getDriver().copyAsync(srcData, destData, callback);
        return;
    } else if (destData.getDataStore().getDriver().canCopy(srcData, destData)) {
        destData.getDataStore().getDriver().copyAsync(srcData, destData, callback);
        return;
    }
    DataMotionStrategy strategy = storageStrategyFactory.getDataMotionStrategy(srcData, destData);
    if (strategy == null) {
        throw new CloudRuntimeException("Can't find strategy to move data. " + "Source: " + srcData.getType().name() + " '" + srcData.getUuid() + ", Destination: " + destData.getType().name() + " '" + destData.getUuid() + "'");
    }
    strategy.copyAsync(srcData, destData, destHost, callback);
}
Also used : CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) DataMotionStrategy(org.apache.cloudstack.engine.subsystem.api.storage.DataMotionStrategy)

Aggregations

CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)2 DataMotionStrategy (org.apache.cloudstack.engine.subsystem.api.storage.DataMotionStrategy)2 LinkedList (java.util.LinkedList)1 VolumeInfo (org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo)1