diff --git a/nova/db/api.py b/nova/db/api.py
index a9d2dc065..53cdc42c2 100644
--- a/nova/db/api.py
+++ b/nova/db/api.py
@@ -321,6 +321,11 @@ def migration_get_by_instance_and_status(context, instance_uuid, status):
             status)
 
 
+def migration_get_all_unconfirmed(context, confirm_window):
+    """Finds all unconfirmed migrations within the confirmation window."""
+    return IMPL.migration_get_all_unconfirmed(context, confirm_window)
+
+
 ####################
 
 
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index e5a661c7f..58e6aef6e 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -15,9 +15,10 @@
 #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 #    License for the specific language governing permissions and limitations
 #    under the License.
-"""
-Implementation of SQLAlchemy backend.
-"""
+
+"""Implementation of SQLAlchemy backend."""
+
+import datetime
 import re
 import warnings
 
@@ -3194,6 +3195,21 @@ def migration_get_by_instance_and_status(context, instance_uuid, status):
     return result
 
 
+@require_admin_context
+def migration_get_all_unconfirmed(context, confirm_window, session=None):
+    confirm_window = datetime.datetime.utcnow() - datetime.timedelta(
+            seconds=confirm_window)
+
+    if not session:
+        session = get_session()
+
+    results = session.query(models.Migration).\
+            filter(models.Migration.updated_at <= confirm_window).\
+            filter_by(status="VERIFY_RESIZE").all()
+
+    return results
+
+
 ##################