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-8746) VM Snapshotting implementation for KVM
Date Tue, 03 Nov 2015 10:46:27 GMT

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

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

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

    https://github.com/apache/cloudstack/pull/977#discussion_r43734401
  
    --- Diff: plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRestoreVMSnapshotCommandWrapper.java
---
    @@ -0,0 +1,103 @@
    +//
    +// Licensed to the Apache Software Foundation (ASF) under one
    +// or more contributor license agreements.  See the NOTICE file
    +// distributed with this work for additional information
    +// regarding copyright ownership.  The ASF licenses this file
    +// to you under the Apache License, Version 2.0 (the
    +// "License"); you may not use this file except in compliance
    +// with the License.  You may obtain a copy of the License at
    +//
    +//   http://www.apache.org/licenses/LICENSE-2.0
    +//
    +// Unless required by applicable law or agreed to in writing,
    +// software distributed under the License is distributed on an
    +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    +// KIND, either express or implied.  See the License for the
    +// specific language governing permissions and limitations
    +// under the License.
    +//
    +
    +package com.cloud.hypervisor.kvm.resource.wrapper;
    +
    +import java.util.List;
    +import java.util.Map;
    +
    +import org.apache.cloudstack.storage.to.VolumeObjectTO;
    +import org.apache.log4j.Logger;
    +import org.libvirt.Connect;
    +import org.libvirt.Domain;
    +import org.libvirt.LibvirtException;
    +
    +import com.cloud.agent.api.Answer;
    +import com.cloud.agent.api.RestoreVMSnapshotAnswer;
    +import com.cloud.agent.api.RestoreVMSnapshotCommand;
    +import com.cloud.agent.api.VMSnapshotTO;
    +import com.cloud.hypervisor.kvm.resource.LibvirtComputingResource;
    +import com.cloud.resource.CommandWrapper;
    +import com.cloud.resource.ResourceWrapper;
    +import com.cloud.vm.VirtualMachine;
    +
    +@ResourceWrapper(handles =  RestoreVMSnapshotCommand.class)
    +public final class LibvirtRestoreVMSnapshotCommandWrapper extends CommandWrapper<RestoreVMSnapshotCommand,
Answer, LibvirtComputingResource> {
    +
    +    private static final Logger s_logger = Logger.getLogger(LibvirtRestoreVMSnapshotCommandWrapper.class);
    +
    +    @Override
    +    public Answer execute(final RestoreVMSnapshotCommand cmd, final LibvirtComputingResource
libvirtComputingResource) {
    +        String vmName = cmd.getVmName();
    +        List<VolumeObjectTO> listVolumeTo = cmd.getVolumeTOs();
    +        VirtualMachine.PowerState vmState = VirtualMachine.PowerState.PowerOn;
    +
    +        Domain dm = null;
    +        try {
    +            final LibvirtUtilitiesHelper libvirtUtilitiesHelper = libvirtComputingResource.getLibvirtUtilitiesHelper();
    +            Connect conn = libvirtUtilitiesHelper.getConnection();
    +            dm = libvirtComputingResource.getDomain(conn, vmName);
    +
    +            if (dm == null) {
    +                return new RestoreVMSnapshotAnswer(cmd, false,
    +                        "Restore VM Snapshot Failed due to can not find vm: " + vmName);
    +            }
    +            String xmlDesc = dm.getXMLDesc(0);
    +
    +            List<VMSnapshotTO> snapshots = cmd.getSnapshots();
    +            Map<Long, VMSnapshotTO> snapshotAndParents = cmd.getSnapshotAndParents();
    +            for (VMSnapshotTO snapshot: snapshots) {
    +                VMSnapshotTO parent = snapshotAndParents.get(snapshot.getId());
    +                String parentName = (parent == null)? "": ("  <parent><name>"
+ parent.getSnapshotName() + "</name></parent>\n");
    +                String vmSnapshotXML = "<domainsnapshot>\n"
    --- End diff --
    
    Can we maybe offload this to a helper which generates the XML? We have this for multiple
things. That allows us to Unit Test the XML generation. That is very hard to do when it's
inline.


> VM Snapshotting implementation for KVM
> --------------------------------------
>
>                 Key: CLOUDSTACK-8746
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-8746
>             Project: CloudStack
>          Issue Type: Improvement
>      Security Level: Public(Anyone can view this level - this is the default.) 
>            Reporter: Wei Zhou
>            Assignee: Wei Zhou
>
> Currently it is not supported.
> https://cwiki.apache.org/confluence/display/CLOUDSTACK/VM+Snapshots



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

Mime
View raw message