summaryrefslogtreecommitdiff
path: root/heatclient/common
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-02-25 13:47:52 +0000
committerGerrit Code Review <review@openstack.org>2016-02-25 13:47:52 +0000
commit7887beafe6cf3edd016f6753ff23181ac9c6cf0e (patch)
tree8be8b2734a3c9367716d989aaff5e11ecc54f71c /heatclient/common
parent06b2ef0e3ccd0e224c85b6d49a1ff7aa475c581d (diff)
parent302040c759e13ac93c9bf8a6b1acd14c73faaad7 (diff)
downloadpython-heatclient-7887beafe6cf3edd016f6753ff23181ac9c6cf0e.tar.gz
Merge "Move poll_for_events to event_utils"
Diffstat (limited to 'heatclient/common')
-rw-r--r--heatclient/common/event_utils.py30
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)