diff --git a/nova/scheduler/distributed_scheduler.py b/nova/scheduler/distributed_scheduler.py index 2e54461b..16e688e6 100644 --- a/nova/scheduler/distributed_scheduler.py +++ b/nova/scheduler/distributed_scheduler.py @@ -98,6 +98,10 @@ class DistributedScheduler(driver.Scheduler): if not weighted_hosts: raise exception.NoValidHost(reason=_("")) + # NOTE(comstud): Make sure we do not pass this through. It + # contains an instance of RpcContext that cannot be serialized. + kwargs.pop('filter_properties', None) + instances = [] for num in xrange(num_instances): if not weighted_hosts: @@ -141,6 +145,10 @@ class DistributedScheduler(driver.Scheduler): raise exception.NoValidHost(reason=_("")) host = hosts.pop(0) + # NOTE(comstud): Make sure we do not pass this through. It + # contains an instance of RpcContext that cannot be serialized. + kwargs.pop('filter_properties', None) + # Forward off to the host driver.cast_to_compute_host(context, host.host_state.host, 'prep_resize', **kwargs) diff --git a/nova/tests/scheduler/test_distributed_scheduler.py b/nova/tests/scheduler/test_distributed_scheduler.py index 426da044..f385ef7b 100644 --- a/nova/tests/scheduler/test_distributed_scheduler.py +++ b/nova/tests/scheduler/test_distributed_scheduler.py @@ -129,6 +129,8 @@ class DistributedSchedulerTestCase(test.TestCase): return least_cost.WeightedHost(1, zone='x', blob='y') def _fake_provision_resource_locally(*args, **kwargs): + # Tests that filter_properties is stripped + self.assertNotIn('filter_properties', kwargs) self.locally_called = True return 1 @@ -152,7 +154,8 @@ class DistributedSchedulerTestCase(test.TestCase): } fake_context = context.RequestContext('user', 'project') - instances = sched.schedule_run_instance(fake_context, request_spec) + instances = sched.schedule_run_instance(fake_context, request_spec, + filter_properties={}) self.assertTrue(instances) self.assertFalse(self.schedule_called) self.assertTrue(self.from_blob_called)