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

Reply via email to