Arik Hadas has uploaded a new change for review. Change subject: core: import from external system ......................................................................
core: import from external system Change-Id: I7bc67ff237d5c01fc5f3c9f21c822573e5db32a3 Signed-off-by: Arik Hadas <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromExternalSystem.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ImportExternalVmParameters.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RemoteImportSource.java 3 files changed, 126 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/55/33055/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromExternalSystem.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromExternalSystem.java new file mode 100644 index 0000000..16081e1 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromExternalSystem.java @@ -0,0 +1,93 @@ +package org.ovirt.engine.core.bll; + +import java.util.ArrayList; +import java.util.List; + +import org.ovirt.engine.core.bll.context.CommandContext; +import org.ovirt.engine.core.bll.quota.QuotaConsumptionParameter; +import org.ovirt.engine.core.bll.quota.QuotaStorageDependent; +import org.ovirt.engine.core.bll.tasks.interfaces.CommandCallBack; +import org.ovirt.engine.core.common.action.ImportExternalVmParameters; +import org.ovirt.engine.core.common.businessentities.DiskImage; +import org.ovirt.engine.core.common.businessentities.StorageType; +import org.ovirt.engine.core.common.businessentities.VolumeFormat; +import org.ovirt.engine.core.common.businessentities.VolumeType; +import org.ovirt.engine.core.common.vdscommands.CreateImageVDSCommandParameters; +import org.ovirt.engine.core.common.vdscommands.VDSCommandType; +import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; +import org.ovirt.engine.core.compat.Guid; + +@NonTransactiveCommandAttribute +public class ImportVmFromExternalSystem<T extends ImportExternalVmParameters> extends ImportVmCommandBase<T> +implements QuotaStorageDependent { + + protected ImportVmFromExternalSystem(T parameters) { + super(parameters); + } + + protected ImportVmFromExternalSystem(T parameters, CommandContext cmdContext) { + super(parameters, cmdContext); + } + + @Override + public List<QuotaConsumptionParameter> getQuotaStorageConsumptionParameters() { + List<QuotaConsumptionParameter> list = new ArrayList<>(); + return list; + } + + @Override + protected void copyImages() { + for (DiskImage image : getVm().getImages()) { + getParameters().addMapping(image.getId(), Guid.newGuid(), Guid.newGuid()); + } + + for (DiskImage image : getVm().getImages()) { + createImage(image); + } + + if (getReturnValue().getVdsmTaskIdList().isEmpty()) { + endSuccessfully(); + } + } + + private boolean createImage(DiskImage image) { + final VDSReturnValue ret1 = runVdsCommand( + VDSCommandType.CreateImage, + new CreateImageVDSCommandParameters( + getStoragePoolId(), + getVdsGroupId(), + getParameters().getDestDiskId(image.getId()), + image.getSize(), + getMemoryVolumeType(), + VolumeFormat.RAW, + getParameters().getDestVolId(image.getId()), + "")); + + if (!ret1.getSucceeded()) { + return false; + } + + return true; + } + + private VolumeType getMemoryVolumeType() { + return getMemoryVolumeTypeForStorageDomain(getStorageDomain().getStorageType()); + } + + public static VolumeType getMemoryVolumeTypeForStorageDomain(StorageType storageType) { + return storageType.isFileDomain() ? VolumeType.Sparse : VolumeType.Preallocated; + } + + @Override + protected void endSuccessfully() { + // use coco to execute the v2v call + } + + @Override + public CommandCallBack getCallBack() { + return super.getCallBack(); + } + + private class ImportVmFromExternalSystemCallback extends CommandCallBack { + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ImportExternalVmParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ImportExternalVmParameters.java new file mode 100644 index 0000000..838a8ff --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/ImportExternalVmParameters.java @@ -0,0 +1,25 @@ +package org.ovirt.engine.core.common.action; + +import java.util.HashMap; +import java.util.Map; + +import org.ovirt.engine.core.compat.Guid; + +public class ImportExternalVmParameters extends ImportVmParameters { + + Map<Guid, Guid> originalDiskGuidToDestDiskGuid = new HashMap<Guid, Guid>(); + Map<Guid, Guid> originalDiskGuidToDestVolGuid = new HashMap<Guid, Guid>(); + + public void addMapping(Guid originalDisk, Guid disk, Guid volume) { + originalDiskGuidToDestDiskGuid.put(originalDisk, disk); + originalDiskGuidToDestVolGuid.put(originalDisk, volume); + } + + public Guid getDestDiskId(Guid originalDiskId) { + return originalDiskGuidToDestDiskGuid.get(originalDiskId); + } + + public Guid getDestVolId(Guid originalDiskId) { + return originalDiskGuidToDestVolGuid.get(originalDiskId); + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RemoteImportSource.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RemoteImportSource.java new file mode 100644 index 0000000..8dfb8cb --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RemoteImportSource.java @@ -0,0 +1,8 @@ +package org.ovirt.engine.core.common.action; + +public class RemoteImportSource { + + private String url; + private String username; + private String password; +} -- To view, visit http://gerrit.ovirt.org/33055 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7bc67ff237d5c01fc5f3c9f21c822573e5db32a3 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Arik Hadas <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
