[
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)