Esempio n. 1
0
def mark_recipe_tasks_finished(recipe, result=TaskResult.pass_,
                               task_status=TaskStatus.completed,
                               start_time=None, finish_time=None, only=False,
                               server_log=False,
                               num_tasks=None, **kwargs):

    # we accept result=None to mean: don't add any results to recipetasks
    assert result is None or result in TaskResult
    start_time = start_time or datetime.datetime.utcnow()
    finish_time = finish_time or datetime.datetime.utcnow()
    if not only:
        mark_recipe_running(recipe, start_time=start_time,
                task_start_time=start_time, **kwargs)

    # Need to make sure recipe.watchdog has been persisted, since we delete it
    # below when the recipe completes and sqlalchemy will barf on deleting an
    # instance that hasn't been persisted.
    session.flush()

    if not server_log:
        recipe.log_server = recipe.recipeset.lab_controller.fqdn
        recipe.logs = [LogRecipe(path=u'recipe_path',filename=u'dummy.txt')]
    else:
        recipe.log_server = u'dummy-archive-server'
        recipe.logs = [LogRecipe(server=u'http://dummy-archive-server/beaker/',
                path=u'recipe_path', filename=u'dummy.txt' )]

    if not server_log:
        rt_log = lambda: LogRecipeTask(path=u'tasks', filename=u'dummy.txt')
    else:
        rt_log = lambda: LogRecipeTask(server=u'http://dummy-archive-server/beaker/',
                path=u'tasks', filename=u'dummy.txt')
    if not server_log:
        rtr_log = lambda: LogRecipeTaskResult(path=u'/', filename=u'result.txt')
    else:
        rtr_log = lambda: LogRecipeTaskResult(server=u'http://dummy-archive-server/beaker/',
                path=u'/', filename=u'result.txt')

    for recipe_task in recipe.tasks[:num_tasks]:
        if recipe_task.start_time is None:
            recipe_task.start_time = start_time
        if result is not None:
            rtr = RecipeTaskResult(path=recipe_task.name, result=result,
                    log=u'(%s)' % result, score=0)
            rtr.start_time = start_time
            rtr.logs = [rtr_log()]
            recipe_task.results.append(rtr)
        recipe_task.logs = [rt_log()]
        recipe_task.finish_time = finish_time
        recipe_task._change_status(task_status)
        recipe.recipeset.job._mark_dirty()
    log.debug('Marked %s tasks in %s as %s with result %s',
              num_tasks or 'all', recipe.t_id, task_status, result)
Esempio n. 2
0
def mark_recipe_tasks_finished(recipe, result=TaskResult.pass_,
                               task_status=TaskStatus.completed,
                               start_time=None, finish_time=None, only=False,
                               server_log=False,
                               num_tasks=None, **kwargs):

    # we accept result=None to mean: don't add any results to recipetasks
    assert result is None or result in TaskResult
    start_time = start_time or datetime.datetime.utcnow()
    finish_time = finish_time or datetime.datetime.utcnow()
    if not only:
        mark_recipe_running(recipe, start_time=start_time,
                task_start_time=start_time, **kwargs)

    # Need to make sure recipe.watchdog has been persisted, since we delete it 
    # below when the recipe completes and sqlalchemy will barf on deleting an 
    # instance that hasn't been persisted.
    session.flush()

    if not server_log:
        recipe.log_server = recipe.recipeset.lab_controller.fqdn
        recipe.logs = [LogRecipe(path=u'recipe_path',filename=u'dummy.txt')]
    else:
        recipe.log_server = u'dummy-archive-server'
        recipe.logs = [LogRecipe(server=u'http://dummy-archive-server/beaker/',
                path=u'recipe_path', filename=u'dummy.txt' )]

    if not server_log:
        rt_log = lambda: LogRecipeTask(path=u'tasks', filename=u'dummy.txt')
    else:
        rt_log = lambda: LogRecipeTask(server=u'http://dummy-archive-server/beaker/',
                path=u'tasks', filename=u'dummy.txt')
    if not server_log:
        rtr_log = lambda: LogRecipeTaskResult(path=u'/', filename=u'result.txt')
    else:
        rtr_log = lambda: LogRecipeTaskResult(server=u'http://dummy-archive-server/beaker/',
                path=u'/', filename=u'result.txt')

    for recipe_task in recipe.tasks[:num_tasks]:
        if recipe_task.start_time is None:
            recipe_task.start_time = start_time
        if result is not None:
            rtr = RecipeTaskResult(path=recipe_task.name, result=result,
                    log=u'(%s)' % result, score=0)
            rtr.start_time = start_time
            rtr.logs = [rtr_log()]
            recipe_task.results.append(rtr)
        recipe_task.logs = [rt_log()]
        recipe_task.finish_time = finish_time
        recipe_task._change_status(task_status)
        recipe.recipeset.job._mark_dirty()
    log.debug('Marked %s tasks in %s as %s with result %s',
              num_tasks or 'all', recipe.t_id, task_status, result)