diff options
author | Mark McLoughlin <markmc@redhat.com> | 2012-08-29 09:21:03 +0100 |
---|---|---|
committer | Mark McLoughlin <markmc@redhat.com> | 2012-08-29 12:06:36 +0100 |
commit | 8cf635b08a57a9e3be2bef980ef38cf857b6525a (patch) | |
tree | db4eb0485f03c6445db8e61274022dc43da26b50 /nova/tests/scheduler | |
parent | 6727b259af491177514f075a3db91d55810c66e4 (diff) | |
download | nova-8cf635b08a57a9e3be2bef980ef38cf857b6525a.tar.gz nova-8cf635b08a57a9e3be2bef980ef38cf857b6525a.tar.xz nova-8cf635b08a57a9e3be2bef980ef38cf857b6525a.zip |
Stop using scheduler RPC API magic
If a scheduler RPC message isn't handled directly by a SchedulerManager
method, the __getattr__() fallback passes the message to a driver
method in the form of schedule_${method}() and, if that doesn't exist,
instead calls the schedule() method supplying the topic and method
args.
This is pretty bizarre stuff and we appear to only use it in two cases:
1) live_migration - this is how the schedule_live_migration()
method in the driver gets called, but the side-effect is that
we require the client to pass a topic argument which is never
used. This would be much more sanely handled with an explicit
SchedulerManager.live_migration() method.
2) create_volume - the volume API asks the scheduler to pick a
target host for create_volume() using this method. This would
be easily handled with an SchedulerManager.create_volume()
method.
Change-Id: I1047489d85ac51d8d36fea1c4eb858df638ce349
Diffstat (limited to 'nova/tests/scheduler')
-rw-r--r-- | nova/tests/scheduler/test_multi_scheduler.py | 5 | ||||
-rw-r--r-- | nova/tests/scheduler/test_rpcapi.py | 10 |
2 files changed, 9 insertions, 6 deletions
diff --git a/nova/tests/scheduler/test_multi_scheduler.py b/nova/tests/scheduler/test_multi_scheduler.py index fd79fffb3..6fce5bc35 100644 --- a/nova/tests/scheduler/test_multi_scheduler.py +++ b/nova/tests/scheduler/test_multi_scheduler.py @@ -46,9 +46,6 @@ class FakeVolumeScheduler(driver.Scheduler): super(FakeVolumeScheduler, self).__init__() self.is_update_caps_called = False - def schedule_create_volume(self, *args, **kwargs): - pass - def schedule_create_volumes(self, *args, **kwargs): pass @@ -97,7 +94,7 @@ class MultiDriverTestCase(test_scheduler.SchedulerTestCase): #no compute methods are proxied at this time test_methods = {compute_driver: [], - volume_driver: ['create_volume', 'create_volumes']} + volume_driver: ['create_volumes']} for driver, methods in test_methods.iteritems(): for method in methods: diff --git a/nova/tests/scheduler/test_rpcapi.py b/nova/tests/scheduler/test_rpcapi.py index a2fee64b2..95133622b 100644 --- a/nova/tests/scheduler/test_rpcapi.py +++ b/nova/tests/scheduler/test_rpcapi.py @@ -86,10 +86,16 @@ class SchedulerRpcAPITestCase(test.TestCase): self._test_scheduler_api('live_migration', rpc_method='call', block_migration='fake_block_migration', disk_over_commit='fake_disk_over_commit', - instance='fake_instance', dest='fake_dest', topic='fake_topic', - version='1.3') + instance='fake_instance', dest='fake_dest', + version='1.7') def test_update_service_capabilities(self): self._test_scheduler_api('update_service_capabilities', rpc_method='fanout_cast', service_name='fake_name', host='fake_host', capabilities='fake_capabilities') + + def test_create_volume(self): + self._test_scheduler_api('create_volume', + rpc_method='cast', volume_id="fake_volume", + snapshot_id="fake_snapshots", reservations=list('fake_res'), + version='1.7') |