diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageProcessor.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageProcessor.java index 029481b7211..b8e0b6a2083 100644 --- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageProcessor.java +++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageProcessor.java @@ -144,7 +144,7 @@ public class XenServerStorageProcessor implements StorageProcessor { throw new CloudRuntimeException("Unable to find CD-ROM VBD for VM: " + vmName); } else { // If an ISO is already inserted, eject it - if (isoVBD.getEmpty(conn) == false) { + if (!isoVBD.getEmpty(conn)) { isoVBD.eject(conn); } @@ -1291,7 +1291,8 @@ public class XenServerStorageProcessor implements StorageProcessor { // By default assume failure String details = null; String snapshotBackupUuid = null; - boolean fullbackup = true; + Map options = cmd.getOptions(); + boolean fullbackup = Boolean.parseBoolean(options.get("fullSnapshot")); try { SR primaryStorageSR = hypervisorResource.getSRByNameLabelandHost(conn, primaryStorageNameLabel); if (primaryStorageSR == null) { @@ -1302,7 +1303,7 @@ public class XenServerStorageProcessor implements StorageProcessor { VDI snapshotVdi = getVDIbyUuid(conn, snapshotUuid); String snapshotPaUuid = null; - if ( prevBackupUuid != null ) { + if ( prevSnapshotUuid != null && !fullbackup) { try { snapshotPaUuid = getVhdParent(conn, psUuid, snapshotUuid, isISCSI); if( snapshotPaUuid != null ) { @@ -1310,6 +1311,8 @@ public class XenServerStorageProcessor implements StorageProcessor { String prevSnashotPaUuid = getVhdParent(conn, psUuid, prevSnapshotUuid, isISCSI); if (snashotPaPaPaUuid != null && prevSnashotPaUuid!= null && prevSnashotPaUuid.equals(snashotPaPaPaUuid)) { fullbackup = false; + } else { + fullbackup = true; } } } catch (Exception e) {