summaryrefslogtreecommitdiffstats
path: root/nova/db
diff options
context:
space:
mode:
authorJosh Kearney <josh@jk0.org>2011-09-14 14:38:40 -0500
committerJosh Kearney <josh@jk0.org>2011-09-14 14:38:40 -0500
commit7e379f6a77f53ad4d6ddc98fbb30cd853933bb08 (patch)
tree47ca781ab97fedf754613fa99f2198cbf5b58e89 /nova/db
parent89736bf13562811cebb42cd6e3377d7f9e0a0b9c (diff)
Initial pass at automatically confirming resizes after a given window.
Diffstat (limited to 'nova/db')
-rw-r--r--nova/db/api.py5
-rw-r--r--nova/db/sqlalchemy/api.py22
2 files changed, 24 insertions, 3 deletions
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
+
+
##################