Commit Graph

903 Commits

Author SHA1 Message Date
Jean-Baptiste Barth
5f0684fca5 Use dict.values() instead of dict.items() where possible
(suggested in @spulec review)
2015-11-19 11:45:27 +01:00
Jean-Baptiste Barth
de646cf7ac Fix python 3 compatibility: filter() returns an iterator now 2015-11-19 11:45:27 +01:00
Jean-Baptiste Barth
248975d4e6 Improve SWF timeouts processing: now processed in order, one by one 2015-11-19 11:45:27 +01:00
Jean-Baptiste Barth
7f2cbb79b0 Refactor SWF workflow execution to ease next timeout change 2015-11-19 11:45:27 +01:00
Jean-Baptiste Barth
6027bf15c1 Move some timeout conditionals to concerned models 2015-11-19 11:45:27 +01:00
Jean-Baptiste Barth
d007dfe3ff Remove process_timeouts() method in favor of timeout(<Timeout>) and a helper for tests 2015-11-19 11:45:27 +01:00
Jean-Baptiste Barth
65c35bfa69 Make timeout events appear at the right time in workflow history 2015-11-19 11:45:27 +01:00
Jean-Baptiste Barth
d618585790 Refactor timeouts processing so it will be easier to compute them in order 2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
61bb550052 Ensure activity and decision tasks cannot progress on a closed workflow
This is a second barrier because I'm a little nervous about this and I
don't want moto/swf to make any activity progress while in the real
world service, it's strictly impossible once the execution is closed.
Python doesn't seem to have any nice way of freezing an object so here
we go with a manual boundary...
2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
65c95ab5bc Ensure activity and decision tasks cannot timeout on a closed workflow 2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
9c3996ff58 Add WorkflowExecution.open to clarify code in some places 2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
f38d23e483 Implement start to close timeout on SWF workflow executions 2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
86973f2b87 Implement start to close timeout on SWF decision tasks 2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
b386495520 Use list comprehensions instead of filter() for easier moto/swf python 3.x compatibility 2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
3a5f679783 Fix python 3.3 compatibility in moto/swf regarging string types detection 2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
c0b4aadd92 Fix python 3.x compatibility regarding json loading
Error on travis-ci was:

    TypeError: can't use a string pattern on a bytes-like object
2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
2cd3d5fb45 Fix python 3.x compatibility regarding iterations on a dict
Error on travis-ci was:

    AttributeError: 'dict' object has no attribute 'iteritems'

