summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-06-27 14:58:31 +0000
committerGerrit Code Review <review@openstack.org>2012-06-27 14:58:31 +0000
commitc44248c0235dc3c6c474bd2a55bb61e42194d7fb (patch)
tree9de2f0b838c1e3e7a2dc2401085d4f8782ff14d3 /nova
parentec99e30c9a61fd18ff4a936646e965bdc125180a (diff)
parent4cb634daba753ffd1f351ab69cb3ffcd23013274 (diff)
Merge "Allow single uuid to be specified for affinity."
Diffstat (limited to 'nova')
-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', {})