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