def blockOnTask(host, cluster, taskName, notifyF=logging.logPrint, errorF=logging.errorPrint): endStates = [task.TASK_FAILED, task.TASK_COMPLETED] state = None prevTime = None sleepTime = 1 yield defer_utils.sleep(sleepTime)() while state not in endStates: tsk = yield tasks_client.loadTask(host, cluster, 'guest', taskName) tsk = task.taskFromDict(tsk) state = tsk.state if prevTime is None: msgs = tsk.getMessages() else: msgs = tsk.getMessagesAfterTime(prevTime) prevTime = tsk.timestamp for m in msgs: if m['mtype'] == task.MSG_ERROR: errorF(m['text']) elif m['mtype'] == task.MSG_NOTIFICATION: notifyF(m['text']) elif logging.DEBUG and m['mtype'] == task.MSG_SILENT: logging.debugPrint(lambda : m['text']) ## # Make this configurable if state not in endStates: sleepTime = sleepTime < 30 and sleepTime * 2 or 30 yield defer_utils.sleep(sleepTime)() defer.returnValue(state)
def blockOnTask(host, cluster, taskName, notifyF=logging.logPrint, errorF=logging.errorPrint): endStates = [task.TASK_FAILED, task.TASK_COMPLETED] state = None prevTime = None sleepTime = 1 yield defer_utils.sleep(sleepTime)() while state not in endStates: tsk = yield tasks_client.loadTask(host, cluster, 'guest', taskName) tsk = task.taskFromDict(tsk) state = tsk.state if prevTime is None: msgs = tsk.getMessages() else: msgs = tsk.getMessagesAfterTime(prevTime) prevTime = tsk.timestamp for m in msgs: if m['mtype'] == task.MSG_ERROR: errorF(m['text']) elif m['mtype'] == task.MSG_NOTIFICATION: notifyF(m['text']) elif logging.DEBUG and m['mtype'] == task.MSG_SILENT: logging.debugPrint(lambda: m['text']) ## # Make this configurable if state not in endStates: sleepTime = sleepTime < 30 and sleepTime * 2 or 30 yield defer_utils.sleep(sleepTime)() defer.returnValue(state)
def loadTask(host, name, taskName): return taskFromDict(performQuery(host, TASK_URL, dict(cluster=name, task_name=taskName))[0])
def loadAllTasks(host, name): return [taskFromDict(t) for t in performQuery(host, TASK_URL, dict(cluster=name))]
def loadTask(host, name, taskName): return taskFromDict( performQuery(host, TASK_URL, dict(cluster=name, task_name=taskName))[0])
def loadAllTasks(host, name): return [ taskFromDict(t) for t in performQuery(host, TASK_URL, dict(cluster=name)) ]