Maor Lipchuk has uploaded a new change for review. Change subject: core:Fix NPE when import VM with clone ......................................................................
core:Fix NPE when import VM with clone The following patch should fix an NPE which occurs when importing a cloned VM or a cloned VM template, which does not exists in the Data Center. This exception is caused when trying to copy each disk, and use the property WipeAfterDelete from the image in the DB, since the disk does not exists in the DB, we get an NPE. As part of the fix, the property WipeAfterDelete has been initialized in the command parameters on each command which executed the MoveOrCopyImageGroupCommand. Change-Id: I47b8f82a2bd19320d9953df54f9aa16e4ef9200f Signed-off-by: Maor Lipchuk <[email protected]> Related to Bug-Url: https://bugzilla.redhat.com/862303 --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndCloneImageCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmTemplateCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyDiskCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyImageGroupCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyTemplateCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MoveOrCopyImageGroupParameters.java 9 files changed, 18 insertions(+), 9 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/76/9176/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndCloneImageCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndCloneImageCommand.java index 1bc2cc4..6ff0858 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndCloneImageCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndCloneImageCommand.java @@ -98,6 +98,7 @@ srcImageId, diskImage.getId(), diskImage.getImageId(), + diskImage.isWipeAfterDelete(), diskImage.getstorage_ids().get(0), ImageOperation.Copy); params.setAddImageDomainMapping(false); @@ -106,7 +107,6 @@ params.setVolumeType(diskImage.getvolume_type()); params.setUseCopyCollapse(true); params.setSourceDomainId(srcStorageDomainId); - params.setWipeAfterDelete(diskImage.isWipeAfterDelete()); params.setParentParameters(getParameters()); params.setParentCommand(parentCommandType); return params; diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java index 31acb5d..038d48f 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java @@ -279,7 +279,7 @@ protected void moveOrCopyAllImageGroups(Guid containerID, Iterable<DiskImage> disks) { for (DiskImage disk : disks) { MoveOrCopyImageGroupParameters tempVar = new MoveOrCopyImageGroupParameters(containerID, disk - .getId(), disk.getImageId(), getParameters().getStorageDomainId(), + .getId(), disk.getImageId(), getParameters().getStorageDomainId(), disk.isWipeAfterDelete(), getMoveOrCopyImageOperation()); tempVar.setParentCommand(getActionType()); tempVar.setEntityId(getParameters().getEntityId()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmTemplateCommand.java index b211e49..81eafab 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmTemplateCommand.java @@ -46,7 +46,7 @@ // the ovf so the import // will set the original format MoveOrCopyImageGroupParameters p = new MoveOrCopyImageGroupParameters(containerID, disk - .getId(), disk.getImageId(), getParameters().getStorageDomainId(), + .getId(), disk.getImageId(), getParameters().getStorageDomainId(), disk.isWipeAfterDelete(), getMoveOrCopyImageOperation()); p.setParentCommand(getActionType()); p.setParentParameters(getParameters()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java index 8d373c9..b88ee6f 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java @@ -552,6 +552,7 @@ imageGuidList.get(i), disk.getId(), disk.getImageId(), + disk.isWipeAfterDelete(), destinationDomain, getMoveOrCopyImageOperation()); p.setParentCommand(getActionType()); p.setUseCopyCollapse(getParameters().getCopyCollapse()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java index 5b53afd..4f61541 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java @@ -284,6 +284,7 @@ imageGuidList.get(i), disk.getId(), disk.getImageId(), + disk.isWipeAfterDelete(), destinationDomain, getMoveOrCopyImageOperation()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyDiskCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyDiskCommand.java index a75d06a..7df9af9 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyDiskCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyDiskCommand.java @@ -331,6 +331,7 @@ getParameters().setDestImageGroupId(getImageGroupId()); getParameters().setVolumeFormat(getDiskImage().getvolume_format()); getParameters().setVolumeType(getDiskImage().getvolume_type()); + getParameters().setWipeAfterDelete(getDiskImage().isWipeAfterDelete()); getParameters().setCopyVolumeType(CopyVolumeType.SharedVol); getParameters().setParentCommand(getActionType()); getParameters().setParentParameters(getParameters()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyImageGroupCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyImageGroupCommand.java index c3e07c5..03333fe 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyImageGroupCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyImageGroupCommand.java @@ -79,7 +79,7 @@ getParameters().getVolumeFormat(), getParameters() .getVolumeType(), - getImage().isWipeAfterDelete(), + getParameters().getWipeAfterDelete(), getParameters() .getForceOverride(), getStoragePool().getcompatibility_version().toString())); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyTemplateCommand.java index 2401cde..cca4d29 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyTemplateCommand.java @@ -176,9 +176,13 @@ @Override public Void runInTransaction() { for (DiskImage disk : disks) { - MoveOrCopyImageGroupParameters p = new MoveOrCopyImageGroupParameters(containerID, disk - .getId(), disk.getImageId(), getParameters().getStorageDomainId(), - getMoveOrCopyImageOperation()); + MoveOrCopyImageGroupParameters p = + new MoveOrCopyImageGroupParameters(containerID, + disk.getId(), + disk.getImageId(), + getParameters().getStorageDomainId(), + disk.isWipeAfterDelete(), + getMoveOrCopyImageOperation()); p.setParentCommand(getActionType()); p.setEntityId(getParameters().getEntityId()); p.setAddImageDomainMapping(getMoveOrCopyImageOperation() == ImageOperation.Copy); diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MoveOrCopyImageGroupParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MoveOrCopyImageGroupParameters.java index 039baf8..3717f03 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MoveOrCopyImageGroupParameters.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MoveOrCopyImageGroupParameters.java @@ -33,8 +33,9 @@ } public MoveOrCopyImageGroupParameters(Guid containerId, Guid imageGroupId, Guid leafSnapshotID, - Guid storageDomainId, ImageOperation operation) { + Guid storageDomainId, boolean isWipeAfterDelete, ImageOperation operation) { super(leafSnapshotID, containerId); + setWipeAfterDelete(isWipeAfterDelete); setStorageDomainId(storageDomainId); setImageGroupID(imageGroupId); setOperation(operation); @@ -51,8 +52,9 @@ Guid imageId, Guid destImageGroupId, Guid destImageId, + boolean wipeAfterDelete, Guid storageDomainId, ImageOperation operation) { - this(containerId, imageGroupId, imageId, storageDomainId, operation); + this(containerId, imageGroupId, imageId, storageDomainId, wipeAfterDelete, operation); setDestImageGroupId(destImageGroupId); setDestinationImageId(destImageId); } -- To view, visit http://gerrit.ovirt.org/9176 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I47b8f82a2bd19320d9953df54f9aa16e4ef9200f Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Maor Lipchuk <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
