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

Reply via email to