diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-06-27 14:58:31 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-06-27 14:58:31 +0000 |
| commit | c44248c0235dc3c6c474bd2a55bb61e42194d7fb (patch) | |
| tree | 9de2f0b838c1e3e7a2dc2401085d4f8782ff14d3 /nova | |
| parent | ec99e30c9a61fd18ff4a936646e965bdc125180a (diff) | |
| parent | 4cb634daba753ffd1f351ab69cb3ffcd23013274 (diff) | |
Merge "Allow single uuid to be specified for affinity."
Diffstat (limited to 'nova')
| -rw-r--r-- | nova/scheduler/filters/affinity_filter.py | 5 | ||||
| -rw-r--r-- | nova/tests/scheduler/test_host_filters.py | 26 |
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', {}) |
