Daniel Erez has uploaded a new change for review. Change subject: core: fix commit snapshot flow on active vm commit ......................................................................
core: fix commit snapshot flow on active vm commit * RestoreAllSnapshotsCommand -> getSnapshot method: - COMMIT branch: get IN_PREVIEW snapshot by status. * SnapshotDao: - Added a new getter for fetching snapshots only by status. * snapshot_sp.sql: - Added GetSnapshotByVmIdAndStatus stored procedure. Change-Id: Ib27d225b7bf584f1d0c6e2861e91403ba205f087 Bug-Url: https://bugzilla.redhat.com/1093047 Signed-off-by: Daniel Erez <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RestoreAllSnapshotCommandTest.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/SnapshotDao.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/SnapshotDaoDbFacadeImpl.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/SnapshotDaoTest.java M packaging/dbscripts/snapshots_sp.sql 6 files changed, 51 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/97/27297/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java index 67239f1..8490a5e 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java @@ -127,7 +127,7 @@ snapshot = getSnapshotDao().get(getVmId(), SnapshotType.PREVIEW); break; case COMMIT: - snapshot = getSnapshotDao().get(getVmId(), SnapshotType.REGULAR, SnapshotStatus.IN_PREVIEW); + snapshot = getSnapshotDao().get(getVmId(), SnapshotStatus.IN_PREVIEW); break; case RESTORE_STATELESS: snapshot = getSnapshotDao().get(getVmId(), SnapshotType.STATELESS); diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RestoreAllSnapshotCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RestoreAllSnapshotCommandTest.java index 98f80ea..09fb7e0 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RestoreAllSnapshotCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RestoreAllSnapshotCommandTest.java @@ -150,6 +150,7 @@ mockSnapshot.setType(SnapshotType.STATELESS); when(snapshotDao.get(any(Guid.class), any(SnapshotType.class), any(SnapshotStatus.class))).thenReturn(mockSnapshot); when(snapshotDao.get(any(Guid.class), any(SnapshotType.class))).thenReturn(mockSnapshot); + when(snapshotDao.get(any(Guid.class), any(SnapshotStatus.class))).thenReturn(mockSnapshot); } private void initSpyCommand() { diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/SnapshotDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/SnapshotDao.java index ff5a87e..cbcd212 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/SnapshotDao.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/SnapshotDao.java @@ -77,6 +77,19 @@ Snapshot get(Guid vmId, SnapshotType type, SnapshotStatus status); /** + * Return the <b>first</b> {@link Snapshot} that matches the given parameters.<br> + * <b>Note:</b> If more than one snapshot answers to the parameters, only the first will be returned (oldest by + * creation date). + * + * @param vmId + * The id of the VM to check for. + * @param status + * The status of the snapshot. + * @return The snapshot, or <code>null</code> if it doesn't exist. + */ + Snapshot get(Guid vmId, SnapshotStatus status); + + /** * Return the {@link Snapshot} <b>first</b> id that matches the given parameters.<br> * <b>Note:</b> If more than one snapshot answers to the parameters, only the first will be returned (oldest by * creation date). diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/SnapshotDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/SnapshotDaoDbFacadeImpl.java index 4abefb1..553f9d4 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/SnapshotDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/SnapshotDaoDbFacadeImpl.java @@ -214,6 +214,17 @@ } @Override + public Snapshot get(Guid vmId, SnapshotStatus status) { + MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() + .addValue("vm_id", vmId) + .addValue("status", EnumUtils.nameOrNull(status)); + + return getCallsHandler().executeRead("GetSnapshotByVmIdAndStatus", + createEntityRowMapper(), + parameterSource); + } + + @Override public int getNumOfSnapshotsByMemory(String memoryVolume) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("memory_volume", getNullableRepresentation(memoryVolume)); diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/SnapshotDaoTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/SnapshotDaoTest.java index ecc28a2..0c5c22f 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/SnapshotDaoTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/SnapshotDaoTest.java @@ -130,6 +130,16 @@ } @Test + public void getSnaphsotByTypeReturnsIdForExistingByStatus() throws Exception { + assertNotNull(dao.get(EXISTING_VM_ID, SnapshotStatus.OK)); + } + + @Test + public void getSnaphsotByTypeReturnsIdForNotExistingByStatus() throws Exception { + assertNull(dao.get(EXISTING_VM_ID, SnapshotStatus.IN_PREVIEW)); + } + + @Test public void getSnaphsotByTypeAndStatusForExistingEntity() throws Exception { assertEquals(existingEntity, dao.get(EXISTING_VM_ID, SnapshotType.REGULAR, SnapshotStatus.OK)); } diff --git a/packaging/dbscripts/snapshots_sp.sql b/packaging/dbscripts/snapshots_sp.sql index a270966..506d3d8 100644 --- a/packaging/dbscripts/snapshots_sp.sql +++ b/packaging/dbscripts/snapshots_sp.sql @@ -173,6 +173,21 @@ LANGUAGE plpgsql; +Create or replace FUNCTION GetSnapshotByVmIdAndStatus( + v_vm_id UUID, + v_status VARCHAR(32)) +RETURNS SETOF snapshots STABLE +AS $procedure$ +BEGIN + RETURN QUERY + SELECT * + FROM snapshots + WHERE vm_id = v_vm_id + AND status = v_status + ORDER BY creation_date ASC + LIMIT 1; +END; $procedure$ +LANGUAGE plpgsql; -- To view, visit http://gerrit.ovirt.org/27297 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib27d225b7bf584f1d0c6e2861e91403ba205f087 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.4 Gerrit-Owner: Daniel Erez <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
