summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--heatclient/common/event_utils.py12
-rw-r--r--heatclient/tests/unit/test_event_utils.py6
2 files changed, 15 insertions, 3 deletions
diff --git a/heatclient/common/event_utils.py b/heatclient/common/event_utils.py
index c0bc42e..4c659aa 100644
--- a/heatclient/common/event_utils.py
+++ b/heatclient/common/event_utils.py
@@ -150,6 +150,15 @@ def _get_nested_events(hc, nested_depth, stack_id, event_args):
return nested_events
+def _get_stack_name_from_links(event):
+ links = dict((l.get('rel'),
+ l.get('href')) for l in getattr(event, 'links', []))
+ href = links.get('stack')
+ if not href:
+ return
+ return href.split('/stacks/', 1)[-1].split('/')[0]
+
+
def _get_stack_events(hc, stack_id, event_args):
event_args['stack_id'] = stack_id
try:
@@ -159,9 +168,10 @@ def _get_stack_events(hc, stack_id, event_args):
# just use the message that the server sent us.
raise exc.CommandError(str(ex))
else:
+ stack_name = stack_id.split("/")[0]
# Show which stack the event comes from (for nested events)
for e in events:
- e.stack_name = stack_id.split("/")[0]
+ e.stack_name = _get_stack_name_from_links(e) or stack_name
return events
diff --git a/heatclient/tests/unit/test_event_utils.py b/heatclient/tests/unit/test_event_utils.py
index 32e4473..76f87ed 100644
--- a/heatclient/tests/unit/test_event_utils.py
+++ b/heatclient/tests/unit/test_event_utils.py
@@ -38,7 +38,9 @@ class ShellTestEventUtils(testtools.TestCase):
@staticmethod
def _mock_event(event_id, resource_id,
resource_status='CREATE_COMPLETE'):
- ev_info = {"links": [{"href": "http://heat/foo", "rel": "self"}],
+ ev_info = {"links": [
+ {"href": "http://heat/foo", "rel": "self"},
+ {"href": "http://heat/stacks/a", "rel": "stack"}],
"logical_resource_id": resource_id,
"physical_resource_id": resource_id,
"resource_name": resource_id,
@@ -72,7 +74,7 @@ class ShellTestEventUtils(testtools.TestCase):
stack_id='astack/123', argfoo=123)
self.assertEqual(1, len(evs))
self.assertEqual('event1', evs[0].id)
- self.assertEqual('astack', evs[0].stack_name)
+ self.assertEqual('a', evs[0].stack_name)
def test_get_nested_events(self):
resources = {'parent': self._mock_resource('resource1', 'foo/child1'),