summaryrefslogtreecommitdiff
path: root/heatclient/common
diff options
context:
space:
mode:
authorZane Bitter <zbitter@redhat.com>2017-01-09 15:23:05 -0500
committerZane Bitter <zbitter@redhat.com>2017-01-09 16:57:21 -0500
commit3e2bb477172410425b6a078a689dc3e43ce8a485 (patch)
treea0ca59710c8bfe902983e5e9f2f1344f3fe5af2f /heatclient/common
parent2cd3db111151ac327d3434f1c2f1a055b6714e23 (diff)
downloadpython-heatclient-3e2bb477172410425b6a078a689dc3e43ce8a485.tar.gz
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
Diffstat (limited to 'heatclient/common')
-rw-r--r--heatclient/common/event_utils.py13
1 files changed, 12 insertions, 1 deletions
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)