summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSandy Walsh <sandy.walsh@rackspace.com>2011-05-17 05:27:50 -0700
committerSandy Walsh <sandy.walsh@rackspace.com>2011-05-17 05:27:50 -0700
commit7ed85c9ee57190589efcb22819783d6faf973cc3 (patch)
tree31cfcbf588dfe0abb4749955d62076a8fc4c3562
parent6bec79c4e1f5999dd69134fe15bd799e0cba9761 (diff)
tests fixed and pep8'ed
-rw-r--r--nova/scheduler/host_filter.py10
-rw-r--r--nova/scheduler/manager.py3
-rw-r--r--nova/scheduler/zone_aware_scheduler.py11
-rw-r--r--nova/tests/test_host_filter.py11
-rw-r--r--nova/virt/fake.py2
5 files changed, 23 insertions, 14 deletions
diff --git a/nova/scheduler/host_filter.py b/nova/scheduler/host_filter.py
index 8519b8b51..2b0d9af77 100644
--- a/nova/scheduler/host_filter.py
+++ b/nova/scheduler/host_filter.py
@@ -292,11 +292,15 @@ def choose_driver(driver_name=None):
class HostFilterScheduler(zone_aware_scheduler.ZoneAwareScheduler):
"""The HostFilterScheduler uses the HostFilter drivers to filter
hosts for weighing. The particular driver used may be passed in
- as an argument or the default will be used."""
+ as an argument or the default will be used.
+
+ request_spec = {'filter_driver': <Filter Driver name>,
+ 'instance_type': <InstanceType dict>}
+ """
def filter_hosts(self, num, request_spec):
"""Filter the full host list (from the ZoneManager)"""
- driver_name = request_spec.get("filter_driver", None)
+ driver_name = request_spec.get('filter_driver', None)
driver = choose_driver(driver_name)
# TODO(sandy): We're only using InstanceType-based specs
@@ -309,4 +313,4 @@ class HostFilterScheduler(zone_aware_scheduler.ZoneAwareScheduler):
def weigh_hosts(self, num, request_spec, hosts):
"""Derived classes must override this method and return
a lists of hosts in [{weight, hostname}] format."""
- return []
+ return [dict(weight=1, hostname=hostname) for host, caps in hosts]
diff --git a/nova/scheduler/manager.py b/nova/scheduler/manager.py
index 60f98b082..bd40e73c0 100644
--- a/nova/scheduler/manager.py
+++ b/nova/scheduler/manager.py
@@ -84,7 +84,8 @@ class SchedulerManager(manager.Manager):
host = self.driver.schedule(elevated, topic, *args, **kwargs)
if not host:
- LOG.debug(_("%(topic)s %(method)s handled in Scheduler") % locals())
+ LOG.debug(_("%(topic)s %(method)s handled in Scheduler")
+ % locals())
return
rpc.cast(context,
diff --git a/nova/scheduler/zone_aware_scheduler.py b/nova/scheduler/zone_aware_scheduler.py
index 2fc5f1f87..614b1bb89 100644
--- a/nova/scheduler/zone_aware_scheduler.py
+++ b/nova/scheduler/zone_aware_scheduler.py
@@ -59,20 +59,25 @@ class ZoneAwareScheduler(driver.Scheduler):
for item in build_plan:
self.provision_instance(context, topic, item)
+ # Returning None short-circuits the routing to Compute (since
+ # we've already done it here)
+ return None
+
def provision_instance(context, topic, item):
"""Create the requested instance in this Zone or a child zone."""
- pass
+ return None
def select(self, context, request_spec, *args, **kwargs):
"""Select returns a list of weights and zone/host information
corresponding to the best hosts to service the request. Any
child zone information has been encrypted so as not to reveal
anything about the children."""
- return self._schedule(context, "compute", request_spec, *args, **kwargs)
+ return self._schedule(context, "compute", request_spec,
+ *args, **kwargs)
# TODO(sandy): We're only focused on compute instances right now,
# so we don't implement the default "schedule()" method required
- # of Schedulers.
+ # of Schedulers.
def schedule(self, context, topic, request_spec, *args, **kwargs):
"""The schedule() contract requires we return the one
best-suited host for this request.
diff --git a/nova/tests/test_host_filter.py b/nova/tests/test_host_filter.py
index c029d41e6..dd2325cc6 100644
--- a/nova/tests/test_host_filter.py
+++ b/nova/tests/test_host_filter.py
@@ -85,9 +85,9 @@ class HostFilterTestCase(test.TestCase):
'nova.scheduler.host_filter.AllHostsFilter')
# Test valid driver ...
driver = host_filter.choose_driver(
- 'nova.scheduler.host_filter.FlavorFilter')
+ 'nova.scheduler.host_filter.InstanceTypeFilter')
self.assertEquals(driver._full_name(),
- 'nova.scheduler.host_filter.FlavorFilter')
+ 'nova.scheduler.host_filter.InstanceTypeFilter')
# Test invalid driver ...
try:
host_filter.choose_driver('does not exist')
@@ -103,11 +103,12 @@ class HostFilterTestCase(test.TestCase):
for host, capabilities in hosts:
self.assertTrue(host.startswith('host'))
- def test_flavor_driver(self):
- driver = host_filter.FlavorFilter()
+ def test_instance_type_driver(self):
+ driver = host_filter.InstanceTypeFilter()
# filter all hosts that can support 50 ram and 500 disk
name, cooked = driver.instance_type_to_filter(self.instance_type)
- self.assertEquals('nova.scheduler.host_filter.FlavorFilter', name)
+ self.assertEquals('nova.scheduler.host_filter.InstanceTypeFilter',
+ name)
hosts = driver.filter_hosts(self.zone_manager, cooked)
self.assertEquals(6, len(hosts))
just_hosts = [host for host, caps in hosts]
diff --git a/nova/virt/fake.py b/nova/virt/fake.py
index bf87e5ced..3bd9fbc93 100644
--- a/nova/virt/fake.py
+++ b/nova/virt/fake.py
@@ -478,5 +478,3 @@ class FakeConnection(driver.ComputeDriver):
def get_host_stats(self, refresh=False):
"""Return fake Host Status of ram, disk, network."""
return self.host_status
-
-