diff options
author | Rick Harris <rconradharris@gmail.com> | 2012-02-08 06:52:14 +0000 |
---|---|---|
committer | Mark Washenberger <mark.washenberger@rackspace.com> | 2012-02-09 09:34:17 -0500 |
commit | f33de5c9ad6217a9daa1bafd8f1d3e71f618dda2 (patch) | |
tree | ee87897a6e8b2b6b1c045505eb4bce3ab51de20e | |
parent | 1815aaf13af1c5d6d4225fa0f8f4adb2b10548e6 (diff) | |
download | nova-f33de5c9ad6217a9daa1bafd8f1d3e71f618dda2.tar.gz nova-f33de5c9ad6217a9daa1bafd8f1d3e71f618dda2.tar.xz nova-f33de5c9ad6217a9daa1bafd8f1d3e71f618dda2.zip |
Fix confirm_resize policy handling
Fixes bug 928649
markwash:
- fixed pep8 violation
Change-Id: Ie1c3136256dac0e350e430ac7c69eba4cb98b158
-rw-r--r-- | nova/context.py | 5 | ||||
-rw-r--r-- | nova/virt/xenapi/vmops.py | 18 |
2 files changed, 21 insertions, 2 deletions
diff --git a/nova/context.py b/nova/context.py index b0c0603a8..d9735e3d2 100644 --- a/nova/context.py +++ b/nova/context.py @@ -51,6 +51,8 @@ class RequestContext(object): self.is_admin = is_admin if self.is_admin is None: self.is_admin = 'admin' in [x.lower() for x in self.roles] + elif self.is_admin and 'admin' not in self.roles: + self.roles.append('admin') self.read_deleted = read_deleted self.remote_address = remote_address if not timestamp: @@ -87,6 +89,9 @@ class RequestContext(object): context = copy.copy(self) context.is_admin = True + if 'admin' not in context.roles: + context.roles.append('admin') + if read_deleted is not None: context.read_deleted = read_deleted diff --git a/nova/virt/xenapi/vmops.py b/nova/virt/xenapi/vmops.py index 30d77369b..bdbd7d101 100644 --- a/nova/virt/xenapi/vmops.py +++ b/nova/virt/xenapi/vmops.py @@ -1372,8 +1372,22 @@ class VMOps(object): "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) + LOG.info(_("Automatically confirming migration %d"), + migration['id']) + try: + instance = self.compute_api.get(ctxt, migration.instance_uuid) + except exception.InstanceNotFound: + LOG.warn(_("Instance for migration %d not found, skipping"), + migration.id) + + # NOTE(sirp): setting to error so we don't keep trying to auto + # confirm this resize + db.migration_update( + ctxt, migration['id'], {'status': 'error'}) + + continue + else: + self.compute_api.confirm_resize(ctxt, instance) def get_info(self, instance): """Return data about VM instance.""" |