예제 #1
0
파일: tasks.py 프로젝트: carze/vappio
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)
예제 #2
0
파일: tasks.py 프로젝트: carze/vappio
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)
예제 #3
0
파일: task.py 프로젝트: carze/vappio
def loadTask(host, name, taskName):
    return taskFromDict(performQuery(host, TASK_URL, dict(cluster=name,
                                                          task_name=taskName))[0])
예제 #4
0
파일: task.py 프로젝트: carze/vappio
def loadAllTasks(host, name):
    return [taskFromDict(t) for t in performQuery(host, TASK_URL, dict(cluster=name))]
예제 #5
0
def loadTask(host, name, taskName):
    return taskFromDict(
        performQuery(host, TASK_URL, dict(cluster=name,
                                          task_name=taskName))[0])
예제 #6
0
def loadAllTasks(host, name):
    return [
        taskFromDict(t)
        for t in performQuery(host, TASK_URL, dict(cluster=name))
    ]