| Index: third_party/gsutil/boto/boto/swf/layer1_decisions.py
|
| diff --git a/third_party/gsutil/boto/boto/swf/layer1_decisions.py b/third_party/gsutil/boto/boto/swf/layer1_decisions.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6c273aa14d349f42ea7939d7407f396b4e4a50f1
|
| --- /dev/null
|
| +++ b/third_party/gsutil/boto/boto/swf/layer1_decisions.py
|
| @@ -0,0 +1,287 @@
|
| +"""
|
| +Helper class for creating decision responses.
|
| +"""
|
| +
|
| +
|
| +class Layer1Decisions:
|
| + """
|
| + Use this object to build a list of decisions for a decision response.
|
| + Each method call will add append a new decision. Retrieve the list
|
| + of decisions from the _data attribute.
|
| +
|
| + """
|
| + def __init__(self):
|
| + self._data = []
|
| +
|
| + def schedule_activity_task(self,
|
| + activity_id,
|
| + activity_type_name,
|
| + activity_type_version,
|
| + task_list=None,
|
| + control=None,
|
| + heartbeat_timeout=None,
|
| + schedule_to_close_timeout=None,
|
| + schedule_to_start_timeout=None,
|
| + start_to_close_timeout=None,
|
| + input=None):
|
| + """
|
| + Schedules an activity task.
|
| +
|
| + :type activity_id: string
|
| + :param activity_id: The activityId of the type of the activity
|
| + being scheduled.
|
| +
|
| + :type activity_type_name: string
|
| + :param activity_type_name: The name of the type of the activity
|
| + being scheduled.
|
| +
|
| + :type activity_type_version: string
|
| + :param activity_type_version: The version of the type of the
|
| + activity being scheduled.
|
| +
|
| + :type task_list: string
|
| + :param task_list: If set, specifies the name of the task list in
|
| + which to schedule the activity task. If not specified, the
|
| + defaultTaskList registered with the activity type will be used.
|
| + Note: a task list for this activity task must be specified either
|
| + as a default for the activity type or through this field. If
|
| + neither this field is set nor a default task list was specified
|
| + at registration time then a fault will be returned.
|
| + """
|
| + o = {}
|
| + o['decisionType'] = 'ScheduleActivityTask'
|
| + attrs = o['scheduleActivityTaskDecisionAttributes'] = {}
|
| + attrs['activityId'] = activity_id
|
| + attrs['activityType'] = {
|
| + 'name': activity_type_name,
|
| + 'version': activity_type_version,
|
| + }
|
| + if task_list is not None:
|
| + attrs['taskList'] = {'name': task_list}
|
| + if control is not None:
|
| + attrs['control'] = control
|
| + if heartbeat_timeout is not None:
|
| + attrs['heartbeatTimeout'] = heartbeat_timeout
|
| + if schedule_to_close_timeout is not None:
|
| + attrs['scheduleToCloseTimeout'] = schedule_to_close_timeout
|
| + if schedule_to_start_timeout is not None:
|
| + attrs['scheduleToStartTimeout'] = schedule_to_start_timeout
|
| + if start_to_close_timeout is not None:
|
| + attrs['startToCloseTimeout'] = start_to_close_timeout
|
| + if input is not None:
|
| + attrs['input'] = input
|
| + self._data.append(o)
|
| +
|
| + def request_cancel_activity_task(self, activity_id):
|
| + """
|
| + Attempts to cancel a previously scheduled activity task. If
|
| + the activity task was scheduled but has not been assigned to a
|
| + worker, then it will be canceled. If the activity task was
|
| + already assigned to a worker, then the worker will be informed
|
| + that cancellation has been requested in the response to
|
| + RecordActivityTaskHeartbeat.
|
| + """
|
| + o = {}
|
| + o['decisionType'] = 'RequestCancelActivityTask'
|
| + attrs = o['requestCancelActivityTaskDecisionAttributes'] = {}
|
| + attrs['activityId'] = activity_id
|
| + self._data.append(o)
|
| +
|
| + def record_marker(self, marker_name, details=None):
|
| + """
|
| + Records a MarkerRecorded event in the history. Markers can be
|
| + used for adding custom information in the history for instance
|
| + to let deciders know that they do not need to look at the
|
| + history beyond the marker event.
|
| + """
|
| + o = {}
|
| + o['decisionType'] = 'RecordMarker'
|
| + attrs = o['recordMarkerDecisionAttributes'] = {}
|
| + attrs['markerName'] = marker_name
|
| + if details is not None:
|
| + attrs['details'] = details
|
| + self._data.append(o)
|
| +
|
| + def complete_workflow_execution(self, result=None):
|
| + """
|
| + Closes the workflow execution and records a WorkflowExecutionCompleted
|
| + event in the history
|
| + """
|
| + o = {}
|
| + o['decisionType'] = 'CompleteWorkflowExecution'
|
| + attrs = o['completeWorkflowExecutionDecisionAttributes'] = {}
|
| + if result is not None:
|
| + attrs['result'] = result
|
| + self._data.append(o)
|
| +
|
| + def fail_workflow_execution(self, reason=None, details=None):
|
| + """
|
| + Closes the workflow execution and records a
|
| + WorkflowExecutionFailed event in the history.
|
| + """
|
| + o = {}
|
| + o['decisionType'] = 'FailWorkflowExecution'
|
| + attrs = o['failWorkflowExecutionDecisionAttributes'] = {}
|
| + if reason is not None:
|
| + attrs['reason'] = reason
|
| + if details is not None:
|
| + attrs['details'] = details
|
| + self._data.append(o)
|
| +
|
| + def cancel_workflow_executions(self, details=None):
|
| + """
|
| + Closes the workflow execution and records a WorkflowExecutionCanceled
|
| + event in the history.
|
| + """
|
| + o = {}
|
| + o['decisionType'] = 'CancelWorkflowExecution'
|
| + attrs = o['cancelWorkflowExecutionsDecisionAttributes'] = {}
|
| + if details is not None:
|
| + attrs['details'] = details
|
| + self._data.append(o)
|
| +
|
| + def continue_as_new_workflow_execution(self,
|
| + child_policy=None,
|
| + execution_start_to_close_timeout=None,
|
| + input=None,
|
| + tag_list=None,
|
| + task_list=None,
|
| + start_to_close_timeout=None,
|
| + workflow_type_version=None):
|
| + """
|
| + Closes the workflow execution and starts a new workflow execution of
|
| + the same type using the same workflow id and a unique run Id. A
|
| + WorkflowExecutionContinuedAsNew event is recorded in the history.
|
| + """
|
| + o = {}
|
| + o['decisionType'] = 'ContinueAsNewWorkflowExecution'
|
| + attrs = o['continueAsNewWorkflowExecutionDecisionAttributes'] = {}
|
| + if child_policy is not None:
|
| + attrs['childPolicy'] = child_policy
|
| + if execution_start_to_close_timeout is not None:
|
| + attrs['executionStartToCloseTimeout'] = execution_start_to_close_timeout
|
| + if input is not None:
|
| + attrs['input'] = input
|
| + if tag_list is not None:
|
| + attrs['tagList'] = tag_list
|
| + if task_list is not None:
|
| + attrs['taskList'] = {'name': task_list}
|
| + if start_to_close_timeout is not None:
|
| + attrs['startToCloseTimeout'] = start_to_close_timeout
|
| + if workflow_type_version is not None:
|
| + attrs['workflowTypeVersion'] = workflow_type_version
|
| + self._data.append(o)
|
| +
|
| + def start_timer(self,
|
| + start_to_fire_timeout,
|
| + timer_id,
|
| + control=None):
|
| + """
|
| + Starts a timer for this workflow execution and records a TimerStarted
|
| + event in the history. This timer will fire after the specified delay
|
| + and record a TimerFired event.
|
| + """
|
| + o = {}
|
| + o['decisionType'] = 'StartTimer'
|
| + attrs = o['startTimerDecisionAttributes'] = {}
|
| + attrs['startToFireTimeout'] = start_to_fire_timeout
|
| + attrs['timerId'] = timer_id
|
| + if control is not None:
|
| + attrs['control'] = control
|
| + self._data.append(o)
|
| +
|
| + def cancel_timer(self, timer_id):
|
| + """
|
| + Cancels a previously started timer and records a TimerCanceled
|
| + event in the history.
|
| + """
|
| + o = {}
|
| + o['decisionType'] = 'CancelTimer'
|
| + attrs = o['cancelTimerDecisionAttributes'] = {}
|
| + attrs['timerId'] = timer_id
|
| + self._data.append(o)
|
| +
|
| + def signal_external_workflow_execution(self,
|
| + workflow_id,
|
| + signal_name,
|
| + run_id=None,
|
| + control=None,
|
| + input=None):
|
| + """
|
| + Requests a signal to be delivered to the specified external workflow
|
| + execution and records a SignalExternalWorkflowExecutionInitiated
|
| + event in the history.
|
| + """
|
| + o = {}
|
| + o['decisionType'] = 'SignalExternalWorkflowExecution'
|
| + attrs = o['signalExternalWorkflowExecutionDecisionAttributes'] = {}
|
| + attrs['workflowId'] = workflow_id
|
| + attrs['signalName'] = signal_name
|
| + if run_id is not None:
|
| + attrs['runId'] = run_id
|
| + if control is not None:
|
| + attrs['control'] = control
|
| + if input is not None:
|
| + attrs['input'] = input
|
| + self._data.append(o)
|
| +
|
| + def request_cancel_external_workflow_execution(self,
|
| + workflow_id,
|
| + control=None,
|
| + run_id=None):
|
| + """
|
| + Requests that a request be made to cancel the specified
|
| + external workflow execution and records a
|
| + RequestCancelExternalWorkflowExecutionInitiated event in the
|
| + history.
|
| + """
|
| + o = {}
|
| + o['decisionType'] = 'RequestCancelExternalWorkflowExecution'
|
| + attrs = o['requestCancelExternalWorkflowExecutionDecisionAttributes'] = {}
|
| + attrs['workflowId'] = workflow_id
|
| + if control is not None:
|
| + attrs['control'] = control
|
| + if run_id is not None:
|
| + attrs['runId'] = run_id
|
| + self._data.append(o)
|
| +
|
| + def start_child_workflow_execution(self,
|
| + workflow_type_name,
|
| + workflow_type_version,
|
| + workflow_id,
|
| + child_policy=None,
|
| + control=None,
|
| + execution_start_to_close_timeout=None,
|
| + input=None,
|
| + tag_list=None,
|
| + task_list=None,
|
| + task_start_to_close_timeout=None):
|
| + """
|
| + Requests that a child workflow execution be started and
|
| + records a StartChildWorkflowExecutionInitiated event in the
|
| + history. The child workflow execution is a separate workflow
|
| + execution with its own history.
|
| + """
|
| + o = {}
|
| + o['decisionType'] = 'StartChildWorkflowExecution'
|
| + attrs = o['startChildWorkflowExecutionDecisionAttributes'] = {}
|
| + attrs['workflowType'] = {
|
| + 'name': workflow_type_name,
|
| + 'version': workflow_type_version,
|
| + }
|
| + attrs['workflowId'] = workflow_id
|
| + if child_policy is not None:
|
| + attrs['childPolicy'] = child_policy
|
| + if control is not None:
|
| + attrs['control'] = control
|
| + if execution_start_to_close_timeout is not None:
|
| + attrs['executionStartToCloseTimeout'] = execution_start_to_close_timeout
|
| + if input is not None:
|
| + attrs['input'] = input
|
| + if tag_list is not None:
|
| + attrs['tagList'] = tag_list
|
| + if task_list is not None:
|
| + attrs['taskList'] = {'name': task_list}
|
| + if task_start_to_close_timeout is not None:
|
| + attrs['taskStartToCloseTimeout'] = task_start_to_close_timeout
|
| + self._data.append(o)
|
|
|