diff options
| -rw-r--r-- | heatclient/common/event_utils.py | 12 | ||||
| -rw-r--r-- | heatclient/tests/unit/test_event_utils.py | 6 |
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'), |
