summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-02-10 23:29:10 +0000
committerGerrit Code Review <review@openstack.org>2012-02-10 23:29:10 +0000
commitea872225ca46de5070d03fb6a4d2e85b45218103 (patch)
tree2645a63a4b5c34378d53b29b8e68fcf94275227d
parent3f30010b490232b31c17f6b52c0d8dbf884242a0 (diff)
parentb3a88b528648423c4854f6c9f882857fd3320365 (diff)
downloadnova-ea872225ca46de5070d03fb6a4d2e85b45218103.tar.gz
nova-ea872225ca46de5070d03fb6a4d2e85b45218103.tar.xz
nova-ea872225ca46de5070d03fb6a4d2e85b45218103.zip
Merge "Automatic confirmation of resizes on libvirt"
-rw-r--r--nova/virt/driver.py10
-rw-r--r--nova/virt/libvirt/connection.py20
2 files changed, 28 insertions, 2 deletions
diff --git a/nova/virt/driver.py b/nova/virt/driver.py
index 34ce9613b..200bada29 100644
--- a/nova/virt/driver.py
+++ b/nova/virt/driver.py
@@ -22,9 +22,17 @@ Driver base-classes:
types that support that contract
"""
+from nova import context as nova_context
+from nova import db
+from nova import flags
+from nova import log as logging
from nova.compute import power_state
+LOG = logging.getLogger("nova.virt.driver")
+FLAGS = flags.FLAGS
+
+
class InstanceInfo(object):
def __init__(self, name, state):
self.name = name
@@ -500,7 +508,7 @@ class ComputeDriver(object):
raise NotImplementedError()
def poll_unconfirmed_resizes(self, resize_confirm_window):
- """Poll for unconfirmed resizes"""
+ """Poll for unconfirmed resizes."""
# TODO(Vek): Need to pass context in for access to auth_token
raise NotImplementedError()
diff --git a/nova/virt/libvirt/connection.py b/nova/virt/libvirt/connection.py
index 0ae8dd1fb..3e8dbb8c1 100644
--- a/nova/virt/libvirt/connection.py
+++ b/nova/virt/libvirt/connection.py
@@ -688,7 +688,25 @@ class LibvirtConnection(driver.ComputeDriver):
@exception.wrap_exception()
def poll_unconfirmed_resizes(self, resize_confirm_window):
- pass
+ """Poll for unconfirmed resizes.
+
+ Look for any unconfirmed resizes that are older than
+ `resize_confirm_window` and automatically confirm them.
+ """
+ ctxt = nova_context.get_admin_context()
+ migrations = db.migration_get_all_unconfirmed(ctxt,
+ resize_confirm_window)
+
+ migrations_info = dict(migration_count=len(migrations),
+ confirm_window=FLAGS.resize_confirm_window)
+
+ if migrations_info["migration_count"] > 0:
+ LOG.info(_("Found %(migration_count)d unconfirmed migrations "
+ "older than %(confirm_window)d seconds") % migrations_info)
+
+ for migration in migrations:
+ LOG.info(_("Automatically confirming migration %d"), migration.id)
+ self.compute_api.confirm_resize(ctxt, migration.instance_uuid)
# NOTE(ilyaalekseyev): Implementation like in multinics
# for xenapi(tr3buchet)