diff --git a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotServiceImpl.java b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotServiceImpl.java index cabd91bee37..ab785d7eb24 100644 --- a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotServiceImpl.java +++ b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotServiceImpl.java @@ -214,7 +214,8 @@ public class SnapshotServiceImpl implements SnapshotService { try { result = future.get(); if (result.isFailed()) { - s_logger.debug("Failed to create snapshot:" + result.getResult()); + snapshot.processEvent(Snapshot.Event.OperationFailed); + snapshot.processEvent(Event.OperationFailed); throw new CloudRuntimeException(result.getResult()); } return result; @@ -224,8 +225,10 @@ public class SnapshotServiceImpl implements SnapshotService { } catch (ExecutionException e) { s_logger.debug("Failed to create snapshot", e); throw new CloudRuntimeException("Failed to create snapshot", e); + } catch (NoTransitionException e) { + s_logger.debug("Failed to create snapshot", e); + throw new CloudRuntimeException("Failed to create snapshot", e); } - } // if a snapshot has parent snapshot, the new snapshot should be stored in diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java index 8f46c222e1a..e00e4d207ee 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java @@ -352,8 +352,11 @@ public class KVMStorageProcessor implements StorageProcessor { secondaryStoragePool = storagePoolMgr.getStoragePoolByURI( secondaryStorageUrl + File.separator + volumeDir ); + if (!srcVolumeName.endsWith(".qcow2")) { + srcVolumeName = srcVolumeName + ".qcow2"; + } KVMPhysicalDisk volume = secondaryStoragePool - .getPhysicalDisk(srcVolumeName + ".qcow2"); + .getPhysicalDisk(srcVolumeName); storagePoolMgr.copyPhysicalDisk(volume, volumeName, primaryPool); VolumeObjectTO newVol = new VolumeObjectTO(); @@ -414,7 +417,7 @@ public class KVMStorageProcessor implements StorageProcessor { storagePoolMgr.copyPhysicalDisk(volume, destVolumeName,secondaryStoragePool); VolumeObjectTO newVol = new VolumeObjectTO(); - newVol.setPath(destVolumePath + File.separator + volumeName); + newVol.setPath(destVolumePath + File.separator + destVolumeName); return new CopyCmdAnswer(newVol); } catch (CloudRuntimeException e) { return new CopyCmdAnswer(e.toString());