Index: third_party/gsutil/boto/boto/swf/layer1.py |
diff --git a/third_party/gsutil/boto/boto/swf/layer1.py b/third_party/gsutil/boto/boto/swf/layer1.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8e1af90318bbeb54804b418b9d2920ac0fc377c1 |
--- /dev/null |
+++ b/third_party/gsutil/boto/boto/swf/layer1.py |
@@ -0,0 +1,1512 @@ |
+# Copyright (c) 2012 Mitch Garnaat http://garnaat.org/ |
+# Copyright (c) 2012 Amazon.com, Inc. or its affiliates. |
+# All Rights Reserved |
+# |
+# Permission is hereby granted, free of charge, to any person obtaining a |
+# copy of this software and associated documentation files (the |
+# "Software"), to deal in the Software without restriction, including |
+# without limitation the rights to use, copy, modify, merge, publish, dis- |
+# tribute, sublicense, and/or sell copies of the Software, and to permit |
+# persons to whom the Software is furnished to do so, subject to the fol- |
+# lowing conditions: |
+# |
+# The above copyright notice and this permission notice shall be included |
+# in all copies or substantial portions of the Software. |
+# |
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- |
+# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT |
+# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
+# IN THE SOFTWARE. |
+# |
+ |
+import time |
+ |
+import boto |
+from boto.connection import AWSAuthConnection |
+from boto.provider import Provider |
+from boto.exception import SWFResponseError |
+from boto.swf import exceptions as swf_exceptions |
+from boto.compat import json |
+ |
+# |
+# To get full debug output, uncomment the following line and set the |
+# value of Debug to be 2 |
+# |
+#boto.set_stream_logger('swf') |
+Debug = 0 |
+ |
+ |
+class Layer1(AWSAuthConnection): |
+ """ |
+ Low-level interface to Simple WorkFlow Service. |
+ """ |
+ |
+ DefaultRegionName = 'us-east-1' |
+ """The default region name for Simple Workflow.""" |
+ |
+ ServiceName = 'com.amazonaws.swf.service.model.SimpleWorkflowService' |
+ """The name of the Service""" |
+ |
+ # In some cases, the fault response __type value is mapped to |
+ # an exception class more specific than SWFResponseError. |
+ _fault_excp = { |
+ 'com.amazonaws.swf.base.model#DomainAlreadyExistsFault': |
+ swf_exceptions.SWFDomainAlreadyExistsError, |
+ 'com.amazonaws.swf.base.model#LimitExceededFault': |
+ swf_exceptions.SWFLimitExceededError, |
+ 'com.amazonaws.swf.base.model#OperationNotPermittedFault': |
+ swf_exceptions.SWFOperationNotPermittedError, |
+ 'com.amazonaws.swf.base.model#TypeAlreadyExistsFault': |
+ swf_exceptions.SWFTypeAlreadyExistsError, |
+ 'com.amazonaws.swf.base.model#WorkflowExecutionAlreadyStartedFault': |
+ swf_exceptions.SWFWorkflowExecutionAlreadyStartedError, |
+ } |
+ |
+ ResponseError = SWFResponseError |
+ |
+ def __init__(self, aws_access_key_id=None, aws_secret_access_key=None, |
+ is_secure=True, port=None, proxy=None, proxy_port=None, |
+ debug=0, session_token=None, region=None): |
+ if not region: |
+ region_name = boto.config.get('SWF', 'region', |
+ self.DefaultRegionName) |
+ for reg in boto.swf.regions(): |
+ if reg.name == region_name: |
+ region = reg |
+ break |
+ |
+ self.region = region |
+ AWSAuthConnection.__init__(self, self.region.endpoint, |
+ aws_access_key_id, aws_secret_access_key, |
+ is_secure, port, proxy, proxy_port, |
+ debug, session_token) |
+ |
+ def _required_auth_capability(self): |
+ return ['hmac-v3-http'] |
+ |
+ @classmethod |
+ def _normalize_request_dict(cls, data): |
+ """ |
+ This class method recurses through request data dictionary and removes |
+ any default values. |
+ |
+ :type data: dict |
+ :param data: Specifies request parameters with default values to be removed. |
+ """ |
+ for item in data.keys(): |
+ if isinstance(data[item], dict): |
+ cls._normalize_request_dict(data[item]) |
+ if data[item] in (None, {}): |
+ del data[item] |
+ |
+ def json_request(self, action, data, object_hook=None): |
+ """ |
+ This method wraps around make_request() to normalize and serialize the |
+ dictionary with request parameters. |
+ |
+ :type action: string |
+ :param action: Specifies an SWF action. |
+ |
+ :type data: dict |
+ :param data: Specifies request parameters associated with the action. |
+ """ |
+ self._normalize_request_dict(data) |
+ json_input = json.dumps(data) |
+ return self.make_request(action, json_input, object_hook) |
+ |
+ def make_request(self, action, body='', object_hook=None): |
+ """ |
+ :raises: ``SWFResponseError`` if response status is not 200. |
+ """ |
+ headers = {'X-Amz-Target': '%s.%s' % (self.ServiceName, action), |
+ 'Host': self.region.endpoint, |
+ 'Content-Type': 'application/json; charset=UTF-8', |
+ 'Content-Encoding': 'amz-1.0', |
+ 'Content-Length': str(len(body))} |
+ http_request = self.build_base_http_request('POST', '/', '/', |
+ {}, headers, body, None) |
+ response = self._mexe(http_request, sender=None, |
+ override_num_retries=10) |
+ response_body = response.read() |
+ boto.log.debug(response_body) |
+ if response.status == 200: |
+ if response_body: |
+ return json.loads(response_body, object_hook=object_hook) |
+ else: |
+ return None |
+ else: |
+ json_body = json.loads(response_body) |
+ fault_name = json_body.get('__type', None) |
+ # Certain faults get mapped to more specific exception classes. |
+ excp_cls = self._fault_excp.get(fault_name, self.ResponseError) |
+ raise excp_cls(response.status, response.reason, body=json_body) |
+ |
+ # Actions related to Activities |
+ |
+ def poll_for_activity_task(self, domain, task_list, identity=None): |
+ """ |
+ Used by workers to get an ActivityTask from the specified |
+ activity taskList. This initiates a long poll, where the |
+ service holds the HTTP connection open and responds as soon as |
+ a task becomes available. The maximum time the service holds |
+ on to the request before responding is 60 seconds. If no task |
+ is available within 60 seconds, the poll will return an empty |
+ result. An empty result, in this context, means that an |
+ ActivityTask is returned, but that the value of taskToken is |
+ an empty string. If a task is returned, the worker should use |
+ its type to identify and process it correctly. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain that contains the task |
+ lists being polled. |
+ |
+ :type task_list: string |
+ :param task_list: Specifies the task list to poll for activity tasks. |
+ |
+ :type identity: string |
+ :param identity: Identity of the worker making the request, which |
+ is recorded in the ActivityTaskStarted event in the workflow |
+ history. This enables diagnostic tracing when problems arise. |
+ The form of this identity is user defined. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('PollForActivityTask', { |
+ 'domain': domain, |
+ 'taskList': {'name': task_list}, |
+ 'identity': identity, |
+ }) |
+ |
+ def respond_activity_task_completed(self, task_token, result=None): |
+ """ |
+ Used by workers to tell the service that the ActivityTask |
+ identified by the taskToken completed successfully with a |
+ result (if provided). |
+ |
+ :type task_token: string |
+ :param task_token: The taskToken of the ActivityTask. |
+ |
+ :type result: string |
+ :param result: The result of the activity task. It is a free |
+ form string that is implementation specific. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('RespondActivityTaskCompleted', { |
+ 'taskToken': task_token, |
+ 'result': result, |
+ }) |
+ |
+ def respond_activity_task_failed(self, task_token, |
+ details=None, reason=None): |
+ """ |
+ Used by workers to tell the service that the ActivityTask |
+ identified by the taskToken has failed with reason (if |
+ specified). |
+ |
+ :type task_token: string |
+ :param task_token: The taskToken of the ActivityTask. |
+ |
+ :type details: string |
+ :param details: Optional detailed information about the failure. |
+ |
+ :type reason: string |
+ :param reason: Description of the error that may assist in diagnostics. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('RespondActivityTaskFailed', { |
+ 'taskToken': task_token, |
+ 'details': details, |
+ 'reason': reason, |
+ }) |
+ |
+ def respond_activity_task_canceled(self, task_token, details=None): |
+ """ |
+ Used by workers to tell the service that the ActivityTask |
+ identified by the taskToken was successfully |
+ canceled. Additional details can be optionally provided using |
+ the details argument. |
+ |
+ :type task_token: string |
+ :param task_token: The taskToken of the ActivityTask. |
+ |
+ :type details: string |
+ :param details: Optional detailed information about the failure. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('RespondActivityTaskCanceled', { |
+ 'taskToken': task_token, |
+ 'details': details, |
+ }) |
+ |
+ def record_activity_task_heartbeat(self, task_token, details=None): |
+ """ |
+ Used by activity workers to report to the service that the |
+ ActivityTask represented by the specified taskToken is still |
+ making progress. The worker can also (optionally) specify |
+ details of the progress, for example percent complete, using |
+ the details parameter. This action can also be used by the |
+ worker as a mechanism to check if cancellation is being |
+ requested for the activity task. If a cancellation is being |
+ attempted for the specified task, then the boolean |
+ cancelRequested flag returned by the service is set to true. |
+ |
+ :type task_token: string |
+ :param task_token: The taskToken of the ActivityTask. |
+ |
+ :type details: string |
+ :param details: If specified, contains details about the |
+ progress of the task. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('RecordActivityTaskHeartbeat', { |
+ 'taskToken': task_token, |
+ 'details': details, |
+ }) |
+ |
+ # Actions related to Deciders |
+ |
+ def poll_for_decision_task(self, domain, task_list, identity=None, |
+ maximum_page_size=None, |
+ next_page_token=None, |
+ reverse_order=None): |
+ """ |
+ Used by deciders to get a DecisionTask from the specified |
+ decision taskList. A decision task may be returned for any |
+ open workflow execution that is using the specified task |
+ list. The task includes a paginated view of the history of the |
+ workflow execution. The decider should use the workflow type |
+ and the history to determine how to properly handle the task. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain containing the task |
+ lists to poll. |
+ |
+ :type task_list: string |
+ :param task_list: Specifies the task list to poll for decision tasks. |
+ |
+ :type identity: string |
+ :param identity: Identity of the decider making the request, |
+ which is recorded in the DecisionTaskStarted event in the |
+ workflow history. This enables diagnostic tracing when |
+ problems arise. The form of this identity is user defined. |
+ |
+ :type maximum_page_size: integer :param maximum_page_size: The |
+ maximum number of history events returned in each page. The |
+ default is 100, but the caller can override this value to a |
+ page size smaller than the default. You cannot specify a page |
+ size greater than 100. |
+ |
+ :type next_page_token: string |
+ :param next_page_token: If on a previous call to this method a |
+ NextPageToken was returned, the results are being paginated. |
+ To get the next page of results, repeat the call with the |
+ returned token and all other arguments unchanged. |
+ |
+ :type reverse_order: boolean |
+ :param reverse_order: When set to true, returns the events in |
+ reverse order. By default the results are returned in |
+ ascending order of the eventTimestamp of the events. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('PollForDecisionTask', { |
+ 'domain': domain, |
+ 'taskList': {'name': task_list}, |
+ 'identity': identity, |
+ 'maximumPageSize': maximum_page_size, |
+ 'nextPageToken': next_page_token, |
+ 'reverseOrder': reverse_order, |
+ }) |
+ |
+ def respond_decision_task_completed(self, task_token, |
+ decisions=None, |
+ execution_context=None): |
+ """ |
+ Used by deciders to tell the service that the DecisionTask |
+ identified by the taskToken has successfully completed. |
+ The decisions argument specifies the list of decisions |
+ made while processing the task. |
+ |
+ :type task_token: string |
+ :param task_token: The taskToken of the ActivityTask. |
+ |
+ :type decisions: list |
+ :param decisions: The list of decisions (possibly empty) made by |
+ the decider while processing this decision task. See the docs |
+ for the Decision structure for details. |
+ |
+ :type execution_context: string |
+ :param execution_context: User defined context to add to |
+ workflow execution. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('RespondDecisionTaskCompleted', { |
+ 'taskToken': task_token, |
+ 'decisions': decisions, |
+ 'executionContext': execution_context, |
+ }) |
+ |
+ def request_cancel_workflow_execution(self, domain, workflow_id, |
+ run_id=None): |
+ """ |
+ Records a WorkflowExecutionCancelRequested event in the |
+ currently running workflow execution identified by the given |
+ domain, workflowId, and runId. This logically requests the |
+ cancellation of the workflow execution as a whole. It is up to |
+ the decider to take appropriate actions when it receives an |
+ execution history with this event. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain containing the workflow |
+ execution to cancel. |
+ |
+ :type run_id: string |
+ :param run_id: The runId of the workflow execution to cancel. |
+ |
+ :type workflow_id: string |
+ :param workflow_id: The workflowId of the workflow execution |
+ to cancel. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('RequestCancelWorkflowExecution', { |
+ 'domain': domain, |
+ 'workflowId': workflow_id, |
+ 'runId': run_id, |
+ }) |
+ |
+ def start_workflow_execution(self, domain, workflow_id, |
+ workflow_name, workflow_version, |
+ task_list=None, child_policy=None, |
+ execution_start_to_close_timeout=None, |
+ input=None, tag_list=None, |
+ task_start_to_close_timeout=None): |
+ """ |
+ Starts an execution of the workflow type in the specified |
+ domain using the provided workflowId and input data. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain in which the workflow |
+ execution is created. |
+ |
+ :type workflow_id: string |
+ :param workflow_id: The user defined identifier associated with |
+ the workflow execution. You can use this to associate a |
+ custom identifier with the workflow execution. You may |
+ specify the same identifier if a workflow execution is |
+ logically a restart of a previous execution. You cannot |
+ have two open workflow executions with the same workflowId |
+ at the same time. |
+ |
+ :type workflow_name: string |
+ :param workflow_name: The name of the workflow type. |
+ |
+ :type workflow_version: string |
+ :param workflow_version: The version of the workflow type. |
+ |
+ :type task_list: string |
+ :param task_list: The task list to use for the decision tasks |
+ generated for this workflow execution. This overrides the |
+ defaultTaskList specified when registering the workflow type. |
+ |
+ :type child_policy: string |
+ :param child_policy: If set, specifies the policy to use for the |
+ child workflow executions of this workflow execution if it |
+ is terminated, by calling the TerminateWorkflowExecution |
+ action explicitly or due to an expired timeout. This policy |
+ overrides the default child policy specified when registering |
+ the workflow type using RegisterWorkflowType. The supported |
+ child policies are: |
+ |
+ * TERMINATE: the child executions will be terminated. |
+ * REQUEST_CANCEL: a request to cancel will be attempted |
+ for each child execution by recording a |
+ WorkflowExecutionCancelRequested event in its history. |
+ It is up to the decider to take appropriate actions |
+ when it receives an execution history with this event. |
+ * ABANDON: no action will be taken. The child executions |
+ will continue to run. |
+ |
+ :type execution_start_to_close_timeout: string |
+ :param execution_start_to_close_timeout: The total duration for |
+ this workflow execution. This overrides the |
+ defaultExecutionStartToCloseTimeout specified when |
+ registering the workflow type. |
+ |
+ :type input: string |
+ :param input: The input for the workflow |
+ execution. This is a free form string which should be |
+ meaningful to the workflow you are starting. This input is |
+ made available to the new workflow execution in the |
+ WorkflowExecutionStarted history event. |
+ |
+ :type tag_list: list :param tag_list: The list of tags to |
+ associate with the workflow execution. You can specify a |
+ maximum of 5 tags. You can list workflow executions with a |
+ specific tag by calling list_open_workflow_executions or |
+ list_closed_workflow_executions and specifying a TagFilter. |
+ |
+ :type task_start_to_close_timeout: string :param |
+ task_start_to_close_timeout: Specifies the maximum duration of |
+ decision tasks for this workflow execution. This parameter |
+ overrides the defaultTaskStartToCloseTimout specified when |
+ registering the workflow type using register_workflow_type. |
+ |
+ :raises: UnknownResourceFault, TypeDeprecatedFault, |
+ SWFWorkflowExecutionAlreadyStartedError, SWFLimitExceededError, |
+ SWFOperationNotPermittedError, DefaultUndefinedFault |
+ """ |
+ return self.json_request('StartWorkflowExecution', { |
+ 'domain': domain, |
+ 'workflowId': workflow_id, |
+ 'workflowType': {'name': workflow_name, |
+ 'version': workflow_version}, |
+ 'taskList': {'name': task_list}, |
+ 'childPolicy': child_policy, |
+ 'executionStartToCloseTimeout': execution_start_to_close_timeout, |
+ 'input': input, |
+ 'tagList': tag_list, |
+ 'taskStartToCloseTimeout': task_start_to_close_timeout, |
+ |
+ }) |
+ |
+ def signal_workflow_execution(self, domain, signal_name, workflow_id, |
+ input=None, run_id=None): |
+ """ |
+ Records a WorkflowExecutionSignaled event in the workflow |
+ execution history and creates a decision task for the workflow |
+ execution identified by the given domain, workflowId and |
+ runId. The event is recorded with the specified user defined |
+ signalName and input (if provided). |
+ |
+ :type domain: string |
+ :param domain: The name of the domain containing the workflow |
+ execution to signal. |
+ |
+ :type signal_name: string |
+ :param signal_name: The name of the signal. This name must be |
+ meaningful to the target workflow. |
+ |
+ :type workflow_id: string |
+ :param workflow_id: The workflowId of the workflow execution |
+ to signal. |
+ |
+ :type input: string |
+ :param input: Data to attach to the WorkflowExecutionSignaled |
+ event in the target workflow execution's history. |
+ |
+ :type run_id: string |
+ :param run_id: The runId of the workflow execution to signal. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('SignalWorkflowExecution', { |
+ 'domain': domain, |
+ 'signalName': signal_name, |
+ 'workflowId': workflow_id, |
+ 'input': input, |
+ 'runId': run_id, |
+ }) |
+ |
+ def terminate_workflow_execution(self, domain, workflow_id, |
+ child_policy=None, details=None, |
+ reason=None, run_id=None): |
+ """ |
+ Records a WorkflowExecutionTerminated event and forces closure |
+ of the workflow execution identified by the given domain, |
+ runId, and workflowId. The child policy, registered with the |
+ workflow type or specified when starting this execution, is |
+ applied to any open child workflow executions of this workflow |
+ execution. |
+ |
+ :type domain: string |
+ :param domain: The domain of the workflow execution to terminate. |
+ |
+ :type workflow_id: string |
+ :param workflow_id: The workflowId of the workflow execution |
+ to terminate. |
+ |
+ :type child_policy: string |
+ :param child_policy: If set, specifies the policy to use for |
+ the child workflow executions of the workflow execution being |
+ terminated. This policy overrides the child policy specified |
+ for the workflow execution at registration time or when |
+ starting the execution. The supported child policies are: |
+ |
+ * TERMINATE: the child executions will be terminated. |
+ |
+ * REQUEST_CANCEL: a request to cancel will be attempted |
+ for each child execution by recording a |
+ WorkflowExecutionCancelRequested event in its |
+ history. It is up to the decider to take appropriate |
+ actions when it receives an execution history with this |
+ event. |
+ |
+ * ABANDON: no action will be taken. The child executions |
+ will continue to run. |
+ |
+ :type details: string |
+ :param details: Optional details for terminating the |
+ workflow execution. |
+ |
+ :type reason: string |
+ :param reason: An optional descriptive reason for terminating |
+ the workflow execution. |
+ |
+ :type run_id: string |
+ :param run_id: The runId of the workflow execution to terminate. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('TerminateWorkflowExecution', { |
+ 'domain': domain, |
+ 'workflowId': workflow_id, |
+ 'childPolicy': child_policy, |
+ 'details': details, |
+ 'reason': reason, |
+ 'runId': run_id, |
+ }) |
+ |
+# Actions related to Administration |
+ |
+## Activity Management |
+ |
+ def register_activity_type(self, domain, name, version, task_list=None, |
+ default_task_heartbeat_timeout=None, |
+ default_task_schedule_to_close_timeout=None, |
+ default_task_schedule_to_start_timeout=None, |
+ default_task_start_to_close_timeout=None, |
+ description=None): |
+ """ |
+ Registers a new activity type along with its configuration |
+ settings in the specified domain. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain in which this activity is |
+ to be registered. |
+ |
+ :type name: string |
+ :param name: The name of the activity type within the domain. |
+ |
+ :type version: string |
+ :param version: The version of the activity type. |
+ |
+ :type task_list: string |
+ :param task_list: If set, specifies the default task list to |
+ use for scheduling tasks of this activity type. This default |
+ task list is used if a task list is not provided when a task |
+ is scheduled through the schedule_activity_task Decision. |
+ |
+ :type default_task_heartbeat_timeout: string |
+ :param default_task_heartbeat_timeout: If set, specifies the |
+ default maximum time before which a worker processing a task |
+ of this type must report progress by calling |
+ RecordActivityTaskHeartbeat. If the timeout is exceeded, the |
+ activity task is automatically timed out. This default can be |
+ overridden when scheduling an activity task using the |
+ ScheduleActivityTask Decision. If the activity worker |
+ subsequently attempts to record a heartbeat or returns a |
+ result, the activity worker receives an UnknownResource |
+ fault. In this case, Amazon SWF no longer considers the |
+ activity task to be valid; the activity worker should clean up |
+ the activity task.no docs |
+ |
+ :type default_task_schedule_to_close_timeout: string |
+ :param default_task_schedule_to_close_timeout: If set, |
+ specifies the default maximum duration for a task of this |
+ activity type. This default can be overridden when scheduling |
+ an activity task using the ScheduleActivityTask Decision.no |
+ docs |
+ |
+ :type default_task_schedule_to_start_timeout: string |
+ :param default_task_schedule_to_start_timeout: If set, |
+ specifies the default maximum duration that a task of this |
+ activity type can wait before being assigned to a worker. This |
+ default can be overridden when scheduling an activity task |
+ using the ScheduleActivityTask Decision. |
+ |
+ :type default_task_start_to_close_timeout: string |
+ :param default_task_start_to_close_timeout: If set, specifies |
+ the default maximum duration that a worker can take to process |
+ tasks of this activity type. This default can be overridden |
+ when scheduling an activity task using the |
+ ScheduleActivityTask Decision. |
+ |
+ :type description: string |
+ :param description: A textual description of the activity type. |
+ |
+ :raises: SWFTypeAlreadyExistsError, SWFLimitExceededError, |
+ UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('RegisterActivityType', { |
+ 'domain': domain, |
+ 'name': name, |
+ 'version': version, |
+ 'defaultTaskList': {'name': task_list}, |
+ 'defaultTaskHeartbeatTimeout': default_task_heartbeat_timeout, |
+ 'defaultTaskScheduleToCloseTimeout': default_task_schedule_to_close_timeout, |
+ 'defaultTaskScheduleToStartTimeout': default_task_schedule_to_start_timeout, |
+ 'defaultTaskStartToCloseTimeout': default_task_start_to_close_timeout, |
+ 'description': description, |
+ }) |
+ |
+ def deprecate_activity_type(self, domain, activity_name, activity_version): |
+ """ |
+ Returns information about the specified activity type. This |
+ includes configuration settings provided at registration time |
+ as well as other general information about the type. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain in which the activity |
+ type is registered. |
+ |
+ :type activity_name: string |
+ :param activity_name: The name of this activity. |
+ |
+ :type activity_version: string |
+ :param activity_version: The version of this activity. |
+ |
+ :raises: UnknownResourceFault, TypeDeprecatedFault, |
+ SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('DeprecateActivityType', { |
+ 'domain': domain, |
+ 'activityType': {'name': activity_name, |
+ 'version': activity_version} |
+ }) |
+ |
+## Workflow Management |
+ |
+ def register_workflow_type(self, domain, name, version, |
+ task_list=None, |
+ default_child_policy=None, |
+ default_execution_start_to_close_timeout=None, |
+ default_task_start_to_close_timeout=None, |
+ description=None): |
+ """ |
+ Registers a new workflow type and its configuration settings |
+ in the specified domain. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain in which to register |
+ the workflow type. |
+ |
+ :type name: string |
+ :param name: The name of the workflow type. |
+ |
+ :type version: string |
+ :param version: The version of the workflow type. |
+ |
+ :type task_list: list of name, version of tasks |
+ :param task_list: If set, specifies the default task list to use |
+ for scheduling decision tasks for executions of this workflow |
+ type. This default is used only if a task list is not provided |
+ when starting the execution through the StartWorkflowExecution |
+ Action or StartChildWorkflowExecution Decision. |
+ |
+ :type default_child_policy: string |
+ |
+ :param default_child_policy: If set, specifies the default |
+ policy to use for the child workflow executions when a |
+ workflow execution of this type is terminated, by calling the |
+ TerminateWorkflowExecution action explicitly or due to an |
+ expired timeout. This default can be overridden when starting |
+ a workflow execution using the StartWorkflowExecution action |
+ or the StartChildWorkflowExecution Decision. The supported |
+ child policies are: |
+ |
+ * TERMINATE: the child executions will be terminated. |
+ |
+ * REQUEST_CANCEL: a request to cancel will be attempted |
+ for each child execution by recording a |
+ WorkflowExecutionCancelRequested event in its |
+ history. It is up to the decider to take appropriate |
+ actions when it receives an execution history with this |
+ event. |
+ |
+ * ABANDON: no action will be taken. The child executions |
+ will continue to run.no docs |
+ |
+ :type default_execution_start_to_close_timeout: string |
+ :param default_execution_start_to_close_timeout: If set, |
+ specifies the default maximum duration for executions of this |
+ workflow type. You can override this default when starting an |
+ execution through the StartWorkflowExecution Action or |
+ StartChildWorkflowExecution Decision. |
+ |
+ :type default_task_start_to_close_timeout: string |
+ :param default_task_start_to_close_timeout: If set, specifies |
+ the default maximum duration of decision tasks for this |
+ workflow type. This default can be overridden when starting a |
+ workflow execution using the StartWorkflowExecution action or |
+ the StartChildWorkflowExecution Decision. |
+ |
+ :type description: string |
+ :param description: Textual description of the workflow type. |
+ |
+ :raises: SWFTypeAlreadyExistsError, SWFLimitExceededError, |
+ UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('RegisterWorkflowType', { |
+ 'domain': domain, |
+ 'name': name, |
+ 'version': version, |
+ 'defaultTaskList': {'name': task_list}, |
+ 'defaultChildPolicy': default_child_policy, |
+ 'defaultExecutionStartToCloseTimeout': default_execution_start_to_close_timeout, |
+ 'defaultTaskStartToCloseTimeout': default_task_start_to_close_timeout, |
+ 'description': description, |
+ }) |
+ |
+ def deprecate_workflow_type(self, domain, workflow_name, workflow_version): |
+ """ |
+ Deprecates the specified workflow type. After a workflow type |
+ has been deprecated, you cannot create new executions of that |
+ type. Executions that were started before the type was |
+ deprecated will continue to run. A deprecated workflow type |
+ may still be used when calling visibility actions. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain in which the workflow |
+ type is registered. |
+ |
+ :type workflow_name: string |
+ :param workflow_name: The name of the workflow type. |
+ |
+ :type workflow_version: string |
+ :param workflow_version: The version of the workflow type. |
+ |
+ :raises: UnknownResourceFault, TypeDeprecatedFault, |
+ SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('DeprecateWorkflowType', { |
+ 'domain': domain, |
+ 'workflowType': {'name': workflow_name, |
+ 'version': workflow_version}, |
+ }) |
+ |
+## Domain Management |
+ |
+ def register_domain(self, name, |
+ workflow_execution_retention_period_in_days, |
+ description=None): |
+ """ |
+ Registers a new domain. |
+ |
+ :type name: string |
+ :param name: Name of the domain to register. The name must be unique. |
+ |
+ :type workflow_execution_retention_period_in_days: string |
+ |
+ :param workflow_execution_retention_period_in_days: Specifies |
+ the duration *in days* for which the record (including the |
+ history) of workflow executions in this domain should be kept |
+ by the service. After the retention period, the workflow |
+ execution will not be available in the results of visibility |
+ calls. If a duration of NONE is specified, the records for |
+ workflow executions in this domain are not retained at all. |
+ |
+ :type description: string |
+ :param description: Textual description of the domain. |
+ |
+ :raises: SWFDomainAlreadyExistsError, SWFLimitExceededError, |
+ SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('RegisterDomain', { |
+ 'name': name, |
+ 'workflowExecutionRetentionPeriodInDays': workflow_execution_retention_period_in_days, |
+ 'description': description, |
+ }) |
+ |
+ def deprecate_domain(self, name): |
+ """ |
+ Deprecates the specified domain. After a domain has been |
+ deprecated it cannot be used to create new workflow executions |
+ or register new types. However, you can still use visibility |
+ actions on this domain. Deprecating a domain also deprecates |
+ all activity and workflow types registered in the |
+ domain. Executions that were started before the domain was |
+ deprecated will continue to run. |
+ |
+ :type name: string |
+ :param name: The name of the domain to deprecate. |
+ |
+ :raises: UnknownResourceFault, DomainDeprecatedFault, |
+ SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('DeprecateDomain', {'name': name}) |
+ |
+# Visibility Actions |
+ |
+## Activity Visibility |
+ |
+ def list_activity_types(self, domain, registration_status, |
+ name=None, |
+ maximum_page_size=None, |
+ next_page_token=None, reverse_order=None): |
+ """ |
+ Returns information about all activities registered in the |
+ specified domain that match the specified name and |
+ registration status. The result includes information like |
+ creation date, current status of the activity, etc. The |
+ results may be split into multiple pages. To retrieve |
+ subsequent pages, make the call again using the nextPageToken |
+ returned by the initial call. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain in which the activity |
+ types have been registered. |
+ |
+ :type registration_status: string |
+ :param registration_status: Specifies the registration status |
+ of the activity types to list. Valid values are: |
+ |
+ * REGISTERED |
+ * DEPRECATED |
+ |
+ :type name: string |
+ :param name: If specified, only lists the activity types that |
+ have this name. |
+ |
+ :type maximum_page_size: integer |
+ :param maximum_page_size: The maximum number of results |
+ returned in each page. The default is 100, but the caller can |
+ override this value to a page size smaller than the |
+ default. You cannot specify a page size greater than 100. |
+ |
+ :type next_page_token: string |
+ :param next_page_token: If on a previous call to this method a |
+ NextResultToken was returned, the results have more than one |
+ page. To get the next page of results, repeat the call with |
+ the nextPageToken and keep all other arguments unchanged. |
+ |
+ :type reverse_order: boolean |
+ |
+ :param reverse_order: When set to true, returns the results in |
+ reverse order. By default the results are returned in |
+ ascending alphabetical order of the name of the activity |
+ types. |
+ |
+ :raises: SWFOperationNotPermittedError, UnknownResourceFault |
+ """ |
+ return self.json_request('ListActivityTypes', { |
+ 'domain': domain, |
+ 'name': name, |
+ 'registrationStatus': registration_status, |
+ 'maximumPageSize': maximum_page_size, |
+ 'nextPageToken': next_page_token, |
+ 'reverseOrder': reverse_order, |
+ }) |
+ |
+ def describe_activity_type(self, domain, activity_name, activity_version): |
+ """ |
+ Returns information about the specified activity type. This |
+ includes configuration settings provided at registration time |
+ as well as other general information about the type. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain in which the activity |
+ type is registered. |
+ |
+ :type activity_name: string |
+ :param activity_name: The name of this activity. |
+ |
+ :type activity_version: string |
+ :param activity_version: The version of this activity. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('DescribeActivityType', { |
+ 'domain': domain, |
+ 'activityType': {'name': activity_name, |
+ 'version': activity_version} |
+ }) |
+ |
+## Workflow Visibility |
+ |
+ def list_workflow_types(self, domain, registration_status, |
+ maximum_page_size=None, name=None, |
+ next_page_token=None, reverse_order=None): |
+ """ |
+ Returns information about workflow types in the specified |
+ domain. The results may be split into multiple pages that can |
+ be retrieved by making the call repeatedly. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain in which the workflow |
+ types have been registered. |
+ |
+ :type registration_status: string |
+ :param registration_status: Specifies the registration status |
+ of the activity types to list. Valid values are: |
+ |
+ * REGISTERED |
+ * DEPRECATED |
+ |
+ :type name: string |
+ :param name: If specified, lists the workflow type with this name. |
+ |
+ :type maximum_page_size: integer |
+ :param maximum_page_size: The maximum number of results |
+ returned in each page. The default is 100, but the caller can |
+ override this value to a page size smaller than the |
+ default. You cannot specify a page size greater than 100. |
+ |
+ :type next_page_token: string |
+ :param next_page_token: If on a previous call to this method a |
+ NextPageToken was returned, the results are being |
+ paginated. To get the next page of results, repeat the call |
+ with the returned token and all other arguments unchanged. |
+ |
+ :type reverse_order: boolean |
+ :param reverse_order: When set to true, returns the results in |
+ reverse order. By default the results are returned in |
+ ascending alphabetical order of the name of the workflow |
+ types. |
+ |
+ :raises: SWFOperationNotPermittedError, UnknownResourceFault |
+ """ |
+ return self.json_request('ListWorkflowTypes', { |
+ 'domain': domain, |
+ 'name': name, |
+ 'registrationStatus': registration_status, |
+ 'maximumPageSize': maximum_page_size, |
+ 'nextPageToken': next_page_token, |
+ 'reverseOrder': reverse_order, |
+ }) |
+ |
+ def describe_workflow_type(self, domain, workflow_name, workflow_version): |
+ """ |
+ Returns information about the specified workflow type. This |
+ includes configuration settings specified when the type was |
+ registered and other information such as creation date, |
+ current status, etc. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain in which this workflow |
+ type is registered. |
+ |
+ :type workflow_name: string |
+ :param workflow_name: The name of the workflow type. |
+ |
+ :type workflow_version: string |
+ :param workflow_version: The version of the workflow type. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('DescribeWorkflowType', { |
+ 'domain': domain, |
+ 'workflowType': {'name': workflow_name, |
+ 'version': workflow_version} |
+ }) |
+ |
+## Workflow Execution Visibility |
+ |
+ def describe_workflow_execution(self, domain, run_id, workflow_id): |
+ """ |
+ Returns information about the specified workflow execution |
+ including its type and some statistics. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain containing the |
+ workflow execution. |
+ |
+ :type run_id: string |
+ :param run_id: A system generated unique identifier for the |
+ workflow execution. |
+ |
+ :type workflow_id: string |
+ :param workflow_id: The user defined identifier associated |
+ with the workflow execution. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('DescribeWorkflowExecution', { |
+ 'domain': domain, |
+ 'execution': {'runId': run_id, |
+ 'workflowId': workflow_id}, |
+ }) |
+ |
+ def get_workflow_execution_history(self, domain, run_id, workflow_id, |
+ maximum_page_size=None, |
+ next_page_token=None, |
+ reverse_order=None): |
+ """ |
+ Returns the history of the specified workflow execution. The |
+ results may be split into multiple pages. To retrieve |
+ subsequent pages, make the call again using the nextPageToken |
+ returned by the initial call. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain containing the |
+ workflow execution. |
+ |
+ :type run_id: string |
+ :param run_id: A system generated unique identifier for the |
+ workflow execution. |
+ |
+ :type workflow_id: string |
+ :param workflow_id: The user defined identifier associated |
+ with the workflow execution. |
+ |
+ :type maximum_page_size: integer |
+ :param maximum_page_size: Specifies the maximum number of |
+ history events returned in one page. The next page in the |
+ result is identified by the NextPageToken returned. By default |
+ 100 history events are returned in a page but the caller can |
+ override this value to a page size smaller than the |
+ default. You cannot specify a page size larger than 100. |
+ |
+ :type next_page_token: string |
+ :param next_page_token: If a NextPageToken is returned, the |
+ result has more than one pages. To get the next page, repeat |
+ the call and specify the nextPageToken with all other |
+ arguments unchanged. |
+ |
+ :type reverse_order: boolean |
+ :param reverse_order: When set to true, returns the events in |
+ reverse order. By default the results are returned in |
+ ascending order of the eventTimeStamp of the events. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('GetWorkflowExecutionHistory', { |
+ 'domain': domain, |
+ 'execution': {'runId': run_id, |
+ 'workflowId': workflow_id}, |
+ 'maximumPageSize': maximum_page_size, |
+ 'nextPageToken': next_page_token, |
+ 'reverseOrder': reverse_order, |
+ }) |
+ |
+ def count_open_workflow_executions(self, domain, latest_date, oldest_date, |
+ tag=None, |
+ workflow_id=None, |
+ workflow_name=None, |
+ workflow_version=None): |
+ """ |
+ Returns the number of open workflow executions within the |
+ given domain that meet the specified filtering criteria. |
+ |
+ .. note: |
+ workflow_id, workflow_name/workflow_version and tag are mutually |
+ exclusive. You can specify at most one of these in a request. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain containing the |
+ workflow executions to count. |
+ |
+ :type latest_date: timestamp |
+ :param latest_date: Specifies the latest start or close date |
+ and time to return. |
+ |
+ :type oldest_date: timestamp |
+ :param oldest_date: Specifies the oldest start or close date |
+ and time to return. |
+ |
+ :type workflow_name: string |
+ :param workflow_name: Name of the workflow type to filter on. |
+ |
+ :type workflow_version: string |
+ :param workflow_version: Version of the workflow type to filter on. |
+ |
+ :type tag: string |
+ :param tag: If specified, only executions that have a tag |
+ that matches the filter are counted. |
+ |
+ :type workflow_id: string |
+ :param workflow_id: If specified, only workflow executions |
+ matching the workflow_id are counted. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('CountOpenWorkflowExecutions', { |
+ 'domain': domain, |
+ 'startTimeFilter': {'oldestDate': oldest_date, |
+ 'latestDate': latest_date}, |
+ 'typeFilter': {'name': workflow_name, |
+ 'version': workflow_version}, |
+ 'executionFilter': {'workflowId': workflow_id}, |
+ 'tagFilter': {'tag': tag}, |
+ }) |
+ |
+ def list_open_workflow_executions(self, domain, |
+ oldest_date, |
+ latest_date=None, |
+ tag=None, |
+ workflow_id=None, |
+ workflow_name=None, |
+ workflow_version=None, |
+ maximum_page_size=None, |
+ next_page_token=None, |
+ reverse_order=None): |
+ """ |
+ Returns the list of open workflow executions within the |
+ given domain that meet the specified filtering criteria. |
+ |
+ .. note: |
+ workflow_id, workflow_name/workflow_version |
+ and tag are mutually exclusive. You can specify at most |
+ one of these in a request. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain containing the |
+ workflow executions to count. |
+ |
+ :type latest_date: timestamp |
+ :param latest_date: Specifies the latest start or close date |
+ and time to return. |
+ |
+ :type oldest_date: timestamp |
+ :param oldest_date: Specifies the oldest start or close date |
+ and time to return. |
+ |
+ :type tag: string |
+ :param tag: If specified, only executions that have a tag |
+ that matches the filter are counted. |
+ |
+ :type workflow_id: string |
+ :param workflow_id: If specified, only workflow executions |
+ matching the workflow_id are counted. |
+ |
+ :type workflow_name: string |
+ :param workflow_name: Name of the workflow type to filter on. |
+ |
+ :type workflow_version: string |
+ :param workflow_version: Version of the workflow type to filter on. |
+ |
+ :type maximum_page_size: integer |
+ :param maximum_page_size: The maximum number of results |
+ returned in each page. The default is 100, but the caller can |
+ override this value to a page size smaller than the |
+ default. You cannot specify a page size greater than 100. |
+ |
+ :type next_page_token: string |
+ :param next_page_token: If on a previous call to this method a |
+ NextPageToken was returned, the results are being |
+ paginated. To get the next page of results, repeat the call |
+ with the returned token and all other arguments unchanged. |
+ |
+ :type reverse_order: boolean |
+ :param reverse_order: When set to true, returns the results in |
+ reverse order. By default the results are returned in |
+ descending order of the start or the close time of the |
+ executions. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ |
+ """ |
+ return self.json_request('ListOpenWorkflowExecutions', { |
+ 'domain': domain, |
+ 'startTimeFilter': {'oldestDate': oldest_date, |
+ 'latestDate': latest_date}, |
+ 'tagFilter': {'tag': tag}, |
+ 'typeFilter': {'name': workflow_name, |
+ 'version': workflow_version}, |
+ 'executionFilter': {'workflowId': workflow_id}, |
+ 'maximumPageSize': maximum_page_size, |
+ 'nextPageToken': next_page_token, |
+ 'reverseOrder': reverse_order, |
+ }) |
+ |
+ def count_closed_workflow_executions(self, domain, |
+ start_latest_date=None, |
+ start_oldest_date=None, |
+ close_latest_date=None, |
+ close_oldest_date=None, |
+ close_status=None, |
+ tag=None, |
+ workflow_id=None, |
+ workflow_name=None, |
+ workflow_version=None): |
+ """ |
+ Returns the number of closed workflow executions within the |
+ given domain that meet the specified filtering criteria. |
+ |
+ .. note: |
+ close_status, workflow_id, workflow_name/workflow_version |
+ and tag are mutually exclusive. You can specify at most |
+ one of these in a request. |
+ |
+ .. note: |
+ start_latest_date/start_oldest_date and |
+ close_latest_date/close_oldest_date are mutually |
+ exclusive. You can specify at most one of these in a request. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain containing the |
+ workflow executions to count. |
+ |
+ :type start_latest_date: timestamp |
+ :param start_latest_date: If specified, only workflow executions |
+ that meet the start time criteria of the filter are counted. |
+ |
+ :type start_oldest_date: timestamp |
+ :param start_oldest_date: If specified, only workflow executions |
+ that meet the start time criteria of the filter are counted. |
+ |
+ :type close_latest_date: timestamp |
+ :param close_latest_date: If specified, only workflow executions |
+ that meet the close time criteria of the filter are counted. |
+ |
+ :type close_oldest_date: timestamp |
+ :param close_oldest_date: If specified, only workflow executions |
+ that meet the close time criteria of the filter are counted. |
+ |
+ :type close_status: string |
+ :param close_status: The close status that must match the close status |
+ of an execution for it to meet the criteria of this filter. |
+ Valid values are: |
+ |
+ * COMPLETED |
+ * FAILED |
+ * CANCELED |
+ * TERMINATED |
+ * CONTINUED_AS_NEW |
+ * TIMED_OUT |
+ |
+ :type tag: string |
+ :param tag: If specified, only executions that have a tag |
+ that matches the filter are counted. |
+ |
+ :type workflow_id: string |
+ :param workflow_id: If specified, only workflow executions |
+ matching the workflow_id are counted. |
+ |
+ :type workflow_name: string |
+ :param workflow_name: Name of the workflow type to filter on. |
+ |
+ :type workflow_version: string |
+ :param workflow_version: Version of the workflow type to filter on. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('CountClosedWorkflowExecutions', { |
+ 'domain': domain, |
+ 'startTimeFilter': {'oldestDate': start_oldest_date, |
+ 'latestDate': start_latest_date}, |
+ 'closeTimeFilter': {'oldestDate': close_oldest_date, |
+ 'latestDate': close_latest_date}, |
+ 'closeStatusFilter': {'status': close_status}, |
+ 'tagFilter': {'tag': tag}, |
+ 'typeFilter': {'name': workflow_name, |
+ 'version': workflow_version}, |
+ 'executionFilter': {'workflowId': workflow_id} |
+ }) |
+ |
+ def list_closed_workflow_executions(self, domain, |
+ start_latest_date=None, |
+ start_oldest_date=None, |
+ close_latest_date=None, |
+ close_oldest_date=None, |
+ close_status=None, |
+ tag=None, |
+ workflow_id=None, |
+ workflow_name=None, |
+ workflow_version=None, |
+ maximum_page_size=None, |
+ next_page_token=None, |
+ reverse_order=None): |
+ """ |
+ Returns the number of closed workflow executions within the |
+ given domain that meet the specified filtering criteria. |
+ |
+ .. note: |
+ close_status, workflow_id, workflow_name/workflow_version |
+ and tag are mutually exclusive. You can specify at most |
+ one of these in a request. |
+ |
+ .. note: |
+ start_latest_date/start_oldest_date and |
+ close_latest_date/close_oldest_date are mutually |
+ exclusive. You can specify at most one of these in a request. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain containing the |
+ workflow executions to count. |
+ |
+ :type start_latest_date: timestamp |
+ :param start_latest_date: If specified, only workflow executions |
+ that meet the start time criteria of the filter are counted. |
+ |
+ :type start_oldest_date: timestamp |
+ :param start_oldest_date: If specified, only workflow executions |
+ that meet the start time criteria of the filter are counted. |
+ |
+ :type close_latest_date: timestamp |
+ :param close_latest_date: If specified, only workflow executions |
+ that meet the close time criteria of the filter are counted. |
+ |
+ :type close_oldest_date: timestamp |
+ :param close_oldest_date: If specified, only workflow executions |
+ that meet the close time criteria of the filter are counted. |
+ |
+ :type close_status: string |
+ :param close_status: The close status that must match the close status |
+ of an execution for it to meet the criteria of this filter. |
+ Valid values are: |
+ |
+ * COMPLETED |
+ * FAILED |
+ * CANCELED |
+ * TERMINATED |
+ * CONTINUED_AS_NEW |
+ * TIMED_OUT |
+ |
+ :type tag: string |
+ :param tag: If specified, only executions that have a tag |
+ that matches the filter are counted. |
+ |
+ :type workflow_id: string |
+ :param workflow_id: If specified, only workflow executions |
+ matching the workflow_id are counted. |
+ |
+ :type workflow_name: string |
+ :param workflow_name: Name of the workflow type to filter on. |
+ |
+ :type workflow_version: string |
+ :param workflow_version: Version of the workflow type to filter on. |
+ |
+ :type maximum_page_size: integer |
+ :param maximum_page_size: The maximum number of results |
+ returned in each page. The default is 100, but the caller can |
+ override this value to a page size smaller than the |
+ default. You cannot specify a page size greater than 100. |
+ |
+ :type next_page_token: string |
+ :param next_page_token: If on a previous call to this method a |
+ NextPageToken was returned, the results are being |
+ paginated. To get the next page of results, repeat the call |
+ with the returned token and all other arguments unchanged. |
+ |
+ :type reverse_order: boolean |
+ :param reverse_order: When set to true, returns the results in |
+ reverse order. By default the results are returned in |
+ descending order of the start or the close time of the |
+ executions. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('ListClosedWorkflowExecutions', { |
+ 'domain': domain, |
+ 'startTimeFilter': {'oldestDate': start_oldest_date, |
+ 'latestDate': start_latest_date}, |
+ 'closeTimeFilter': {'oldestDate': close_oldest_date, |
+ 'latestDate': close_latest_date}, |
+ 'executionFilter': {'workflowId': workflow_id}, |
+ 'closeStatusFilter': {'status': close_status}, |
+ 'tagFilter': {'tag': tag}, |
+ 'typeFilter': {'name': workflow_name, |
+ 'version': workflow_version}, |
+ 'maximumPageSize': maximum_page_size, |
+ 'nextPageToken': next_page_token, |
+ 'reverseOrder': reverse_order, |
+ }) |
+ |
+## Domain Visibility |
+ |
+ def list_domains(self, registration_status, |
+ maximum_page_size=None, |
+ next_page_token=None, reverse_order=None): |
+ """ |
+ Returns the list of domains registered in the account. The |
+ results may be split into multiple pages. To retrieve |
+ subsequent pages, make the call again using the nextPageToken |
+ returned by the initial call. |
+ |
+ :type registration_status: string |
+ :param registration_status: Specifies the registration status |
+ of the domains to list. Valid Values: |
+ |
+ * REGISTERED |
+ * DEPRECATED |
+ |
+ :type maximum_page_size: integer |
+ :param maximum_page_size: The maximum number of results |
+ returned in each page. The default is 100, but the caller can |
+ override this value to a page size smaller than the |
+ default. You cannot specify a page size greater than 100. |
+ |
+ :type next_page_token: string |
+ :param next_page_token: If on a previous call to this method a |
+ NextPageToken was returned, the result has more than one |
+ page. To get the next page of results, repeat the call with |
+ the returned token and all other arguments unchanged. |
+ |
+ :type reverse_order: boolean |
+ :param reverse_order: When set to true, returns the results in |
+ reverse order. By default the results are returned in |
+ ascending alphabetical order of the name of the domains. |
+ |
+ :raises: SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('ListDomains', { |
+ 'registrationStatus': registration_status, |
+ 'maximumPageSize': maximum_page_size, |
+ 'nextPageToken': next_page_token, |
+ 'reverseOrder': reverse_order, |
+ }) |
+ |
+ def describe_domain(self, name): |
+ """ |
+ Returns information about the specified domain including |
+ description and status. |
+ |
+ :type name: string |
+ :param name: The name of the domain to describe. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('DescribeDomain', {'name': name}) |
+ |
+## Task List Visibility |
+ |
+ def count_pending_decision_tasks(self, domain, task_list): |
+ """ |
+ Returns the estimated number of decision tasks in the |
+ specified task list. The count returned is an approximation |
+ and is not guaranteed to be exact. If you specify a task list |
+ that no decision task was ever scheduled in then 0 will be |
+ returned. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain that contains the task list. |
+ |
+ :type task_list: string |
+ :param task_list: The name of the task list. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('CountPendingDecisionTasks', { |
+ 'domain': domain, |
+ 'taskList': {'name': task_list} |
+ }) |
+ |
+ def count_pending_activity_tasks(self, domain, task_list): |
+ """ |
+ Returns the estimated number of activity tasks in the |
+ specified task list. The count returned is an approximation |
+ and is not guaranteed to be exact. If you specify a task list |
+ that no activity task was ever scheduled in then 0 will be |
+ returned. |
+ |
+ :type domain: string |
+ :param domain: The name of the domain that contains the task list. |
+ |
+ :type task_list: string |
+ :param task_list: The name of the task list. |
+ |
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError |
+ """ |
+ return self.json_request('CountPendingActivityTasks', { |
+ 'domain': domain, |
+ 'taskList': {'name': task_list} |
+ }) |