summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/scheduler/filters/affinity_filter.py5
-rw-r--r--nova/tests/scheduler/test_host_filters.py26
2 files changed, 30 insertions, 1 deletions
diff --git a/nova/scheduler/filters/affinity_filter.py b/nova/scheduler/filters/affinity_filter.py
index b4e1a3034..e2a38b1e6 100644
--- a/nova/scheduler/filters/affinity_filter.py
+++ b/nova/scheduler/filters/affinity_filter.py
@@ -18,7 +18,6 @@
import netaddr
from nova.compute import api as compute
-from nova import flags
from nova.scheduler import filters
@@ -39,6 +38,8 @@ class DifferentHostFilter(AffinityFilter):
me = host_state.host
affinity_uuids = scheduler_hints.get('different_host', [])
+ if isinstance(affinity_uuids, basestring):
+ affinity_uuids = [affinity_uuids]
if affinity_uuids:
return not any([i for i in affinity_uuids
if self._affinity_host(context, i) == me])
@@ -57,6 +58,8 @@ class SameHostFilter(AffinityFilter):
me = host_state.host
affinity_uuids = scheduler_hints.get('same_host', [])
+ if isinstance(affinity_uuids, basestring):
+ affinity_uuids = [affinity_uuids]
if affinity_uuids:
return any([i for i
in affinity_uuids
diff --git a/nova/tests/scheduler/test_host_filters.py b/nova/tests/scheduler/test_host_filters.py
index cb619dbac..c6fabc1b5 100644
--- a/nova/tests/scheduler/test_host_filters.py
+++ b/nova/tests/scheduler/test_host_filters.py
@@ -124,6 +124,19 @@ class HostFiltersTestCase(test.TestCase):
self.assertTrue(filt_cls.host_passes(host, filter_properties))
+ def test_affinity_different_filter_no_list_passes(self):
+ filt_cls = self.class_map['DifferentHostFilter']()
+ host = fakes.FakeHostState('host1', 'compute', {})
+ instance = fakes.FakeInstance(context=self.context,
+ params={'host': 'host2'})
+ instance_uuid = instance.uuid
+
+ filter_properties = {'context': self.context.elevated(),
+ 'scheduler_hints': {
+ 'different_host': instance_uuid}}
+
+ self.assertTrue(filt_cls.host_passes(host, filter_properties))
+
def test_affinity_different_filter_fails(self):
filt_cls = self.class_map['DifferentHostFilter']()
host = fakes.FakeHostState('host1', 'compute', {})
@@ -149,6 +162,19 @@ class HostFiltersTestCase(test.TestCase):
self.assertTrue(filt_cls.host_passes(host, filter_properties))
+ def test_affinity_same_filter_no_list_passes(self):
+ filt_cls = self.class_map['SameHostFilter']()
+ host = fakes.FakeHostState('host1', 'compute', {})
+ instance = fakes.FakeInstance(context=self.context,
+ params={'host': 'host1'})
+ instance_uuid = instance.uuid
+
+ filter_properties = {'context': self.context.elevated(),
+ 'scheduler_hints': {
+ 'same_host': instance_uuid}}
+
+ self.assertTrue(filt_cls.host_passes(host, filter_properties))
+
def test_affinity_same_filter_passes(self):
filt_cls = self.class_map['SameHostFilter']()
host = fakes.FakeHostState('host1', 'compute', {})