def put(self, id, action_execution): """Update the specified action_execution.""" LOG.info("Update action_execution [id=%s, action_execution=%s]" % (id, action_execution)) # Client must provide a valid json. It shouldn't necessarily be an # object but it should be json complaint so strings have to be escaped. output = None if action_execution.output: try: output = json.loads(action_execution.output) except (ValueError, TypeError) as e: raise exc.InvalidResultException(str(e)) if action_execution.state == states.SUCCESS: result = wf_utils.Result(data=output) elif action_execution.state == states.ERROR: result = wf_utils.Result(error=output) else: raise exc.InvalidResultException( "Error. Expected on of %s, actual: %s" % ([states.SUCCESS, states.ERROR], action_execution.state)) values = rpc.get_engine_client().on_action_complete(id, result) return ActionExecution.from_dict(values)
def put(self, id, action_ex): """Update the specified action_execution. :param id: UUID of action execution to update :param action_ex: Action execution for update """ acl.enforce('action_executions:update', context.ctx()) LOG.debug("Update action_execution [id=%s, action_execution=%s]", id, action_ex) if action_ex.state not in SUPPORTED_TRANSITION_STATES: raise exc.InvalidResultException( "Error. Expected one of %s, actual: %s" % (SUPPORTED_TRANSITION_STATES, action_ex.state)) if states.is_completed(action_ex.state): output = action_ex.output if action_ex.state == states.SUCCESS: result = ml_actions.Result(data=output) elif action_ex.state == states.ERROR: if not output: output = 'Unknown error' result = ml_actions.Result(error=output) elif action_ex.state == states.CANCELLED: result = ml_actions.Result(cancel=True) values = rpc.get_engine_client().on_action_complete(id, result) if action_ex.state in [states.PAUSED, states.RUNNING]: state = action_ex.state values = rpc.get_engine_client().on_action_update(id, state) return resources.ActionExecution.from_dict(values)
def put(self, id, action_ex): """Update the specified action_execution.""" acl.enforce('action_executions:update', context.ctx()) LOG.info( "Update action_execution [id=%s, action_execution=%s]" % (id, action_ex) ) output = action_ex.output if action_ex.state == states.SUCCESS: result = wf_utils.Result(data=output) elif action_ex.state == states.ERROR: if not output: output = 'Unknown error' result = wf_utils.Result(error=output) else: raise exc.InvalidResultException( "Error. Expected on of %s, actual: %s" % ([states.SUCCESS, states.ERROR], action_ex.state) ) values = rpc.get_engine_client().on_action_complete(id, result) return resources.ActionExecution.from_dict(values)
def put(self, id, action_ex): """Update the specified action_execution.""" LOG.info( "Update action_execution [id=%s, action_execution=%s]" % (id, action_ex) ) if action_ex.state == states.SUCCESS: result = wf_utils.Result(data=action_ex.output) elif action_ex.state == states.ERROR: result = wf_utils.Result(error=action_ex.output) else: raise exc.InvalidResultException( "Error. Expected on of %s, actual: %s" % ([states.SUCCESS, states.ERROR], action_ex.state) ) values = rpc.get_engine_client().on_action_complete(id, result) return ActionExecution.from_dict(values)