From 8135504faaeeb91a52da6f11ddb88768372bb673 Mon Sep 17 00:00:00 2001
From: Yikun Jiang <yikunkero@gmail.com>
Date: Thu, 12 Oct 2017 16:07:42 +0800
Subject: [PATCH] Add migration_get_by_uuid in db api.

This will be used by the migration_get_all_by_filters
method which will later be used by the MigrationAPI to
support the migrations pagination.

Part of blueprint add-pagination-and-change-since-for-migration-list

Change-Id: I12c5babaec3a09dd0c6fbb5b77060a352ea373e7
---
 nova/db/api.py            |  5 +++++
 nova/db/sqlalchemy/api.py | 12 ++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/nova/db/api.py b/nova/db/api.py
index da8d73633..9e5c9a649 100644
--- a/nova/db/api.py
+++ b/nova/db/api.py
@@ -534,6 +534,11 @@ def migration_get(context, migration_id):
     return IMPL.migration_get(context, migration_id)
 
 
+def migration_get_by_uuid(context, migration_uuid):
+    """Finds a migration by the migration uuid."""
+    return IMPL.migration_get_by_uuid(context, migration_uuid)
+
+
 def migration_get_by_id_and_instance(context, migration_id, instance_uuid):
     """Finds a migration by the migration id and the instance uuid."""
     return IMPL.migration_get_by_id_and_instance(context,
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index b67ff102d..e20c965de 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -4807,6 +4807,18 @@ def migration_get(context, id):
     return result
 
 
+@pick_context_manager_reader
+def migration_get_by_uuid(context, migration_uuid):
+    result = model_query(context, models.Migration, read_deleted="yes").\
+                     filter_by(uuid=migration_uuid).\
+                     first()
+
+    if not result:
+        raise exception.MigrationNotFound(migration_id=migration_uuid)
+
+    return result
+
+
 @pick_context_manager_reader
 def migration_get_by_id_and_instance(context, id, instance_uuid):
     result = model_query(context, models.Migration).\