public Answer copyVolumeFromPrimaryToSecondary(CopyCommand cmd) {
DataTO srcData = cmd.getSrcTO();
DataTO destData = cmd.getDestTO();
VolumeObjectTO srcVol = (VolumeObjectTO) srcData;
VolumeObjectTO destVol = (VolumeObjectTO) destData;
ImageFormat srcFormat = srcVol.getFormat();
ImageFormat destFormat = destVol.getFormat();
DataStoreTO srcStore = srcData.getDataStore();
DataStoreTO destStore = destData.getDataStore();
PrimaryDataStoreTO primaryStore = (PrimaryDataStoreTO) srcStore;
if (!(destStore instanceof NfsTO)) {
return new CopyCmdAnswer("can only handle nfs storage");
}
NfsTO nfsStore = (NfsTO)destStore;
String srcVolumePath = srcData.getPath();
String destVolumePath = destData.getPath();
String secondaryStorageUrl = nfsStore.getUrl();
KVMStoragePool secondaryStoragePool = null;
try {
String volumeName = UUID.randomUUID().toString();
KVMPhysicalDisk volume = storagePoolMgr.getPhysicalDisk(primaryStore.getPoolType(), primaryStore.getUuid(), srcVolumePath);
String destVolumeName = volumeName + "." + destFormat.getFileExtension();
volume.setFormat(PhysicalDiskFormat.valueOf(srcFormat.toString()));
secondaryStoragePool = storagePoolMgr.getStoragePoolByURI(
secondaryStorageUrl);
secondaryStoragePool.createFolder(destVolumePath);
storagePoolMgr.deleteStoragePool(secondaryStoragePool.getType(),secondaryStoragePool.getUuid());