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);
}
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);
}
Aggregations