And actually it's been removed in python 3.x in favor of dict.items()
2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
e9732140e5 Fix python 2.6 compatibility for moto/swf 2015-11-19 11:45:26 +01:00
Jean-Baptiste Barth
90c8797abd Implement heartbeat timeout on SWF activity tasks 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
f576f3765c Add SWF endpoint RecordActivityTaskHeartbeat 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
804d2e91b5 Improve workflow selection before raising a WorkflowExecutionAlreadyStartedFault 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
96d6bb056b Add SWF endpoint TerminateWorkflowExecution 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
98948a01c8 Add missing attributes in DescribeWorkflowExecution responses 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
fd12e317f8 Add SWF endpoint RespondActivityTaskFailed 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
c9e8ad03f8 Add SWF endpoint RespondActivityTaskCompleted 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
08643945df Add SWF endpoint CountPendingActivityTasks 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
761ab816f9 Add SWF endpoint PollForActivityTask 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
d650f71d9c Simplify decision task handling in SWF backend 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
be71909a8c Rework task lists for activity/decision tasks 2015-11-19 11:45:25 +01:00
Jean-Baptiste Barth
83c08b7655 Remove unused import 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
a713005882 Simplify implementation of ScheduleActivityTask decision 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
5e086223c2 Implement ScheduleActivityTask decision 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
53630dc061 Add a Domain to WorkflowExecution objects
This will be needed later for finding an activity type for instance.
2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
fa4608be98 Add basic ActivityTask model 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
49e44c8ee6 Fix openDecisionTasks counter not updated when we complete a DecisionTask 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
918cf8a4e3 Fix decision parameters: attributes are in foo*Decision*Attributes 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
417f732b53 Implement FailWorkflowExecution decision 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
6810973b76 Update obsolete comment about SWF decisions completion 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
558b84fb6a Add checks for *DecisionAttributes within RespondDecisionTaskCompleted 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
507351612e Fix missing space in decision validation error 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
0749b30fb4 Add some basic checks on SWF decisions, more to come later 2015-11-19 11:45:24 +01:00
Jean-Baptiste Barth
381eb5eb0f Implement CompleteWorkflowExecution decision 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
d97c770849 Add first version of SWF endpoint RespondDecisionTaskCompleted
There's just the structure for now, for now the workflow execution
doesn't know how to handle any decision type.
2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
c72c198208 Fix WorkflowExecution event ids not increasing 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
a137e5c5c9 Add SWF endpoint CountPendingDecisionTasks 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
4e223d2318 Fix PollForDecisionTask not respecting requested task list 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
1ccadb169f Simplify WorkflowExecution model since it always has a task list 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
c310a04c74 Remove obsolete command about DefaultUndefinedFault
(already implemented a few commits ago)
2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
aa4adbb76e Implement reverseOrder option for GetWorkflowExecutionHistory and PollForDecisionTask 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
c16da9da2d Add SWF endpoint PollForDecisionTask and associated DecisionTask model 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
464aef293c Add SWF endpoint GetWorkflowExecutionHistory and associated HistoryEvent model 2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
3ce5b29356 Handle WorkflowExecution/WorkflowType options inheritance
... and potential resulting DefaultUndefinedFault errors.
2015-11-19 11:45:23 +01:00
Jean-Baptiste Barth
1026fb819f Split SWF models into their own file
Given the docs[1] we will implement a hundred models or so if we want to
have a full implementation of the SWF API, so better not have a 3k lines
long models.py file, too hard to manipulate.

[1] http://docs.aws.amazon.com/amazonswf/latest/apireference/API_DecisionTask.html
2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
2878252816 Add SWF endpoint: DescribeWorkflowExecution 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
a589dc08b5 Make workflow_id a required property of WorkflowExecution
Given the response of DescribeWorkflowExecution endpoint, the
WorkflowExecution has to know about its own workflowId.
2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
c08c20d197 Move SWF Domain full dict representation to model 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
92cf64c2ad Add SWF endpoint: StartWorkflowExecution 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
fbcdd5f2bd Use dict[] to document required keys in SWF responses 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
168f61c6a8 Remove useless usage of templating in SWF responses implementation 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
036ab194ba Add 'status' to SWF *Type string representation 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
8b02c0b85e Move *Type __repr__ to GenericType 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
080b79338d Simplify how we store SWF types inside a SWF domain 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
5c02fcd94b Abstract away SWF *Type models logic into a GenericType class 2015-11-19 11:45:22 +01:00
Jean-Baptiste Barth
9483355584 Prepare SWF objects representations directly via json.dumps()
... instead of jinja2 templates that are absolutely not suited for this
purpose, and hard to test.
2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
6e6b325225 Deduplicate logic between ActivityType's and WorkflowType's 2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
c4e903706c Add SWF endpoints: RegisterWorkflowType, DeprecateWorkflowType, ListWorkflowTypes, DescribeWorkflowType 2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
b680b2ec3c Add SWF endpoints: RegisterActivityType, DeprecateActivityType, ListActivityType, DescribeActivityType 2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
cb46eac513 Implement naive reverseOrder option for SWF's ListDomains endpoint 2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
3e2c7dec83 Fix json template for listing SWF domains 2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
2c3b286b6b Improve SWF Domain representation 2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
49bbd7399e Add some TODO comments in SWF mocks 2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
5392978eaf Check parameters are strings on SWF endpoints
SWF endpoints raise a 400 Bad Request for non-string types, and boto
doesn't enforce it as of today, so better have some safety nets in moto
to avoid this common mistake.

