summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-09-21 21:48:12 +0000
committerGerrit Code Review <review@openstack.org>2012-09-21 21:48:12 +0000
commitf902a84576329889c40fc3fabb85abffacdcaa80 (patch)
tree1b6242bf4c075c6197b542b62fe0c8daae580472 /nova
parente7514acdc9cfa9d447bd912a918c7b88accc9926 (diff)
parent75fa03557fd6f1e7c62079e9e89556f1af139202 (diff)
downloadnova-f902a84576329889c40fc3fabb85abffacdcaa80.tar.gz
nova-f902a84576329889c40fc3fabb85abffacdcaa80.tar.xz
nova-f902a84576329889c40fc3fabb85abffacdcaa80.zip
Merge "Set volume status to error if scheduling fails."
Diffstat (limited to 'nova')
-rw-r--r--nova/scheduler/manager.py6
-rw-r--r--nova/tests/scheduler/test_scheduler.py12
2 files changed, 15 insertions, 3 deletions
diff --git a/nova/scheduler/manager.py b/nova/scheduler/manager.py
index feffb584b..824dc9eb0 100644
--- a/nova/scheduler/manager.py
+++ b/nova/scheduler/manager.py
@@ -76,9 +76,9 @@ class SchedulerManager(manager.Manager):
context, volume_id, snapshot_id, image_id)
except Exception as ex:
with excutils.save_and_reraise_exception():
- self._set_vm_state_and_notify('create_volume',
- {'vm_state': vm_states.ERROR},
- context, ex, {})
+ LOG.warning(_("Failed to schedule create_volume: %(ex)s") %
+ locals())
+ db.volume_update(context, volume_id, {'status': 'error'})
def live_migration(self, context, instance, dest,
block_migration, disk_over_commit):
diff --git a/nova/tests/scheduler/test_scheduler.py b/nova/tests/scheduler/test_scheduler.py
index 3c4a789b6..83e9cffc8 100644
--- a/nova/tests/scheduler/test_scheduler.py
+++ b/nova/tests/scheduler/test_scheduler.py
@@ -175,6 +175,18 @@ class SchedulerManagerTestCase(test.TestCase):
self.manager.run_instance(self.context, request_spec,
None, None, None, None, {})
+ def test_create_volume_no_valid_host_puts_volume_in_error(self):
+ self._mox_schedule_method_helper('schedule_create_volume')
+ self.mox.StubOutWithMock(db, 'volume_update')
+
+ self.manager.driver.schedule_create_volume(self.context, '1', '2',
+ None).AndRaise(exception.NoValidHost(reason=''))
+ db.volume_update(self.context, '1', {'status': 'error'})
+
+ self.mox.ReplayAll()
+ self.assertRaises(exception.NoValidHost, self.manager.create_volume,
+ self.context, '1', '2')
+
def test_prep_resize_no_valid_host_back_in_active_state(self):
fake_instance_uuid = 'fake-instance-id'
inst = {"vm_state": "", "task_state": ""}