Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 3EDD22004F5 for ; Fri, 1 Sep 2017 11:01:04 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 3D33F16B069; Fri, 1 Sep 2017 09:01:04 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 5E67C16B059 for ; Fri, 1 Sep 2017 11:01:03 +0200 (CEST) Received: (qmail 66195 invoked by uid 500); 1 Sep 2017 09:01:02 -0000 Mailing-List: contact commits-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list commits@cloudstack.apache.org Received: (qmail 66186 invoked by uid 99); 1 Sep 2017 09:01:02 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 01 Sep 2017 09:01:02 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id 53F098177D; Fri, 1 Sep 2017 09:00:59 +0000 (UTC) Date: Fri, 01 Sep 2017 09:00:59 +0000 To: "commits@cloudstack.apache.org" Subject: [cloudstack] branch master updated: CLOUDSTACK-8939: VM Snapshot size with memory correctly calculated in cloud.usage_event (XenServer) (#914) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-ID: <150425645930.30297.7293663299078305218@gitbox.apache.org> From: bhaisaab@apache.org Reply-To: "commits@cloudstack.apache.org" X-Git-Host: gitbox.apache.org X-Git-Repo: cloudstack X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: dfd01c99ef5c19596559b06ac4553ccd3e648172 X-Git-Newrev: 0d81e88601f015b23217832bca05fbed6d754f82 X-Git-Rev: 0d81e88601f015b23217832bca05fbed6d754f82 X-Git-NotificationType: ref_changed_plus_diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated archived-at: Fri, 01 Sep 2017 09:01:04 -0000 This is an automated email from the ASF dual-hosted git repository. bhaisaab pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cloudstack.git The following commit(s) were added to refs/heads/master by this push: new 0d81e88 CLOUDSTACK-8939: VM Snapshot size with memory correctly calculated in cloud.usage_event (XenServer) (#914) 0d81e88 is described below commit 0d81e88601f015b23217832bca05fbed6d754f82 Author: subhash yedugundla AuthorDate: Fri Sep 1 14:30:55 2017 +0530 CLOUDSTACK-8939: VM Snapshot size with memory correctly calculated in cloud.usage_event (XenServer) (#914) Fixing the error with snapshot size calculation in a vm with memory --- .../xenserver/resource/CitrixResourceBase.java | 42 +++++++++++++--------- .../CitrixCreateVMSnapshotCommandWrapper.java | 8 +++-- .../CitrixDeleteVMSnapshotCommandWrapper.java | 9 +++-- 3 files changed, 38 insertions(+), 21 deletions(-) diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java index 10c4307..f960b9f 100644 --- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java @@ -3333,7 +3333,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe return _instance; } - public long getVMSnapshotChainSize(final Connection conn, final VolumeObjectTO volumeTo, final String vmName) throws BadServerResponse, XenAPIException, XmlRpcException { + public long getVMSnapshotChainSize(final Connection conn, final VolumeObjectTO volumeTo, final String vmName, final String vmSnapshotName) throws BadServerResponse, XenAPIException, XmlRpcException { if (volumeTo.getVolumeType() == Volume.Type.DATADISK) { final VDI dataDisk = VDI.getByUuid(conn, volumeTo.getPath()); if (dataDisk != null) { @@ -3364,25 +3364,33 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe } } if (volumeTo.getVolumeType() == Volume.Type.ROOT) { - final Map allVMs = VM.getAllRecords(conn); - // add size of memory snapshot vdi - if (allVMs != null && allVMs.size() > 0) { - for (final VM vmr : allVMs.keySet()) { - try { - final String vName = vmr.getNameLabel(conn); - if (vName != null && vName.contains(vmName) && vmr.getIsASnapshot(conn)) { - final VDI memoryVDI = vmr.getSuspendVDI(conn); - if (!isRefNull(memoryVDI)) { - size = size + memoryVDI.getPhysicalUtilisation(conn); - final VDI pMemoryVDI = memoryVDI.getParent(conn); - if (!isRefNull(pMemoryVDI)) { - size = size + pMemoryVDI.getPhysicalUtilisation(conn); + VM vm = getVM(conn, vmName); + if(vm != null){ + Set vmSnapshots=vm.getSnapshots(conn); + if(vmSnapshots != null){ + for(VM vmsnap: vmSnapshots){ + try { + final String vmSnapName = vmsnap.getNameLabel(conn); + s_logger.debug("snapname " + vmSnapName); + if (vmSnapName != null && vmSnapName.contains(vmSnapshotName) && vmsnap.getIsASnapshot(conn)) { + s_logger.debug("snapname " + vmSnapName + "isASnapshot"); + VDI memoryVDI = vmsnap.getSuspendVDI(conn); + if (!isRefNull(memoryVDI)) { + size = size + memoryVDI.getPhysicalUtilisation(conn); + s_logger.debug("memoryVDI size :"+size); + String parentUuid = memoryVDI.getSmConfig(conn).get("vhd-parent"); + VDI pMemoryVDI = VDI.getByUuid(conn, parentUuid); + if (!isRefNull(pMemoryVDI)) { + size = size + pMemoryVDI.getPhysicalUtilisation(conn); + } + s_logger.debug("memoryVDI size+parent :"+size); } } + } catch (Exception e) { + s_logger.debug("Exception occurs when calculate snapshot capacity for memory: due to " + e.toString()); + continue; } - } catch (final Exception e) { - s_logger.debug("Exception occurs when calculate snapshot capacity for memory: due to " + e.toString()); - continue; + } } } diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixCreateVMSnapshotCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixCreateVMSnapshotCommandWrapper.java index 4550cf8..6bd843d 100644 --- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixCreateVMSnapshotCommandWrapper.java +++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixCreateVMSnapshotCommandWrapper.java @@ -23,6 +23,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import com.cloud.utils.exception.CloudRuntimeException; import org.apache.cloudstack.storage.to.VolumeObjectTO; import org.apache.log4j.Logger; @@ -142,8 +143,11 @@ public final class CitrixCreateVMSnapshotCommandWrapper extends CommandWrapper'].