Use instance_properties in resize.
This just makes resize behave a bit more like create, which is useful for custom filtering. Change-Id: I10ba726712d8f601f5ee97e0bb033bd7339a7a88
This commit is contained in:
@@ -394,10 +394,12 @@ class DistributedScheduler(driver.Scheduler):
|
|||||||
selected_filters = self._choose_host_filters()
|
selected_filters = self._choose_host_filters()
|
||||||
|
|
||||||
# Filter out original host
|
# Filter out original host
|
||||||
if ('original_host' in request_spec and
|
try:
|
||||||
request_spec.get('avoid_original_host', True)):
|
if request_spec['avoid_original_host']:
|
||||||
hosts = [(h, hi) for h, hi in hosts
|
original_host = request_spec['instance_properties']['host']
|
||||||
if h != request_spec['original_host']]
|
hosts = [(h, hi) for h, hi in hosts if h != original_host]
|
||||||
|
except (KeyError, TypeError):
|
||||||
|
pass
|
||||||
|
|
||||||
# TODO(sandy): We're only using InstanceType-based specs
|
# TODO(sandy): We're only using InstanceType-based specs
|
||||||
# currently. Later we'll need to snoop for more detailed
|
# currently. Later we'll need to snoop for more detailed
|
||||||
|
|||||||
@@ -313,7 +313,7 @@ class DistributedSchedulerTestCase(test.TestCase):
|
|||||||
_fake_choose_host_filters)
|
_fake_choose_host_filters)
|
||||||
|
|
||||||
hosts = [('host1', '1info'), ('host2', '2info'), ('host3', '3info')]
|
hosts = [('host1', '1info'), ('host2', '2info'), ('host3', '3info')]
|
||||||
request_spec = dict(original_host='host2',
|
request_spec = dict(instance_properties=dict(host='host2'),
|
||||||
avoid_original_host=True)
|
avoid_original_host=True)
|
||||||
|
|
||||||
filtered = sched._filter_hosts('compute', request_spec, hosts, {})
|
filtered = sched._filter_hosts('compute', request_spec, hosts, {})
|
||||||
@@ -333,7 +333,7 @@ class DistributedSchedulerTestCase(test.TestCase):
|
|||||||
_fake_choose_host_filters)
|
_fake_choose_host_filters)
|
||||||
|
|
||||||
hosts = [('host1', '1info'), ('host2', '2info'), ('host3', '3info')]
|
hosts = [('host1', '1info'), ('host2', '2info'), ('host3', '3info')]
|
||||||
request_spec = dict(original_host='host2',
|
request_spec = dict(instance_properties=dict(host='host2'),
|
||||||
avoid_original_host=False)
|
avoid_original_host=False)
|
||||||
|
|
||||||
filtered = sched._filter_hosts('compute', request_spec, hosts, {})
|
filtered = sched._filter_hosts('compute', request_spec, hosts, {})
|
||||||
|
|||||||
@@ -2060,7 +2060,8 @@ class ComputeAPITestCase(BaseTestCase):
|
|||||||
def test_resize_request_spec(self):
|
def test_resize_request_spec(self):
|
||||||
def _fake_cast(context, args):
|
def _fake_cast(context, args):
|
||||||
request_spec = args['args']['request_spec']
|
request_spec = args['args']['request_spec']
|
||||||
self.assertEqual(request_spec['original_host'], 'host2')
|
instance_properties = request_spec['instance_properties']
|
||||||
|
self.assertEqual(instance_properties['host'], 'host2')
|
||||||
self.assertEqual(request_spec['avoid_original_host'], True)
|
self.assertEqual(request_spec['avoid_original_host'], True)
|
||||||
|
|
||||||
self.stubs.Set(self.compute_api, '_cast_scheduler_message',
|
self.stubs.Set(self.compute_api, '_cast_scheduler_message',
|
||||||
@@ -2078,7 +2079,8 @@ class ComputeAPITestCase(BaseTestCase):
|
|||||||
def test_resize_request_spec_noavoid(self):
|
def test_resize_request_spec_noavoid(self):
|
||||||
def _fake_cast(context, args):
|
def _fake_cast(context, args):
|
||||||
request_spec = args['args']['request_spec']
|
request_spec = args['args']['request_spec']
|
||||||
self.assertEqual(request_spec['original_host'], 'host2')
|
instance_properties = request_spec['instance_properties']
|
||||||
|
self.assertEqual(instance_properties['host'], 'host2')
|
||||||
self.assertEqual(request_spec['avoid_original_host'], False)
|
self.assertEqual(request_spec['avoid_original_host'], False)
|
||||||
|
|
||||||
self.stubs.Set(self.compute_api, '_cast_scheduler_message',
|
self.stubs.Set(self.compute_api, '_cast_scheduler_message',
|
||||||
|
|||||||
Reference in New Issue
Block a user