You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cloudstack.apache.org by "edison su (JIRA)" <ji...@apache.org> on 2013/07/01 20:54:20 UTC
[jira] [Assigned] (CLOUDSTACK-643) KVM snapshots deleted on UI/API
do not physically delete from secondary storage
[ https://issues.apache.org/jira/browse/CLOUDSTACK-643?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
edison su reassigned CLOUDSTACK-643:
------------------------------------
Assignee: edison su
> KVM snapshots deleted on UI/API do not physically delete from secondary storage
> -------------------------------------------------------------------------------
>
> Key: CLOUDSTACK-643
> URL: https://issues.apache.org/jira/browse/CLOUDSTACK-643
> Project: CloudStack
> Issue Type: Bug
> Security Level: Public(Anyone can view this level - this is the default.)
> Components: KVM, Snapshot
> Affects Versions: 4.0.0, 4.1.0, 4.2.0
> Reporter: Prasanna Santhanam
> Assignee: edison su
> Priority: Blocker
> Fix For: 4.2.0
>
>
> Snapshots taken on KVM do not delete on secondary storage even after deleting them on the API/UI.
> The cmd.getSnapshotUuid() in case of KVM is the complete path to the qcow2 image on secondary storage. But the following concatenation evaluates to an invalid path and subsequent "rm -f" fails quietly returning Answer(success) back to management server.
> ""
> String lPath = parent + "/snapshots/" + String.valueOf(accountId) + "/" + String.valueOf(volumeId) + "/" + filename;
> ""
> On NfsSecondaryStorageResource.java:
> protected Answer execute(final DeleteSnapshotBackupCommand cmd) {
> String secondaryStorageUrl = cmd.getSecondaryStorageUrl();
> Long accountId = cmd.getAccountId();
> Long volumeId = cmd.getVolumeId();
> String name = cmd.getSnapshotUuid();
> try {
> if (swift == null) {
> String parent = getRootDir(secondaryStorageUrl);
> String filename;
> if (cmd.isAll()) {
> filename = "*";
> } else {
> filename = "*" + name + "*";
> }
> String lPath = parent + "/snapshots/" + String.valueOf(accountId) + "/" + String.valueOf(volumeId) + "/" + filename;
> String result = deleteLocalFile(lPath);
> if (result != null) {
> String errMsg = "failed to delete snapshot " + lPath + " , err=" + result;
> s_logger.warn(errMsg);
> return new Answer(cmd, false, errMsg);
> }
> } else {
> #### SNIP ####
> }
> return new Answer(cmd, true, "success");
> } catch (Exception e) {
> }
> }
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira