summaryrefslogtreecommitdiffstats
path: root/nova/tests/scheduler
diff options
context:
space:
mode:
authorMark McLoughlin <markmc@redhat.com>2012-08-29 09:21:03 +0100
committerMark McLoughlin <markmc@redhat.com>2012-08-29 12:06:36 +0100
commit8cf635b08a57a9e3be2bef980ef38cf857b6525a (patch)
treedb4eb0485f03c6445db8e61274022dc43da26b50 /nova/tests/scheduler
parent6727b259af491177514f075a3db91d55810c66e4 (diff)
downloadnova-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.py5
-rw-r--r--nova/tests/scheduler/test_rpcapi.py10
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')