Example exception raised by Boto:

    SWFResponseError: SWFResponseError: 400 Bad Request
    {u'Message': u'class java.lang.Short can not be converted to an String',
    u'__type': u'com.amazon.coral.service#SerializationException'}
2015-11-19 11:45:21 +01:00
Jean-Baptiste Barth
8e3fd6c7de Add SWF endpoints: RegisterDomain, DeprecateDomain, ListDomains, DescribeDomain 2015-11-19 11:45:20 +01:00
mfranke
7220969feb typo 2015-11-17 18:18:02 +01:00
Akira Chiku
7a11500171 Implement JSON responses for EMR (for Boto3) 2015-11-15 17:24:36 +09:00
Steve Pulec
32dd72f6b7 Change BaseResponse action parsing to be a bit more generic.
Some service like SWF have action headers like
com.amazonaws.swf.service.model.SimpleWorkflowService.<action>. By using
-1 instead of 1, we can accomodate both scenarios.
2015-11-14 13:42:22 -05:00
mfranke
f93b9a86e9 add put_records API
fix create_stream API to get right response in case of stream already exists
2015-11-12 10:05:02 +01:00
Steve Pulec
4aa14960d2 Add support for partial updates and SS in dynamodb. 2015-11-11 21:59:55 -05:00
Steve Pulec
c38731ecbb Add ACL support for S3 buckets. 2015-11-11 20:26:29 -05:00
Ian Dees
27e7767883 Remove stuff that doesn't need to change 2015-11-09 20:19:51 -05:00
Ian Dees
97b7781c13 Include XML response template 2015-11-09 20:09:08 -05:00
Ian Dees
f8cbcfc098 How about in the SQSResponse object 2015-11-09 20:03:52 -05:00
Ian Dees
b732e116a4 Try the length of the body 2015-11-09 19:53:14 -05:00
Ian Dees
540ee79ad9 Put the size check in the queue 2015-11-09 19:51:17 -05:00
Ian Dees
5b2a724219 Check SQS message size 2015-11-09 19:29:08 -05:00
Steve Pulec
ab3682a55c py3 fix. 2015-11-07 16:58:39 -05:00
Steve Pulec
8d41d0019b Add basic support for AttributeUpdates in Dynamo update_item. Closes #449. 2015-11-07 16:45:24 -05:00
Steve Pulec
18d63a6cfe Add basics of S# website configuration. Closes #442. 2015-11-04 18:55:41 -05:00
Steve Pulec
0061eb77d7 0.4.18 2015-11-03 14:01:09 -05:00
Steve Pulec
cddf139bbc Add ability to create EBS volumes from snapshots. Closes #447. 2015-11-03 09:37:02 -05:00
Steve Pulec
d3e4c2c4b5 Add ability for specific backends to enable template escaping. Closes #441. 2015-11-03 09:25:47 -05:00
Steve Pulec
73452c79f7 Add milliseconds to EC2 launch time. Closes #445. 2015-11-02 23:33:39 -05:00
Steve Pulec
d9faab3e5e Fix error for describing kinesis stream that has not been created. 2015-11-02 13:25:31 -05:00
Steve Pulec
99a4bcf98f 0.4.17 2015-11-02 10:11:14 -05:00
Steve Pulec
fcaa8fbce7 0.4.16 2015-11-02 10:09:17 -05:00
Steve Pulec
1d58aae42a Merge pull request #438 from ZuluPro/instancetypes
Added describe instance types
2015-11-01 14:30:32 -05:00
Steve Pulec
976c470fa3 Merge pull request #443 from gvlproject/master
When adding security group rules, allow a source group only to be spe…
2015-11-01 14:25:42 -05:00
Steve Pulec
1b1cf40af8 handle optional compression format. 2015-10-30 14:18:29 -04:00
Steve Pulec
1c95de421d Merge pull request #446 from spulec/firehose
firest draft of firehose support.
2015-10-30 10:55:25 -04:00
Steve Pulec
7fcf84b32a easier fallback. 2015-10-30 10:13:57 -04:00