summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-04-22 14:18:34 +0000
committerGerrit Code Review <review@openstack.org>2015-04-22 14:18:34 +0000
commit623fc7151655d1b5efbf9b5dfb89def1e860cc85 (patch)
treef6d9b0f35a46c81471ce33c4a43c56f59117dd7e
parent5c9ced73f65201c384dcb96ebb835d836605595e (diff)
parent389368bcfe498323b369f68682babb92a5b0ca54 (diff)
downloadnova-623fc7151655d1b5efbf9b5dfb89def1e860cc85.tar.gz
Merge "Resource tracker: unable to restart nova compute" into stable/kilo
-rw-r--r--nova/compute/resource_tracker.py7
-rw-r--r--nova/tests/unit/compute/test_resource_tracker.py12
2 files changed, 16 insertions, 3 deletions
diff --git a/nova/compute/resource_tracker.py b/nova/compute/resource_tracker.py
index 7ef8ea5020..747985ea9b 100644
--- a/nova/compute/resource_tracker.py
+++ b/nova/compute/resource_tracker.py
@@ -705,10 +705,11 @@ class ResourceTracker(object):
# do some defensive filtering against bad migrations records in the
# database:
for migration in migrations:
- instance = migration.instance
-
- if not instance:
+ try:
+ instance = migration.instance
+ except exception.InstanceNotFound as e:
# migration referencing deleted instance
+ LOG.debug('Migration instance not found: %s', e)
continue
uuid = instance.uuid
diff --git a/nova/tests/unit/compute/test_resource_tracker.py b/nova/tests/unit/compute/test_resource_tracker.py
index 295b1dea97..73c8d32c19 100644
--- a/nova/tests/unit/compute/test_resource_tracker.py
+++ b/nova/tests/unit/compute/test_resource_tracker.py
@@ -1084,6 +1084,18 @@ class InstanceClaimTestCase(BaseTrackerTestCase):
self.assertEqual(0, self.tracker.compute_node['memory_mb_used'])
self.assertEqual(0, self.tracker.compute_node['local_gb_used'])
+ @mock.patch('nova.objects.MigrationList.get_in_progress_by_host_and_node')
+ def test_deleted_instances_with_migrations(self, mock_migration_list):
+ migration = objects.Migration(context=self.context,
+ instance_uuid='invalid')
+ mock_migration_list.return_value = [migration]
+ self.tracker.update_available_resource(self.context)
+ self.assertEqual(0, self.tracker.compute_node['memory_mb_used'])
+ self.assertEqual(0, self.tracker.compute_node['local_gb_used'])
+ mock_migration_list.assert_called_once_with(self.context,
+ "fakehost",
+ "fakenode")
+
class ResizeClaimTestCase(BaseTrackerTestCase):