def _resume_action(self, liveaction_db): action_execution_db = ActionExecution.get(liveaction__id=str(liveaction_db.id)) extra = {'action_execution_db': action_execution_db, 'liveaction_db': liveaction_db} LOG.audit('Resuming action execution.', extra=extra) # the extra field will not be shown in non-audit logs so temporarily log at info. LOG.info('Dispatched {~}action_execution: %s / {~}live_action: %s with "%s" status.', action_execution_db.id, liveaction_db.id, liveaction_db.status) try: result = self.container.dispatch(liveaction_db) LOG.debug('Runner dispatch produced result: %s', result) except: _, ex, tb = sys.exc_info() extra['error'] = str(ex) LOG.info('Failed to resume action execution %s.' % (liveaction_db.id), extra=extra) raise # Cascade the resume upstream if action execution is child of an orquesta workflow. # The action service request_resume function is not used here because we do not want # other peer subworkflows to be resumed. if 'orquesta' in action_execution_db.context and 'parent' in action_execution_db.context: wf_svc.handle_action_execution_resume(action_execution_db) return result