Prasanna Santhanam created CLOUDSTACK-643:
---------------------------------------------

             Summary: 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
            Reporter: Prasanna Santhanam
             Fix For: 4.0.1, 4.1.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

Reply via email to