From 3e2bb477172410425b6a078a689dc3e43ce8a485 Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Mon, 9 Jan 2017 15:23:05 -0500 Subject: Distinguish between stack and resource events when polling Don't accidentally treat a resource event like a stack event. Change-Id: I0e4d97f9954adfac3124f6ed684b608f4da668b4 Closes-Bug: #1655142 --- heatclient/common/event_utils.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'heatclient/common') diff --git a/heatclient/common/event_utils.py b/heatclient/common/event_utils.py index 309a193..df000f7 100644 --- a/heatclient/common/event_utils.py +++ b/heatclient/common/event_utils.py @@ -181,6 +181,17 @@ def poll_for_events(hc, stack_name, action=None, poll_period=5, marker=None, if not out: out = sys.stdout event_log_context = utils.EventLogContext() + + def is_stack_event(event): + if getattr(event, 'resource_name', '') != stack_name: + return False + + phys_id = getattr(event, 'physical_resource_id', '') + links = dict((l.get('rel'), + l.get('href')) for l in getattr(event, 'links', [])) + stack_id = links.get('stack', phys_id).rsplit('/', 1)[-1] + return stack_id == phys_id + while True: events = get_events(hc, stack_id=stack_name, nested_depth=nested_depth, event_args={'sort_dir': 'asc', @@ -198,7 +209,7 @@ def poll_for_events(hc, stack_name, action=None, poll_period=5, marker=None, for event in events: # check if stack event was also received - if getattr(event, 'resource_name', '') == stack_name: + if is_stack_event(event): stack_status = getattr(event, 'resource_status', '') msg = msg_template % dict( name=stack_name, status=stack_status) -- cgit v1.2.1