diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-02-10 23:29:10 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-02-10 23:29:10 +0000 |
| commit | ea872225ca46de5070d03fb6a4d2e85b45218103 (patch) | |
| tree | 2645a63a4b5c34378d53b29b8e68fcf94275227d | |
| parent | 3f30010b490232b31c17f6b52c0d8dbf884242a0 (diff) | |
| parent | b3a88b528648423c4854f6c9f882857fd3320365 (diff) | |
| download | nova-ea872225ca46de5070d03fb6a4d2e85b45218103.tar.gz nova-ea872225ca46de5070d03fb6a4d2e85b45218103.tar.xz nova-ea872225ca46de5070d03fb6a4d2e85b45218103.zip | |
Merge "Automatic confirmation of resizes on libvirt"
| -rw-r--r-- | nova/virt/driver.py | 10 | ||||
| -rw-r--r-- | nova/virt/libvirt/connection.py | 20 |
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) |
