tests fixed and pep8'ed

This commit is contained in:
Sandy Walsh
2011-05-17 05:27:50 -07:00
parent a490acad84
commit b4b2ee96bf
3 changed files with 21 additions and 11 deletions

View File

@@ -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]

View File

@@ -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.

View File

@@ -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]