Merge "Expose Asynchronous Fault entity in the OSAPI"
This commit is contained in:
@@ -20,6 +20,7 @@
|
|||||||
Tests For Compute
|
Tests For Compute
|
||||||
"""
|
"""
|
||||||
from copy import copy
|
from copy import copy
|
||||||
|
import datetime
|
||||||
from webob import exc
|
from webob import exc
|
||||||
|
|
||||||
import mox
|
import mox
|
||||||
@@ -2262,6 +2263,32 @@ class ComputeAPITestCase(BaseTestCase):
|
|||||||
|
|
||||||
db.instance_destroy(_context, instance['uuid'])
|
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
|
@staticmethod
|
||||||
def _parse_db_block_device_mapping(bdm_ref):
|
def _parse_db_block_device_mapping(bdm_ref):
|
||||||
attr_list = ('delete_on_termination', 'device_name', 'no_device',
|
attr_list = ('delete_on_termination', 'device_name', 'no_device',
|
||||||
|
@@ -209,58 +209,64 @@ class DbApiTestCase(test.TestCase):
|
|||||||
db.instance_fault_create(ctxt, fault_values)
|
db.instance_fault_create(ctxt, fault_values)
|
||||||
|
|
||||||
# Retrieve the fault to ensure it was successfully added
|
# Retrieve the fault to ensure it was successfully added
|
||||||
instance_fault = db.instance_fault_get_by_instance(ctxt, uuid)
|
faults = db.instance_fault_get_by_instance_uuids(ctxt, [uuid])
|
||||||
self.assertEqual(404, instance_fault['code'])
|
self.assertEqual(404, faults[uuid][0]['code'])
|
||||||
|
|
||||||
def test_instance_fault_get_by_instance(self):
|
def test_instance_fault_get_by_instance(self):
|
||||||
""" ensure we can retrieve an instance fault by instance UUID """
|
""" ensure we can retrieve an instance fault by instance UUID """
|
||||||
ctxt = context.get_admin_context()
|
ctxt = context.get_admin_context()
|
||||||
|
instance1 = db.instance_create(ctxt, {})
|
||||||
|
instance2 = db.instance_create(ctxt, {})
|
||||||
|
uuids = [instance1['uuid'], instance2['uuid']]
|
||||||
|
|
||||||
# Create faults
|
# Create faults
|
||||||
uuid = str(utils.gen_uuid())
|
|
||||||
fault_values = {
|
fault_values = {
|
||||||
'message': 'message',
|
'message': 'message',
|
||||||
'details': 'detail',
|
'details': 'detail',
|
||||||
'instance_uuid': uuid,
|
'instance_uuid': uuids[0],
|
||||||
'code': 404,
|
'code': 404,
|
||||||
}
|
}
|
||||||
db.instance_fault_create(ctxt, fault_values)
|
fault1 = db.instance_fault_create(ctxt, fault_values)
|
||||||
|
|
||||||
uuid2 = str(utils.gen_uuid())
|
|
||||||
fault_values = {
|
fault_values = {
|
||||||
'message': 'message',
|
'message': 'message',
|
||||||
'details': 'detail',
|
'details': 'detail',
|
||||||
'instance_uuid': uuid2,
|
'instance_uuid': uuids[0],
|
||||||
'code': 500,
|
'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
|
fault_values = {
|
||||||
instance_fault = db.instance_fault_get_by_instance(ctxt, uuid2)
|
'message': 'message',
|
||||||
self.assertEqual(500, instance_fault['code'])
|
'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):
|
fault_values = {
|
||||||
"""Instance_fault_get_by_instance should return the latest fault """
|
'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()
|
ctxt = context.get_admin_context()
|
||||||
|
instance1 = db.instance_create(ctxt, {})
|
||||||
# Create faults
|
instance2 = db.instance_create(ctxt, {})
|
||||||
uuid = str(utils.gen_uuid())
|
uuids = [instance1['uuid'], instance2['uuid']]
|
||||||
fault_values = {
|
instance_faults = db.instance_fault_get_by_instance_uuids(ctxt, uuids)
|
||||||
'message': 'message',
|
expected = {uuids[0]: [], uuids[1]: []}
|
||||||
'details': 'detail',
|
self.assertEqual(expected, instance_faults)
|
||||||
'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'])
|
|
||||||
|
Reference in New Issue
Block a user