def mark_recipe_tasks_finished(recipe, result=TaskResult.pass_, task_status=TaskStatus.completed, 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 finish_time = finish_time or datetime.datetime.utcnow() if not only: mark_recipe_running(recipe, **kwargs) mark_recipe_installation_finished(recipe) # 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 result is not None: rtr = RecipeTaskResult(recipetask=recipe_task, result=result) 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) log.debug('Marked %s tasks in %s as %s with result %s', num_tasks or 'all', recipe.t_id, task_status, result)
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)
def mark_recipe_tasks_finished(recipe, result=TaskResult.pass_, task_status=TaskStatus.completed, finish_time=None, only=False, server_log=False, **kwargs): # we accept result=None to mean: don't add any results to recipetasks assert result is None or result in TaskResult finish_time = finish_time or datetime.datetime.utcnow() if not only: mark_recipe_running(recipe, **kwargs) mark_recipe_installation_finished(recipe) # 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: if result is not None: rtr = RecipeTaskResult(recipetask=recipe_task, result=result) 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)
def mark_recipe_complete(recipe, result=TaskResult.pass_, finish_time=None, only=False, server_log=False, **kwargs): assert result in TaskResult finish_time = finish_time or datetime.datetime.utcnow() if not only: mark_recipe_running(recipe, **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: rtr = RecipeTaskResult(recipetask=recipe_task, result=result) rtr.logs = [rtr_log()] recipe_task.logs = [rt_log()] recipe_task.finish_time = finish_time recipe_task._change_status(TaskStatus.completed) recipe_task.results.append(rtr) recipe.resource.install_done = finish_time recipe.resource.postinstall_done = finish_time recipe.recipeset.job.update_status() log.debug('Marked %s as complete with result %s', recipe.t_id, result)