diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-02-25 13:47:52 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-02-25 13:47:52 +0000 |
commit | 7887beafe6cf3edd016f6753ff23181ac9c6cf0e (patch) | |
tree | 8be8b2734a3c9367716d989aaff5e11ecc54f71c /heatclient/common | |
parent | 06b2ef0e3ccd0e224c85b6d49a1ff7aa475c581d (diff) | |
parent | 302040c759e13ac93c9bf8a6b1acd14c73faaad7 (diff) | |
download | python-heatclient-7887beafe6cf3edd016f6753ff23181ac9c6cf0e.tar.gz |
Merge "Move poll_for_events to event_utils"
Diffstat (limited to 'heatclient/common')
-rw-r--r-- | heatclient/common/event_utils.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/heatclient/common/event_utils.py b/heatclient/common/event_utils.py index 27685f0..03bb8b2 100644 --- a/heatclient/common/event_utils.py +++ b/heatclient/common/event_utils.py @@ -12,6 +12,8 @@ # License for the specific language governing permissions and limitations # under the License. +import time + from heatclient.common import utils import heatclient.exc as exc @@ -126,3 +128,31 @@ def _get_stack_events(hc, stack_id, event_args): for e in events: e.stack_name = stack_id.split("/")[0] return events + + +def poll_for_events(hc, stack_name, action, poll_period): + """Continuously poll events and logs for performed action on stack.""" + + marker = None + stop_status = ('%s_FAILED' % action, '%s_COMPLETE' % action) + while True: + events = get_events(hc, stack_id=stack_name, + event_args={'sort_dir': 'asc', + 'marker': marker}) + + if len(events) >= 1: + # set marker to last event that was received. + marker = getattr(events[-1], 'id', None) + events_log = utils.event_log_formatter(events) + print(events_log) + + for event in events: + # check if stack event was also received + if getattr(event, 'resource_name', '') == stack_name: + stack_status = getattr(event, 'resource_status', '') + msg = _("\n Stack %(name)s %(status)s \n") % dict( + name=stack_name, status=stack_status) + if stack_status in stop_status: + return stack_status, msg + + time.sleep(poll_period) |