Merge "Execute _poll_shelved_instances only if shelved_offload_time is > 0"

This commit is contained in:
Jenkins 2015-07-23 19:38:54 +00:00 committed by Gerrit Code Review
commit 566f603615
2 changed files with 13 additions and 2 deletions

View File

@ -162,8 +162,8 @@ interval_opts = [
cfg.IntOpt('shelved_offload_time',
default=0,
help='Time in seconds before a shelved instance is eligible '
'for removing from a host. -1 never offload, 0 offload '
'when shelved'),
'for removing from a host. -1 never offload, 0 offload '
'immediately when shelved'),
cfg.IntOpt('instance_delete_interval',
default=300,
help='Interval in seconds for retrying failed instance file '
@ -5456,6 +5456,9 @@ class ComputeManager(manager.Manager):
@periodic_task.periodic_task(spacing=CONF.shelved_poll_interval)
def _poll_shelved_instances(self, context):
if CONF.shelved_offload_time <= 0:
return
filters = {'vm_state': vm_states.SHELVED,
'host': self.host}
shelved_instances = objects.InstanceList.get_by_filters(

View File

@ -19,6 +19,7 @@ from nova.compute import claims
from nova.compute import task_states
from nova.compute import vm_states
from nova import db
from nova import objects
from nova.tests.unit.compute import test_compute
from nova.tests.unit.image import fake as fake_image
@ -328,6 +329,13 @@ class ShelveComputeManagerTestCase(test_compute.BaseTestCase):
self.compute.unshelve_instance(self.context, instance, image=None,
filter_properties=filter_properties, node=node)
@mock.patch.object(objects.InstanceList, 'get_by_filters')
def test_shelved_poll_none_offloaded(self, mock_get_by_filters):
# Test instances are not offloaded when shelved_offload_time is -1
CONF.set_override('shelved_offload_time', -1)
self.compute._poll_shelved_instances(self.context)
self.assertEqual(0, mock_get_by_filters.call_count)
def test_shelved_poll_none_exist(self):
self.mox.StubOutWithMock(self.compute.driver, 'destroy')
self.mox.StubOutWithMock(timeutils, 'is_older_than')