Maor Lipchuk has uploaded a new change for review. Change subject: core: Validate MSD when importing a VM from configuration ......................................................................
core: Validate MSD when importing a VM from configuration Using validation for active storage domain on all the Storage Domains which the images are based on. Change-Id: I067b6186c2a2b7d77394e9cb0a4e8f023c168e4b Signed-off-by: Maor Lipchuk <[email protected]> --- 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/ImportVmFromConfigurationCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyTemplateCommand.java 3 files changed, 34 insertions(+), 10 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/38/28538/1 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 cb53fa2..a2bc666 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 @@ -247,11 +247,12 @@ return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_IMPORT_UNREGISTERED_NOT_COLLAPSED); } - setSourceDomainId(getParameters().getSourceDomainId()); - StorageDomainValidator validator = new StorageDomainValidator(getSourceDomain()); - if (validator.isDomainExistAndActive().isValid() && !isImagesAlreadyOnTarget() - && getSourceDomain().getStorageDomainType() != StorageDomainType.ImportExport) { - return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_TYPE_ILLEGAL); + if (!isImagesAlreadyOnTarget()) { + setSourceDomainId(getParameters().getSourceDomainId()); + StorageDomainValidator validator = new StorageDomainValidator(getSourceDomain()); + if (validator.isDomainExistAndActive().isValid() && getSourceDomain().getStorageDomainType() != StorageDomainType.ImportExport) { + return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_TYPE_ILLEGAL); + } } List<VM> vms = getVmsFromExportDomain(); @@ -309,7 +310,7 @@ // work properly. // we fix it to DestDomainId in // MoveOrCopyAllImageGroups(); - image.setStorageIds(new ArrayList<Guid>(Arrays.asList(getParameters().getSourceDomainId()))); + image.setStorageIds(new ArrayList<Guid>(Arrays.asList(getSourceDomainId(image)))); } Map<Guid, List<DiskImage>> images = ImagesHandler.getImagesLeaf(getVm().getImages()); @@ -620,12 +621,16 @@ return true; } + protected Guid getSourceDomainId(DiskImage image) { + return getParameters().getSourceDomainId(); + } + protected boolean checkImagesGUIDsLegal() { for (DiskImage image : getVm().getImages()) { Guid imageGUID = image.getImageId(); Guid storagePoolId = image.getStoragePoolId() != null ? image.getStoragePoolId() : Guid.Empty; - Guid storageDomainId = getParameters().getSourceDomainId(); + Guid storageDomainId = getSourceDomainId(image); Guid imageGroupId = image.getId() != null ? image.getId() : Guid.Empty; VDSReturnValue retValue = Backend diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java index 67010ea..a1e2b8b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java @@ -12,6 +12,7 @@ import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.businessentities.Disk; +import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.OvfEntityData; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.compat.Guid; @@ -127,4 +128,18 @@ return AuditLogType.VM_IMPORT_FROM_CONFIGURATION_EXECUTED_SUCCESSFULLY; } + protected Guid getSourceDomainId(DiskImage image) { + return image.getStorageIds().get(0); + } + + protected void ensureDomainMap(Collection<DiskImage> images, Guid defaultDomainId) { + super.ensureDomainMap(images, defaultDomainId); + if (isImagesAlreadyOnTarget()) { + for (DiskImage image : images) { + imageToDestinationDomainMap.put(image.getId(), image.getStorageIds().get(0)); + } + } + } + + } 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 dcad577..cd3823e 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 @@ -157,10 +157,14 @@ addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_OVF_CONFIGURATION_NOT_SUPPORTED); return false; } - setStorageDomainId(ovfEntityData.getStorageDomainId()); - if (!validate(new StorageDomainValidator(getStorageDomain()).isDomainExistAndActive())) { - return false; + + for (DiskImage image : getVm().getImages()) { + setStorageDomainId(image.getStorageIds().get(0)); + if (!validate(new StorageDomainValidator(getStorageDomain()).isDomainExistAndActive())) { + return false; + } } + setImagesWithStoragePoolId(getStorageDomain().getStoragePoolId(), getVm().getImages()); if (!getStorageDomain().getStorageDomainType().isDataDomain()) { return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_TYPE_UNSUPPORTED, -- To view, visit http://gerrit.ovirt.org/28538 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I067b6186c2a2b7d77394e9cb0a4e8f023c168e4b 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
