Merge "Expose Asynchronous Fault entity in the OSAPI"

This commit is contained in:
Jenkins
2011-12-15 19:07:35 +00:00
committed by Gerrit Code Review
2 changed files with 68 additions and 35 deletions

View File

@@ -20,6 +20,7 @@
Tests For Compute
"""
from copy import copy
import datetime
from webob import exc
import mox
@@ -2262,6 +2263,32 @@ class ComputeAPITestCase(BaseTestCase):
db.instance_destroy(_context, instance['uuid'])
def test_get_instance_faults(self):
"""Get an instances latest fault"""
instance = self._create_fake_instance()
fault_fixture = {
'code': 404,
'instance_uuid': instance['uuid'],
'message': "HTTPNotFound",
'details': "Stock details for test",
'created_at': datetime.datetime(2010, 10, 10, 12, 0, 0),
}
def return_fault(_ctxt, instance_uuids):
return dict.fromkeys(instance_uuids, [fault_fixture])
self.stubs.Set(nova.db,
'instance_fault_get_by_instance_uuids',
return_fault)
_context = context.get_admin_context()
output = self.compute_api.get_instance_faults(_context, [instance])
expected = {instance['uuid']: [fault_fixture]}
self.assertEqual(output, expected)
db.instance_destroy(_context, instance['uuid'])
@staticmethod
def _parse_db_block_device_mapping(bdm_ref):
attr_list = ('delete_on_termination', 'device_name', 'no_device',

View File

@@ -209,58 +209,64 @@ class DbApiTestCase(test.TestCase):
db.instance_fault_create(ctxt, fault_values)
# Retrieve the fault to ensure it was successfully added
instance_fault = db.instance_fault_get_by_instance(ctxt, uuid)
self.assertEqual(404, instance_fault['code'])
faults = db.instance_fault_get_by_instance_uuids(ctxt, [uuid])
self.assertEqual(404, faults[uuid][0]['code'])
def test_instance_fault_get_by_instance(self):
""" ensure we can retrieve an instance fault by instance UUID """
ctxt = context.get_admin_context()
instance1 = db.instance_create(ctxt, {})
instance2 = db.instance_create(ctxt, {})
uuids = [instance1['uuid'], instance2['uuid']]
# Create faults
uuid = str(utils.gen_uuid())
fault_values = {
'message': 'message',
'details': 'detail',
'instance_uuid': uuid,
'instance_uuid': uuids[0],
'code': 404,
}
db.instance_fault_create(ctxt, fault_values)
fault1 = db.instance_fault_create(ctxt, fault_values)
uuid2 = str(utils.gen_uuid())
fault_values = {
'message': 'message',
'details': 'detail',
'instance_uuid': uuid2,
'instance_uuid': uuids[0],
'code': 500,
}
db.instance_fault_create(ctxt, fault_values)
fault2 = db.instance_fault_create(ctxt, fault_values)
# Retrieve the fault to ensure it was successfully added
instance_fault = db.instance_fault_get_by_instance(ctxt, uuid2)
self.assertEqual(500, instance_fault['code'])
fault_values = {
'message': 'message',
'details': 'detail',
'instance_uuid': uuids[1],
'code': 404,
}
fault3 = db.instance_fault_create(ctxt, fault_values)
def test_instance_fault_get_by_instance_first_fault(self):
"""Instance_fault_get_by_instance should return the latest fault """
fault_values = {
'message': 'message',
'details': 'detail',
'instance_uuid': uuids[1],
'code': 500,
}
fault4 = db.instance_fault_create(ctxt, fault_values)
instance_faults = db.instance_fault_get_by_instance_uuids(ctxt, uuids)
expected = {
uuids[0]: [fault2, fault1],
uuids[1]: [fault4, fault3],
}
self.assertEqual(instance_faults, expected)
def test_instance_faults_get_by_instance_uuids_no_faults(self):
"""None should be returned when no faults exist"""
ctxt = context.get_admin_context()
# Create faults
uuid = str(utils.gen_uuid())
fault_values = {
'message': 'message',
'details': 'detail',
'instance_uuid': uuid,
'code': 404,
}
db.instance_fault_create(ctxt, fault_values)
fault_values = {
'message': 'message',
'details': 'detail',
'instance_uuid': uuid,
'code': 500,
}
db.instance_fault_create(ctxt, fault_values)
# Retrieve the fault to ensure it was successfully added
instance_fault = db.instance_fault_get_by_instance(ctxt, uuid)
self.assertEqual(500, instance_fault['code'])
instance1 = db.instance_create(ctxt, {})
instance2 = db.instance_create(ctxt, {})
uuids = [instance1['uuid'], instance2['uuid']]
instance_faults = db.instance_fault_get_by_instance_uuids(ctxt, uuids)
expected = {uuids[0]: [], uuids[1]: []}
self.assertEqual(expected, instance_faults)