def _execute_task(task, arguments, progress_callback=None): with notifier.register_deregister(task.notifier, _UPDATE_PROGRESS, callback=progress_callback): try: task.pre_execute() result = task.execute(**arguments) except Exception: # NOTE(imelnikov): wrap current exception with Failure # object and return it. result = failure.Failure() finally: task.post_execute() return (EXECUTED, result)
def _revert_task(task, arguments, result, failures, progress_callback=None): arguments = arguments.copy() arguments[task_atom.REVERT_RESULT] = result arguments[task_atom.REVERT_FLOW_FAILURES] = failures with notifier.register_deregister(task.notifier, _UPDATE_PROGRESS, callback=progress_callback): try: task.pre_revert() result = task.revert(**arguments) except Exception: # NOTE(imelnikov): wrap current exception with Failure # object and return it. result = failure.Failure() finally: task.post_revert() return (REVERTED, result)