Add instance_fault_create() to conductor
This moves the use of db.instance_fault_create() from the compute utils to conductor. Related to blueprint no-db-compute Change-Id: If089ce1623374a259a2d63a99befc46fa3a130b6
This commit is contained in:
parent
98390d8066
commit
d70d2f374d
@ -229,7 +229,8 @@ def wrap_instance_fault(function):
|
||||
|
||||
with excutils.save_and_reraise_exception():
|
||||
compute_utils.add_instance_fault_from_exc(context,
|
||||
kwargs['instance'], e, sys.exc_info())
|
||||
self.conductor_api, kwargs['instance'],
|
||||
e, sys.exc_info())
|
||||
|
||||
return decorated_function
|
||||
|
||||
@ -732,8 +733,8 @@ class ComputeManager(manager.SchedulerDependentManager):
|
||||
instance_uuid = instance['uuid']
|
||||
rescheduled = False
|
||||
|
||||
compute_utils.add_instance_fault_from_exc(context, instance,
|
||||
exc_info[1], exc_info=exc_info)
|
||||
compute_utils.add_instance_fault_from_exc(context, self.conductor_api,
|
||||
instance, exc_info[1], exc_info=exc_info)
|
||||
|
||||
try:
|
||||
self._deallocate_network(context, instance)
|
||||
@ -1465,7 +1466,7 @@ class ComputeManager(manager.SchedulerDependentManager):
|
||||
LOG.error(_('Cannot reboot instance: %(exc)s'), locals(),
|
||||
context=context, instance=instance)
|
||||
compute_utils.add_instance_fault_from_exc(context,
|
||||
instance, exc, sys.exc_info())
|
||||
self.conductor_api, instance, exc, sys.exc_info())
|
||||
# Fall through and reset task_state to None
|
||||
|
||||
current_power_state = self._get_power_state(context, instance)
|
||||
@ -1995,8 +1996,8 @@ class ComputeManager(manager.SchedulerDependentManager):
|
||||
rescheduled = False
|
||||
instance_uuid = instance['uuid']
|
||||
|
||||
compute_utils.add_instance_fault_from_exc(context, instance,
|
||||
exc_info[0], exc_info=exc_info)
|
||||
compute_utils.add_instance_fault_from_exc(context, self.conductor_api,
|
||||
instance, exc_info[0], exc_info=exc_info)
|
||||
|
||||
try:
|
||||
scheduler_method = self.scheduler_rpcapi.prep_resize
|
||||
|
@ -37,7 +37,8 @@ CONF.import_opt('host', 'nova.netconf')
|
||||
LOG = log.getLogger(__name__)
|
||||
|
||||
|
||||
def add_instance_fault_from_exc(context, instance, fault, exc_info=None):
|
||||
def add_instance_fault_from_exc(context, conductor,
|
||||
instance, fault, exc_info=None):
|
||||
"""Adds the specified fault to the database."""
|
||||
|
||||
code = 500
|
||||
@ -61,7 +62,7 @@ def add_instance_fault_from_exc(context, instance, fault, exc_info=None):
|
||||
'details': unicode(details),
|
||||
'host': CONF.host
|
||||
}
|
||||
db.instance_fault_create(context, values)
|
||||
conductor.instance_fault_create(context, values)
|
||||
|
||||
|
||||
def get_device_name_for_instance(context, instance, bdms, device):
|
||||
|
@ -133,6 +133,9 @@ class LocalAPI(object):
|
||||
def instance_type_get(self, context, instance_type_id):
|
||||
return self._manager.instance_type_get(context, instance_type_id)
|
||||
|
||||
def instance_fault_create(self, context, values):
|
||||
return self._manager.instance_fault_create(context, values)
|
||||
|
||||
def migration_get(self, context, migration_id):
|
||||
return self._manager.migration_get(context, migration_id)
|
||||
|
||||
@ -391,6 +394,9 @@ class API(object):
|
||||
return self.conductor_rpcapi.instance_type_get(context,
|
||||
instance_type_id)
|
||||
|
||||
def instance_fault_create(self, context, values):
|
||||
return self.conductor_rpcapi.instance_fault_create(context, values)
|
||||
|
||||
def migration_get(self, context, migration_id):
|
||||
return self.conductor_rpcapi.migration_get(context, migration_id)
|
||||
|
||||
|
@ -43,7 +43,7 @@ datetime_fields = ['launched_at', 'terminated_at']
|
||||
class ConductorManager(manager.SchedulerDependentManager):
|
||||
"""Mission: TBD."""
|
||||
|
||||
RPC_API_VERSION = '1.35'
|
||||
RPC_API_VERSION = '1.36'
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(ConductorManager, self).__init__(service_name='conductor',
|
||||
@ -258,6 +258,10 @@ class ConductorManager(manager.SchedulerDependentManager):
|
||||
result = self.db.instance_type_get(context, instance_type_id)
|
||||
return jsonutils.to_primitive(result)
|
||||
|
||||
def instance_fault_create(self, context, values):
|
||||
result = self.db.instance_fault_create(context, values)
|
||||
return jsonutils.to_primitive(result)
|
||||
|
||||
def vol_get_usage_by_time(self, context, start_time):
|
||||
result = self.db.vol_get_usage_by_time(context, start_time)
|
||||
return jsonutils.to_primitive(result)
|
||||
|
@ -68,6 +68,7 @@ class ConductorAPI(nova.openstack.common.rpc.proxy.RpcProxy):
|
||||
1.33 - Added compute_node_create and compute_node_update
|
||||
1.34 - Added service_update
|
||||
1.35 - Added instance_get_active_by_window_joined
|
||||
1.36 - Added instance_fault_create
|
||||
"""
|
||||
|
||||
BASE_RPC_API_VERSION = '1.0'
|
||||
@ -293,6 +294,10 @@ class ConductorAPI(nova.openstack.common.rpc.proxy.RpcProxy):
|
||||
msg = self.make_msg('instance_get_all_by_host', host=host, node=node)
|
||||
return self.call(context, msg, version='1.32')
|
||||
|
||||
def instance_fault_create(self, context, values):
|
||||
msg = self.make_msg('instance_fault_create', values=values)
|
||||
return self.call(context, msg, version='1.36')
|
||||
|
||||
def action_event_start(self, context, values):
|
||||
msg = self.make_msg('action_event_start', values=values)
|
||||
return self.call(context, msg, version='1.25')
|
||||
|
@ -2722,8 +2722,11 @@ class ComputeTestCase(BaseTestCase):
|
||||
self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create)
|
||||
|
||||
ctxt = context.get_admin_context()
|
||||
compute_utils.add_instance_fault_from_exc(ctxt, instance,
|
||||
NotImplementedError('test'), exc_info)
|
||||
compute_utils.add_instance_fault_from_exc(ctxt,
|
||||
self.compute.conductor_api,
|
||||
instance,
|
||||
NotImplementedError('test'),
|
||||
exc_info)
|
||||
|
||||
def test_add_instance_fault_with_remote_error(self):
|
||||
instance = self._create_fake_instance()
|
||||
@ -2751,8 +2754,8 @@ class ComputeTestCase(BaseTestCase):
|
||||
self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create)
|
||||
|
||||
ctxt = context.get_admin_context()
|
||||
compute_utils.add_instance_fault_from_exc(ctxt, instance, exc,
|
||||
exc_info)
|
||||
compute_utils.add_instance_fault_from_exc(ctxt,
|
||||
self.compute.conductor_api, instance, exc, exc_info)
|
||||
|
||||
def test_add_instance_fault_user_error(self):
|
||||
instance = self._create_fake_instance()
|
||||
@ -2779,8 +2782,8 @@ class ComputeTestCase(BaseTestCase):
|
||||
self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create)
|
||||
|
||||
ctxt = context.get_admin_context()
|
||||
compute_utils.add_instance_fault_from_exc(ctxt, instance, user_exc,
|
||||
exc_info)
|
||||
compute_utils.add_instance_fault_from_exc(ctxt,
|
||||
self.compute.conductor_api, instance, user_exc, exc_info)
|
||||
|
||||
def test_add_instance_fault_no_exc_info(self):
|
||||
instance = self._create_fake_instance()
|
||||
@ -2798,8 +2801,10 @@ class ComputeTestCase(BaseTestCase):
|
||||
self.stubs.Set(nova.db, 'instance_fault_create', fake_db_fault_create)
|
||||
|
||||
ctxt = context.get_admin_context()
|
||||
compute_utils.add_instance_fault_from_exc(ctxt, instance,
|
||||
NotImplementedError('test'))
|
||||
compute_utils.add_instance_fault_from_exc(ctxt,
|
||||
self.compute.conductor_api,
|
||||
instance,
|
||||
NotImplementedError('test'))
|
||||
|
||||
def test_cleanup_running_deleted_instances(self):
|
||||
admin_context = context.get_admin_context()
|
||||
@ -6752,6 +6757,7 @@ class ComputeRescheduleOrReraiseTestCase(BaseTestCase):
|
||||
exc_info = sys.exc_info()
|
||||
|
||||
compute_utils.add_instance_fault_from_exc(self.context,
|
||||
self.compute.conductor_api,
|
||||
self.instance, exc_info[0], exc_info=exc_info)
|
||||
self.compute._deallocate_network(self.context,
|
||||
self.instance).AndRaise(InnerTestingException("Error"))
|
||||
@ -6802,6 +6808,7 @@ class ComputeRescheduleOrReraiseTestCase(BaseTestCase):
|
||||
except Exception:
|
||||
exc_info = sys.exc_info()
|
||||
compute_utils.add_instance_fault_from_exc(self.context,
|
||||
self.compute.conductor_api,
|
||||
self.instance, exc_info[0], exc_info=exc_info)
|
||||
self.compute._deallocate_network(self.context,
|
||||
self.instance)
|
||||
@ -6830,6 +6837,7 @@ class ComputeRescheduleOrReraiseTestCase(BaseTestCase):
|
||||
exc_info = sys.exc_info()
|
||||
|
||||
compute_utils.add_instance_fault_from_exc(self.context,
|
||||
self.compute.conductor_api,
|
||||
self.instance, exc_info[0], exc_info=exc_info)
|
||||
self.compute._deallocate_network(self.context,
|
||||
self.instance)
|
||||
|
@ -426,6 +426,15 @@ class _BaseTestCase(object):
|
||||
'fake-values', False)
|
||||
self.assertEqual(result, 'fake-result')
|
||||
|
||||
def test_instance_fault_create(self):
|
||||
self.mox.StubOutWithMock(db, 'instance_fault_create')
|
||||
db.instance_fault_create(self.context, 'fake-values').AndReturn(
|
||||
'fake-result')
|
||||
self.mox.ReplayAll()
|
||||
result = self.conductor.instance_fault_create(self.context,
|
||||
'fake-values')
|
||||
self.assertEqual(result, 'fake-result')
|
||||
|
||||
|
||||
class ConductorTestCase(_BaseTestCase, test.TestCase):
|
||||
"""Conductor Manager Tests."""
|
||||
|
Loading…
x
Reference in New Issue
Block a user