Maor Lipchuk has uploaded a new change for review. Change subject: core: Add snapshot to the OVF generation ......................................................................
core: Add snapshot to the OVF generation Adding also snapshots when building the VM OVF. We are already incrementing the generation in the end command when deleting/creating a new snapshot Change-Id: I8ba05c2e362fb9b22d6b4fb5a14698ad99d7bd1e Bug-Url: https://bugzilla.redhat.com/1069780 Signed-off-by: Maor Lipchuk <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfDataUpdater.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/OvfDataUpdaterTest.java 2 files changed, 29 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/47/25947/1 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 12e3b26..ddfda87 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 @@ -19,6 +19,8 @@ import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.ImageStatus; +import org.ovirt.engine.core.common.businessentities.Snapshot; +import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotStatus; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo; import org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfoStatus; @@ -43,6 +45,7 @@ import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase; +import org.ovirt.engine.core.dao.SnapshotDao; import org.ovirt.engine.core.dao.StorageDomainDAO; import org.ovirt.engine.core.dao.StorageDomainOvfInfoDao; import org.ovirt.engine.core.dao.StoragePoolDAO; @@ -368,7 +371,8 @@ for (VM vm : vms) { if (VMStatus.ImageLocked != vm.getStatus()) { updateVmDisksFromDb(vm); - if (verifyDisksNotLocked(vm.getDiskList())) { + vm.setSnapshots(getSnapshotDao().getAllWithConfiguration(vm.getId())); + if (verifyDisksNotLocked(vm.getDiskList()) && verifySnapshotsNotLocked(vm.getSnapshots())) { loadVmData(vm); Long currentDbGeneration = getVmStaticDao().getDbGeneration(vm.getId()); // currentDbGeneration can be null in case that the vm was deleted during the run of OvfDataUpdater. @@ -396,6 +400,18 @@ protected boolean verifyDisksNotLocked(List<DiskImage> disks) { for (DiskImage disk : disks) { if (disk.getImageStatus() == ImageStatus.LOCKED) { + return false; + } + } + return true; + } + + /** + * Returns true if none of the given snapshots is in status 'LOCKED', otherwise false. + */ + protected boolean verifySnapshotsNotLocked(List<Snapshot> snapshots) { + for (Snapshot snapshot : snapshots) { + if (snapshot.getStatus() == SnapshotStatus.LOCKED) { return false; } } @@ -515,6 +531,10 @@ return DbFacade.getInstance().getVmStaticDao(); } + protected SnapshotDao getSnapshotDao() { + return DbFacade.getInstance().getSnapshotDao(); + } + /** * Init the lists contain the processed info. */ diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/OvfDataUpdaterTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/OvfDataUpdaterTest.java index 128223e..8597a74 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/OvfDataUpdaterTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/OvfDataUpdaterTest.java @@ -38,6 +38,7 @@ import org.mockito.stubbing.Answer; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.ImageStatus; +import org.ovirt.engine.core.common.businessentities.Snapshot; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfo; import org.ovirt.engine.core.common.businessentities.StorageDomainOvfInfoStatus; @@ -55,6 +56,7 @@ import org.ovirt.engine.core.common.utils.Pair; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.KeyValuePairCompat; +import org.ovirt.engine.core.dao.SnapshotDao; import org.ovirt.engine.core.dao.StorageDomainDAO; import org.ovirt.engine.core.dao.StorageDomainOvfInfoDao; import org.ovirt.engine.core.dao.StoragePoolDAO; @@ -82,6 +84,9 @@ @Mock private VmStaticDAO vmStaticDAO; + + @Mock + private SnapshotDao snapshotDAO; @Mock private VmTemplateDAO vmTemplateDAO; @@ -129,6 +134,7 @@ doReturn(vmAndTemplatesGenerationsDAO).when(updater).getVmAndTemplatesGenerationsDao(); doReturn(vmDAO).when(updater).getVmDao(); doReturn(vmStaticDAO).when(updater).getVmStaticDao(); + doReturn(snapshotDAO).when(updater).getSnapshotDao(); doReturn(vmTemplateDAO).when(updater).getVmTemplateDao(); doReturn(storageDomainOvfInfoDao).when(updater).getStorageDomainOvfInfoDao(); doReturn(storageDomainDAO).when(updater).getStorageDomainDao(); @@ -145,6 +151,8 @@ // dao related mocks. doReturn(1L).when(vmStaticDAO).getDbGeneration(any(Guid.class)); + List<Snapshot> snapshots = new ArrayList<Snapshot>(); + doReturn(snapshots).when(snapshotDAO).getAllWithConfiguration(any(Guid.class)); mockAnswers(); } -- To view, visit http://gerrit.ovirt.org/25947 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8ba05c2e362fb9b22d6b4fb5a14698ad99d7bd1e 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
