diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-03-02 11:33:21 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-03-02 11:33:21 +0000 |
commit | 4ce8335fa1c75955f8cb5c61948af040aba82072 (patch) | |
tree | a1b19720fd642101f6b91983f33a97e974cd1694 /heatclient/osc | |
parent | 5d9cc24a7dd500e007ea133abd2afdb1607e564a (diff) | |
parent | ebdf0ebc941eb1d99452347cf69e73ab901e1301 (diff) | |
download | python-heatclient-4ce8335fa1c75955f8cb5c61948af040aba82072.tar.gz |
Merge "Implement stack event list --follow"1.0.0
Diffstat (limited to 'heatclient/osc')
-rw-r--r-- | heatclient/osc/v1/event.py | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/heatclient/osc/v1/event.py b/heatclient/osc/v1/event.py index 664b56c..feee81d 100644 --- a/heatclient/osc/v1/event.py +++ b/heatclient/osc/v1/event.py @@ -13,6 +13,7 @@ # Copyright 2015 IBM Corp. import logging +import time from cliff import lister from cliff import show @@ -134,6 +135,11 @@ class ListEvent(lister.Lister): '(default: asc). Specify multiple times to sort on ' 'multiple keys') ) + parser.add_argument( + '--follow', + action='store_true', + help=_('Print events until process is halted') + ) return parser def take_action(self, parsed_args): @@ -149,6 +155,7 @@ class ListEvent(lister.Lister): 'limit': parsed_args.limit, 'marker': parsed_args.marker, 'filters': heat_utils.format_parameters(parsed_args.filter), + 'sort_dir': 'asc' } if parsed_args.resource and parsed_args.nested_depth: @@ -165,6 +172,31 @@ class ListEvent(lister.Lister): else: nested_depth = 0 + if parsed_args.follow: + if parsed_args.formatter != 'value': + msg = _('--follow can only be specified with --format value') + raise exc.CommandError(msg) + + marker = parsed_args.marker + try: + while True: + kwargs['marker'] = marker + events = event_utils.get_events( + client, + stack_id=parsed_args.stack, + event_args=kwargs, + nested_depth=nested_depth, + marker=marker) + if events: + marker = getattr(events[-1], 'id', None) + events_log = heat_utils.event_log_formatter(events) + self.app.stdout.write(events_log) + self.app.stdout.write('\n') + time.sleep(5) + # this loop never exits + except (KeyboardInterrupt, EOFError): # ctrl-c, ctrl-d + return [], [] + events = event_utils.get_events( client, stack_id=parsed_args.stack, event_args=kwargs, nested_depth=nested_depth, marker=parsed_args.marker, @@ -175,7 +207,6 @@ class ListEvent(lister.Lister): if parsed_args.formatter == 'value': events = heat_utils.event_log_formatter(events).split('\n') - events.reverse() return [], [e.split(' ') for e in events] if len(events): |