cloudstack-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CLOUDSTACK-8302) Cleanup snapshot on KVM with RBD
Date Sun, 20 Dec 2015 09:48:46 GMT

    [ https://issues.apache.org/jira/browse/CLOUDSTACK-8302?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15065686#comment-15065686
] 

ASF GitHub Bot commented on CLOUDSTACK-8302:
--------------------------------------------

Github user wido commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1230#discussion_r48101628
  
    --- Diff: plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
---
    @@ -1274,7 +1274,46 @@ public Answer createVolumeFromSnapshot(final CopyCommand cmd) {
     
         @Override
         public Answer deleteSnapshot(final DeleteCommand cmd) {
    -        return new Answer(cmd);
    +        try {
    +            SnapshotObjectTO snapshotTO = (SnapshotObjectTO) cmd.getData();
    +            PrimaryDataStoreTO primaryStore = (PrimaryDataStoreTO) snapshotTO.getDataStore();
    +            VolumeObjectTO volume = snapshotTO.getVolume();
    +            String snapshotFullPath = snapshotTO.getPath();
    +            String snapshotName = snapshotFullPath.substring(snapshotFullPath.lastIndexOf("/")
+ 1);
    +            KVMStoragePool primaryPool = storagePoolMgr.getStoragePool(primaryStore.getPoolType(),
primaryStore.getUuid());
    +            KVMPhysicalDisk disk = storagePoolMgr.getPhysicalDisk(primaryStore.getPoolType(),
primaryStore.getUuid(), volume.getPath());
    +            if (primaryPool.getType() == StoragePoolType.RBD) {
    +                Rados r = new Rados(primaryPool.getAuthUserName());
    +                r.confSet("mon_host", primaryPool.getSourceHost() + ":" + primaryPool.getSourcePort());
    +                r.confSet("key", primaryPool.getAuthSecret());
    +                r.confSet("client_mount_timeout", "30");
    +                r.connect();
    +                s_logger.debug("Succesfully connected to Ceph cluster at " + r.confGet("mon_host"));
    +                IoCTX io = r.ioCtxCreate(primaryPool.getSourceDir());
    +                Rbd rbd = new Rbd(io);
    +                RbdImage image = rbd.open(disk.getName());
    +                try {
    +                    s_logger.info("Attempting to remove RBD snapshot " + disk.getName()
+ "@" + snapshotName);
    +                    if (image.snapIsProtected(snapshotName)) {
    +                        s_logger.debug("Unprotecting RBD snapshot " + snapshotFullPath);
    +                        image.snapUnprotect(snapshotName);
    +                    }
    +                    image.snapRemove(snapshotName);
    +                    s_logger.info("Snapshot " + snapshotFullPath + " successfully removed
from " +
    +                            primaryPool.getType().toString() + "  pool.");
    +                } finally {
    +                    rbd.close(image);
    +                    r.ioCtxDestroy(io);
    +                }
    +            } else {
    +                s_logger.warn("Operation not implemented for storage pool type of " +
primaryPool.getType().toString());
    +                throw new InternalErrorException("Operation not implemented for storage
pool type of " + primaryPool.getType().toString());
    +            }
    +            return new Answer(cmd, true, "Snapshot removed successfully.");
    --- End diff --
    
    I would add the path of the snapshot here: pool/image@snap. Logs should be easy to consume


> Cleanup snapshot on KVM with RBD
> --------------------------------
>
>                 Key: CLOUDSTACK-8302
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-8302
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the default.) 
>          Components: KVM, Snapshot, Storage Controller
>    Affects Versions: 4.4.0, 4.4.1, 4.4.2
>         Environment: CloudStack 4.4.2 + KVM on CentOS 6.6 + Ceph/RBD 0.80.8
>            Reporter: Star Guo
>            Assignee: Wido den Hollander
>            Priority: Critical
>
> I just build a lab with CloudStack 4.4.2 + CentOS 6.6 KVM + Ceph/RBD 0.80.8.
> I deploy an instance on RBD and I create the ROOT volume snapshots. When delete a snapshot
the UI show OK, but the snapshot of the volume in the RBD pool is still exist.
> And I find the code in com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java: 
> …
>     @Override
>     public Answer deleteSnapshot(DeleteCommand cmd) {
>         return new Answer(cmd);
>     }
> …
> deleteSnapshot() does not be implememented. And I also find the code:
> ...
>     @Override
>     public Answer createTemplateFromSnapshot(CopyCommand cmd) {
>         return null;  //To change body of implemented methods use File | Settings | File
Templates.
>     }
> ...
> So does createTenokateFromSnapshot(). I just look for it in MASTER branch but not do
that yet. Will CloudStack Dev Team plan to do that ? Thanks .



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message