Add event_list test.
I moved parse_event out of the method and into the class so we could call it from the event_list test. Signed-off-by: Ian Main <imain@redhat.com>
This commit is contained in:
parent
876a450a4e
commit
50e5f2de91
|
@ -33,6 +33,19 @@ from heat.db import api as db_api
|
|||
|
||||
logger = logging.getLogger('heat.engine.manager')
|
||||
|
||||
def parse_event(event):
|
||||
s = event.stack
|
||||
return {'EventId': event.id,
|
||||
'StackId': event.stack_id,
|
||||
'StackName': s.name,
|
||||
'Timestamp': str(event.created_at),
|
||||
'LogicalResourceId': event.logical_resource_id,
|
||||
'PhysicalResourceId': event.physical_resource_id,
|
||||
'ResourceType': event.resource_type,
|
||||
'ResourceStatusReason': event.resource_status_reason,
|
||||
'ResourceProperties': event.resource_properties,
|
||||
'ResourceStatus': event.name}
|
||||
|
||||
|
||||
class EngineManager(manager.Manager):
|
||||
"""
|
||||
|
@ -222,19 +235,6 @@ class EngineManager(manager.Manager):
|
|||
else:
|
||||
events = db_api.event_get_all(None)
|
||||
|
||||
def parse_event(e):
|
||||
s = e.stack
|
||||
return {'EventId': e.id,
|
||||
'StackId': e.stack_id,
|
||||
'StackName': s.name,
|
||||
'Timestamp': str(e.created_at),
|
||||
'LogicalResourceId': e.logical_resource_id,
|
||||
'PhysicalResourceId': e.physical_resource_id,
|
||||
'ResourceType': e.resource_type,
|
||||
'ResourceStatusReason': e.resource_status_reason,
|
||||
'ResourceProperties': e.resource_properties,
|
||||
'ResourceStatus': e.name}
|
||||
|
||||
return {'events': [parse_event(e) for e in events]}
|
||||
|
||||
def event_create(self, context, event):
|
||||
|
|
|
@ -13,6 +13,7 @@ from heat.tests.v1_1 import fakes
|
|||
from heat.engine import instance as instances
|
||||
import heat.db as db_api
|
||||
from heat.engine import parser
|
||||
from heat.engine import manager
|
||||
|
||||
|
||||
@attr(tag=['unit', 'resource'])
|
||||
|
@ -106,6 +107,67 @@ class stacksTest(unittest.TestCase):
|
|||
assert(stack.resources['WebServer'].state == 'DELETE_COMPLETE')
|
||||
assert(stack.t['stack_status'] == 'DELETE_COMPLETE')
|
||||
|
||||
def test_stack_event_list(self):
|
||||
f = open('../../templates/WordPress_Single_Instance_gold.template')
|
||||
t = json.loads(f.read())
|
||||
f.close()
|
||||
params = {}
|
||||
parameters = {}
|
||||
params['KeyStoneCreds'] = None
|
||||
t['Parameters']['KeyName']['Value'] = 'test'
|
||||
stack = parser.Stack('test_event_list_stack', t, 0, params)
|
||||
self.m.StubOutWithMock(instances.Instance, 'nova')
|
||||
instances.Instance.nova().AndReturn(self.fc)
|
||||
instances.Instance.nova().AndReturn(self.fc)
|
||||
instances.Instance.nova().AndReturn(self.fc)
|
||||
instances.Instance.nova().AndReturn(self.fc)
|
||||
instances.Instance.nova().AndReturn(self.fc)
|
||||
instance = stack.resources['WebServer']
|
||||
instance.itype_oflavor['m1.large'] = 'm1.large'
|
||||
instance.stack.resolve_attributes(instance.t)
|
||||
instance.stack.resolve_joins(instance.t)
|
||||
instance.stack.resolve_base64(instance.t)
|
||||
server_userdata = instance._build_userdata(\
|
||||
instance.t['Properties']['UserData'])
|
||||
self.m.StubOutWithMock(self.fc.servers, 'create')
|
||||
self.fc.servers.create(image=744, flavor=3, key_name='test',\
|
||||
name='WebServer', security_groups=None,\
|
||||
userdata=server_userdata).\
|
||||
AndReturn(self.fc.servers.list()[2])
|
||||
self.m.ReplayAll()
|
||||
rt = {}
|
||||
rt['template'] = stack.t
|
||||
rt['stack_name'] = stack.name
|
||||
new_rt = db_api.raw_template_create(None, rt)
|
||||
s = {}
|
||||
s['name'] = stack.name
|
||||
s['raw_template_id'] = new_rt.id
|
||||
new_s = db_api.stack_create(None, s)
|
||||
stack.id = new_s.id
|
||||
pt = {}
|
||||
pt['template'] = stack.t
|
||||
pt['raw_template_id'] = new_rt.id
|
||||
new_pt = db_api.parsed_template_create(None, pt)
|
||||
stack.create_blocking()
|
||||
assert(stack.resources['WebServer'] != None)
|
||||
assert(stack.resources['WebServer'].instance_id > 0)
|
||||
|
||||
events = db_api.event_get_all_by_stack(None, stack.id)
|
||||
for ev in events:
|
||||
result = manager.parse_event(ev)
|
||||
assert(result['EventId'] > 0)
|
||||
assert(result['StackName'] == "test_event_list_stack")
|
||||
# This is one of CREATE_COMPLETE or CREATE_IN_PROGRESS, just did this to make it easy.
|
||||
assert(result['ResourceStatus'].find('CREATE') != -1)
|
||||
assert(result['ResourceType'] == 'AWS::EC2::Instance')
|
||||
assert(result['ResourceStatusReason'] == 'state changed')
|
||||
assert(result['LogicalResourceId'] == 'WebServer')
|
||||
# Big long user data field.. it mentions 'wordpress' a few times so this should work.
|
||||
assert(result['ResourceProperties']['UserData'].find('wordpress') != -1)
|
||||
assert(result['ResourceProperties']['ImageId'] == 'F16-x86_64-gold')
|
||||
assert(result['ResourceProperties']['InstanceType'] == 'm1.large')
|
||||
|
||||
|
||||
# allows testing of the test directly, shown below
|
||||
if __name__ == '__main__':
|
||||
sys.argv.append(__file__)
|
||||
|
|
Loading…
Reference in New Issue