Liron Ar has uploaded a new change for review. Change subject: core: OvfManager - package and functionality ......................................................................
core: OvfManager - package and functionality 1. Added to OvfManager a method that returns an "assembled" vm object, rather then a objects lists that each caller is responsible to create vm from. 2. OvfManager was moved to the bll from utils, as it contains bll logic. Change-Id: I3bfc4094178d90e7b0583db4e427fc2b195a367d Signed-off-by: Liron Aravot <[email protected]> --- 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/OvfDataUpdater.java R backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfManager.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetTemplatesFromExportDomainQuery.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetVmsFromExportDomainQuery.java R backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/OvfManagerTest.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveImageCommandTest.java 9 files changed, 41 insertions(+), 42 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/26/15626/1 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 a66588b..766946e 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 @@ -51,7 +51,6 @@ import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.utils.linq.LinqUtils; import org.ovirt.engine.core.utils.linq.Predicate; -import org.ovirt.engine.core.utils.ovf.OvfManager; import org.ovirt.engine.core.utils.transaction.TransactionMethod; import org.ovirt.engine.core.utils.transaction.TransactionSupport; diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfDataUpdater.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfDataUpdater.java index ddc6c4f..94dcf3e 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfDataUpdater.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfDataUpdater.java @@ -39,7 +39,6 @@ import org.ovirt.engine.core.utils.linq.LinqUtils; import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; -import org.ovirt.engine.core.utils.ovf.OvfManager; import org.ovirt.engine.core.utils.timer.OnTimerMethodAnnotation; import org.ovirt.engine.core.utils.timer.SchedulerUtil; import org.ovirt.engine.core.utils.timer.SchedulerUtilQuartzImpl; diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfManager.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfManager.java similarity index 67% rename from backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfManager.java rename to backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfManager.java index d0a4e4a..04be059b 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfManager.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfManager.java @@ -1,7 +1,8 @@ -package org.ovirt.engine.core.utils.ovf; +package org.ovirt.engine.core.bll; import java.util.ArrayList; import java.util.List; +import java.util.Map; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.VM; @@ -10,6 +11,15 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.core.compat.backendcompat.XmlDocument; +import org.ovirt.engine.core.utils.ovf.IOvfBuilder; +import org.ovirt.engine.core.utils.ovf.OvfParser; +import org.ovirt.engine.core.utils.ovf.OvfReader; +import org.ovirt.engine.core.utils.ovf.OvfReaderException; +import org.ovirt.engine.core.utils.ovf.OvfTemplateReader; +import org.ovirt.engine.core.utils.ovf.OvfTemplateWriter; +import org.ovirt.engine.core.utils.ovf.OvfVmReader; +import org.ovirt.engine.core.utils.ovf.OvfVmWriter; +import org.ovirt.engine.core.utils.ovf.OvfWriter; public class OvfManager { @@ -66,6 +76,28 @@ } } + public VM readVmFromOvf(String ovf) throws OvfReaderException{ + VM toReturn = new VM(); + ArrayList<DiskImage> diskImages = new ArrayList<DiskImage>(); + ArrayList<VmNetworkInterface> interfaces = new ArrayList<VmNetworkInterface>(); + ImportVm(ovf, toReturn, diskImages, interfaces); + + // add images + toReturn.setImages(diskImages); + // add interfaces + toReturn.setInterfaces(interfaces); + + // add disk map + Map<Guid, List<DiskImage>> images = ImagesHandler + .getImagesLeaf(diskImages); + for (Guid id : images.keySet()) { + List<DiskImage> list = images.get(id); + toReturn.getDiskMap().put(id, list.get(list.size() - 1)); + } + + return toReturn; + } + public boolean IsOvfTemplate(String ovfstring) { return new OvfParser(ovfstring).IsTemplate(); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java index 96479a3..6306007 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java @@ -18,7 +18,6 @@ import org.ovirt.engine.core.common.businessentities.Snapshot; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VmDeviceId; -import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.errors.VdcBLLException; import org.ovirt.engine.core.common.errors.VdcBllErrors; import org.ovirt.engine.core.common.errors.VdcBllMessages; @@ -32,7 +31,6 @@ import org.ovirt.engine.core.compat.TransactionScopeOption; import org.ovirt.engine.core.dao.VmDeviceDAO; import org.ovirt.engine.core.utils.lock.EngineLock; -import org.ovirt.engine.core.utils.ovf.OvfManager; import org.ovirt.engine.core.utils.ovf.OvfReaderException; import org.ovirt.engine.core.utils.transaction.TransactionMethod; import org.ovirt.engine.core.utils.transaction.TransactionSupport; @@ -243,16 +241,10 @@ String snapConfig = snap.getVmConfiguration(); if (snap.isVmConfigurationAvailable() && snapConfig != null) { - VM vmSnapshot = new VM(); - ArrayList<DiskImage> snapshotImages = new ArrayList<DiskImage>(); - - ovfManager.ImportVm(snapConfig, - vmSnapshot, - snapshotImages, - new ArrayList<VmNetworkInterface>()); + VM vmSnapshot = ovfManager.readVmFromOvf(snapConfig); // Remove the image form the disk list - Iterator<DiskImage> diskIter = snapshotImages.iterator(); + Iterator<DiskImage> diskIter = vmSnapshot.getImages().iterator(); while (diskIter.hasNext()) { DiskImage imageInList = diskIter.next(); if (imageInList.getImageId().equals(imageId)) { @@ -262,7 +254,7 @@ } } - String newOvf = ovfManager.ExportVm(vmSnapshot, snapshotImages, ClusterUtils.getCompatibilityVersion(vmSnapshot)); + String newOvf = ovfManager.ExportVm(vmSnapshot, vmSnapshot.getImages(), ClusterUtils.getCompatibilityVersion(vmSnapshot)); snap.setVmConfiguration(newOvf); } } catch (OvfReaderException e) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.java index 5428bfe..671642b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/SnapshotsManager.java @@ -6,6 +6,7 @@ import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.bll.ImagesHandler; +import org.ovirt.engine.core.bll.OvfManager; import org.ovirt.engine.core.bll.context.CompensationContext; import org.ovirt.engine.core.bll.network.VmInterfaceManager; import org.ovirt.engine.core.bll.utils.ClusterUtils; @@ -41,7 +42,6 @@ import org.ovirt.engine.core.dao.network.VmNetworkInterfaceDao; import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; -import org.ovirt.engine.core.utils.ovf.OvfManager; import org.ovirt.engine.core.utils.ovf.OvfReaderException; import org.ovirt.engine.core.utils.ovf.VMStaticOvfLogHandler; diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetTemplatesFromExportDomainQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetTemplatesFromExportDomainQuery.java index e61a496..69181d5 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetTemplatesFromExportDomainQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetTemplatesFromExportDomainQuery.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Map; +import org.ovirt.engine.core.bll.OvfManager; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.VmTemplate; @@ -12,7 +13,6 @@ import org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParameters; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase; -import org.ovirt.engine.core.utils.ovf.OvfManager; import org.ovirt.engine.core.utils.ovf.OvfReaderException; public class GetTemplatesFromExportDomainQuery<P extends GetAllFromExportDomainQueryParameters> diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetVmsFromExportDomainQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetVmsFromExportDomainQuery.java index 2aa2e95..ed02ce4 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetVmsFromExportDomainQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetVmsFromExportDomainQuery.java @@ -2,18 +2,13 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; -import org.ovirt.engine.core.bll.ImportVmCommand; +import org.ovirt.engine.core.bll.OvfManager; import org.ovirt.engine.core.common.AuditLogType; -import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.VM; -import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParameters; -import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase; -import org.ovirt.engine.core.utils.ovf.OvfManager; import org.ovirt.engine.core.utils.ovf.OvfReaderException; public class GetVmsFromExportDomainQuery<P extends GetAllFromExportDomainQueryParameters> @@ -31,24 +26,7 @@ for (String ovf : ovfList) { try { if (!ovfManager.IsOvfTemplate(ovf)) { - VM vm = new VM(); - ArrayList<DiskImage> diskImages = new ArrayList<DiskImage>(); - ArrayList<VmNetworkInterface> interfaces = new ArrayList<VmNetworkInterface>(); - ovfManager.ImportVm(ovf, vm, diskImages, interfaces); - - // add images - vm.setImages(diskImages); - // add interfaces - vm.setInterfaces(interfaces); - - // add disk map - Map<Guid, List<DiskImage>> images = ImportVmCommand - .getImagesLeaf(diskImages); - for (Guid id : images.keySet()) { - List<DiskImage> list = images.get(id); - vm.getDiskMap().put(id, list.get(list.size() - 1)); - } - vms.add(vm); + vms.add(ovfManager.readVmFromOvf(ovf)); } } catch (OvfReaderException ex) { AuditLogableBase logable = new AuditLogableBase(); diff --git a/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/ovf/OvfManagerTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/OvfManagerTest.java similarity index 99% rename from backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/ovf/OvfManagerTest.java rename to backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/OvfManagerTest.java index 3531284..7b26964 100644 --- a/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/ovf/OvfManagerTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/OvfManagerTest.java @@ -1,4 +1,4 @@ -package org.ovirt.engine.core.utils.ovf; +package org.ovirt.engine.core.bll; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveImageCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveImageCommandTest.java index 4b17d1c..a096253 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveImageCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveImageCommandTest.java @@ -34,7 +34,6 @@ import org.ovirt.engine.core.utils.MockConfigRule; import org.ovirt.engine.core.utils.RandomUtils; import org.ovirt.engine.core.utils.RandomUtilsSeedingRule; -import org.ovirt.engine.core.utils.ovf.OvfManager; import org.ovirt.engine.core.utils.ovf.OvfReaderException; @RunWith(MockitoJUnitRunner.class) -- To view, visit http://gerrit.ovirt.org/15626 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3bfc4094178d90e7b0583db4e427fc2b195a367d Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Liron Ar <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
