Merge "Allow some instance polling periodic tasks to hit db slave"
This commit is contained in:
commit
2556264da3
@ -4492,7 +4492,7 @@ class ComputeManager(manager.Manager):
|
||||
filters = {'task_state': task_states.REBOOTING,
|
||||
'host': self.host}
|
||||
rebooting = instance_obj.InstanceList.get_by_filters(
|
||||
context, filters, expected_attrs=[])
|
||||
context, filters, expected_attrs=[], use_slave=True)
|
||||
|
||||
to_poll = []
|
||||
for instance in rebooting:
|
||||
@ -4508,7 +4508,7 @@ class ComputeManager(manager.Manager):
|
||||
filters = {'vm_state': vm_states.RESCUED,
|
||||
'host': self.host}
|
||||
rescued_instances = self.conductor_api.instance_get_all_by_filters(
|
||||
context, filters, columns_to_join=[])
|
||||
context, filters, columns_to_join=[], use_slave=True)
|
||||
|
||||
to_unrescue = []
|
||||
for instance in rescued_instances:
|
||||
@ -4591,7 +4591,8 @@ class ComputeManager(manager.Manager):
|
||||
filters = {'vm_state': vm_states.SHELVED,
|
||||
'host': self.host}
|
||||
shelved_instances = instance_obj.InstanceList.get_by_filters(
|
||||
context, filters=filters, expected_attrs=['system_metadata'])
|
||||
context, filters=filters, expected_attrs=['system_metadata'],
|
||||
use_slave=True)
|
||||
|
||||
to_gc = []
|
||||
for instance in shelved_instances:
|
||||
@ -4979,7 +4980,8 @@ class ComputeManager(manager.Manager):
|
||||
'host': self.host}
|
||||
instances = instance_obj.InstanceList.get_by_filters(
|
||||
context, filters,
|
||||
expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS)
|
||||
expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS,
|
||||
use_slave=True)
|
||||
for instance in instances:
|
||||
if self._deleted_old_enough(instance, interval):
|
||||
capi = self.conductor_api
|
||||
|
@ -647,12 +647,13 @@ def instance_get_all(context, columns_to_join=None):
|
||||
|
||||
def instance_get_all_by_filters(context, filters, sort_key='created_at',
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
"""Get all instances that match all filters."""
|
||||
return IMPL.instance_get_all_by_filters(context, filters, sort_key,
|
||||
sort_dir, limit=limit,
|
||||
marker=marker,
|
||||
columns_to_join=columns_to_join)
|
||||
columns_to_join=columns_to_join,
|
||||
use_slave=use_slave)
|
||||
|
||||
|
||||
def instance_get_active_by_window_joined(context, begin, end=None,
|
||||
|
@ -1820,7 +1820,8 @@ def instance_get_all(context, columns_to_join=None):
|
||||
|
||||
@require_context
|
||||
def instance_get_all_by_filters(context, filters, sort_key, sort_dir,
|
||||
limit=None, marker=None, columns_to_join=None):
|
||||
limit=None, marker=None, columns_to_join=None,
|
||||
use_slave=False):
|
||||
"""Return instances that match all filters. Deleted instances
|
||||
will be returned by default, unless there's a filter that says
|
||||
otherwise.
|
||||
@ -1857,7 +1858,10 @@ def instance_get_all_by_filters(context, filters, sort_key, sort_dir,
|
||||
|
||||
sort_fn = {'desc': desc, 'asc': asc}
|
||||
|
||||
session = get_session()
|
||||
if CONF.database.slave_connection == '':
|
||||
use_slave = False
|
||||
|
||||
session = get_session(slave_session=use_slave)
|
||||
|
||||
if columns_to_join is None:
|
||||
columns_to_join = ['info_cache', 'security_groups']
|
||||
|
@ -568,7 +568,8 @@ class InstanceList(base.ObjectListBase, base.NovaObject):
|
||||
# Version 1.1: Added use_slave to get_by_host
|
||||
# Instance <= version 1.9
|
||||
# Version 1.2: Instance <= version 1.11
|
||||
VERSION = '1.2'
|
||||
# Version 1.3: Added use_slave to get_by_filters
|
||||
VERSION = '1.3'
|
||||
|
||||
fields = {
|
||||
'objects': fields.ListOfObjectsField('Instance'),
|
||||
@ -577,15 +578,17 @@ class InstanceList(base.ObjectListBase, base.NovaObject):
|
||||
'1.1': '1.9',
|
||||
# NOTE(danms): Instance was at 1.9 before we added this
|
||||
'1.2': '1.11',
|
||||
'1.3': '1.11',
|
||||
}
|
||||
|
||||
@base.remotable_classmethod
|
||||
def get_by_filters(cls, context, filters,
|
||||
sort_key='created_at', sort_dir='desc', limit=None,
|
||||
marker=None, expected_attrs=None):
|
||||
marker=None, expected_attrs=None, use_slave=False):
|
||||
db_inst_list = db.instance_get_all_by_filters(
|
||||
context, filters, sort_key, sort_dir, limit=limit, marker=marker,
|
||||
columns_to_join=_expected_cols(expected_attrs))
|
||||
columns_to_join=_expected_cols(expected_attrs),
|
||||
use_slave=use_slave)
|
||||
return _make_instance_list(context, cls(), db_inst_list,
|
||||
expected_attrs)
|
||||
|
||||
|
@ -682,7 +682,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_tenant_id_filter_converts_to_project_id_for_admin(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertIsNotNone(filters)
|
||||
self.assertEqual(filters['project_id'], 'newfake')
|
||||
self.assertFalse(filters.get('tenant_id'))
|
||||
@ -701,7 +701,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_tenant_id_filter_no_admin_context(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertNotEqual(filters, None)
|
||||
self.assertEqual(filters['project_id'], 'fake')
|
||||
return [fakes.stub_instance(100)]
|
||||
@ -716,7 +716,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_tenant_id_filter_implies_all_tenants(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertNotEqual(filters, None)
|
||||
# The project_id assertion checks that the project_id
|
||||
# filter is set to that specified in the request url and
|
||||
@ -737,7 +737,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_all_tenants_param_normal(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertNotIn('project_id', filters)
|
||||
return [fakes.stub_instance(100)]
|
||||
|
||||
@ -753,7 +753,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_all_tenants_param_one(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertNotIn('project_id', filters)
|
||||
return [fakes.stub_instance(100)]
|
||||
|
||||
@ -769,7 +769,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_all_tenants_param_zero(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertNotIn('all_tenants', filters)
|
||||
return [fakes.stub_instance(100)]
|
||||
|
||||
@ -785,7 +785,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_all_tenants_param_false(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertNotIn('all_tenants', filters)
|
||||
return [fakes.stub_instance(100)]
|
||||
|
||||
@ -816,7 +816,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_admin_restricted_tenant(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertIsNotNone(filters)
|
||||
self.assertEqual(filters['project_id'], 'fake')
|
||||
return [fakes.stub_instance(100)]
|
||||
@ -833,7 +833,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_all_tenants_pass_policy(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertIsNotNone(filters)
|
||||
self.assertNotIn('project_id', filters)
|
||||
return [fakes.stub_instance(100)]
|
||||
|
@ -660,7 +660,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_tenant_id_filter_converts_to_project_id_for_admin(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertIsNotNone(filters)
|
||||
self.assertEqual(filters['project_id'], 'newfake')
|
||||
self.assertFalse(filters.get('tenant_id'))
|
||||
@ -679,7 +679,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_all_tenants_param_normal(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertNotIn('project_id', filters)
|
||||
return [fakes.stub_instance(100)]
|
||||
|
||||
@ -695,7 +695,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_all_tenants_param_one(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertNotIn('project_id', filters)
|
||||
return [fakes.stub_instance(100)]
|
||||
|
||||
@ -711,7 +711,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_all_tenants_param_zero(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertNotIn('all_tenants', filters)
|
||||
return [fakes.stub_instance(100)]
|
||||
|
||||
@ -727,7 +727,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_all_tenants_param_false(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertNotIn('all_tenants', filters)
|
||||
return [fakes.stub_instance(100)]
|
||||
|
||||
@ -758,7 +758,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_admin_restricted_tenant(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertIsNotNone(filters)
|
||||
self.assertEqual(filters['project_id'], 'fake')
|
||||
return [fakes.stub_instance(100)]
|
||||
@ -775,7 +775,7 @@ class ServersControllerTest(ControllerTest):
|
||||
def test_all_tenants_pass_policy(self):
|
||||
def fake_get_all(context, filters=None, sort_key=None,
|
||||
sort_dir='desc', limit=None, marker=None,
|
||||
columns_to_join=None):
|
||||
columns_to_join=None, use_slave=False):
|
||||
self.assertIsNotNone(filters)
|
||||
self.assertNotIn('project_id', filters)
|
||||
return [fakes.stub_instance(100)]
|
||||
|
@ -458,6 +458,10 @@ def fake_instance_get_all_by_filters(num_servers=5, **kwargs):
|
||||
|
||||
if 'columns_to_join' in kwargs:
|
||||
kwargs.pop('columns_to_join')
|
||||
|
||||
if 'use_slave' in kwargs:
|
||||
kwargs.pop('use_slave')
|
||||
|
||||
for i in xrange(num_servers):
|
||||
uuid = get_fake_uuid(i)
|
||||
server = stub_instance(id=i + 1, uuid=uuid,
|
||||
|
@ -5403,7 +5403,7 @@ class ComputeTestCase(BaseTestCase):
|
||||
unrescued_instances = {'fake_uuid1': False, 'fake_uuid2': False}
|
||||
|
||||
def fake_instance_get_all_by_filters(context, filters,
|
||||
columns_to_join):
|
||||
columns_to_join, use_slave=False):
|
||||
self.assertEqual(columns_to_join, [])
|
||||
return instances
|
||||
|
||||
@ -5940,7 +5940,8 @@ class ComputeTestCase(BaseTestCase):
|
||||
|
||||
instance_obj.InstanceList.get_by_filters(
|
||||
ctxt, mox.IgnoreArg(),
|
||||
expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS
|
||||
expected_attrs=instance_obj.INSTANCE_DEFAULT_FIELDS,
|
||||
use_slave=True
|
||||
).AndReturn(instances)
|
||||
|
||||
# The first instance delete fails.
|
||||
|
@ -436,7 +436,8 @@ class ComputeManagerUnitTestCase(test.NoDBTestCase):
|
||||
{'uuid': [inst['uuid'] for
|
||||
inst in driver_instances]},
|
||||
'created_at', 'desc', columns_to_join=None,
|
||||
limit=None, marker=None).AndReturn(
|
||||
limit=None, marker=None,
|
||||
use_slave=False).AndReturn(
|
||||
driver_instances)
|
||||
|
||||
self.mox.ReplayAll()
|
||||
@ -476,7 +477,8 @@ class ComputeManagerUnitTestCase(test.NoDBTestCase):
|
||||
db.instance_get_all_by_filters(
|
||||
fake_context, filters,
|
||||
'created_at', 'desc', columns_to_join=None,
|
||||
limit=None, marker=None).AndReturn(all_instances)
|
||||
limit=None, marker=None,
|
||||
use_slave=False).AndReturn(all_instances)
|
||||
|
||||
self.mox.ReplayAll()
|
||||
|
||||
|
@ -853,12 +853,12 @@ class _TestInstanceListObject(object):
|
||||
self.mox.StubOutWithMock(db, 'instance_get_all_by_filters')
|
||||
db.instance_get_all_by_filters(self.context, {'foo': 'bar'}, 'uuid',
|
||||
'asc', limit=None, marker=None,
|
||||
columns_to_join=['metadata']).AndReturn(
|
||||
fakes)
|
||||
columns_to_join=['metadata'],
|
||||
use_slave=False).AndReturn(fakes)
|
||||
self.mox.ReplayAll()
|
||||
inst_list = instance.InstanceList.get_by_filters(
|
||||
self.context, {'foo': 'bar'}, 'uuid', 'asc',
|
||||
expected_attrs=['metadata'])
|
||||
expected_attrs=['metadata'], use_slave=False)
|
||||
|
||||
for i in range(0, len(fakes)):
|
||||
self.assertIsInstance(inst_list.objects[i], instance.Instance)
|
||||
@ -874,12 +874,13 @@ class _TestInstanceListObject(object):
|
||||
db.instance_get_all_by_filters(self.context,
|
||||
{'deleted': True, 'cleaned': False},
|
||||
'uuid', 'asc', limit=None, marker=None,
|
||||
columns_to_join=['metadata']).AndReturn(
|
||||
columns_to_join=['metadata'],
|
||||
use_slave=False).AndReturn(
|
||||
[fakes[1]])
|
||||
self.mox.ReplayAll()
|
||||
inst_list = instance.InstanceList.get_by_filters(
|
||||
self.context, {'deleted': True, 'cleaned': False}, 'uuid', 'asc',
|
||||
expected_attrs=['metadata'])
|
||||
expected_attrs=['metadata'], use_slave=False)
|
||||
|
||||
self.assertEqual(1, len(inst_list))
|
||||
self.assertIsInstance(inst_list.objects[0], instance.Instance)
|
||||
|
Loading…
Reference in New Issue
Block a user