gcloud 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (768) hide show
  1. data.tar.gz.sig +0 -0
  2. data/CHANGELOG +4 -0
  3. data/Makefile +4 -0
  4. data/Manifest +760 -1
  5. data/bin/gcloud +7 -0
  6. data/bin/{gcutil → gcutil.symlink} +0 -0
  7. data/bin/gsutil-symlink +377 -0
  8. data/gcloud.gemspec +5 -5
  9. data/packages/gsutil/CHECKSUM +1 -0
  10. data/packages/gsutil/COPYING +202 -0
  11. data/packages/gsutil/LICENSE.third_party +295 -0
  12. data/packages/gsutil/MANIFEST.in +5 -0
  13. data/packages/gsutil/README +38 -0
  14. data/packages/gsutil/README.pkg +49 -0
  15. data/packages/gsutil/ReleaseNotes.txt +780 -0
  16. data/packages/gsutil/VERSION +1 -0
  17. data/packages/gsutil/boto/Changelog.rst +35 -0
  18. data/packages/gsutil/boto/LICENSE +18 -0
  19. data/packages/gsutil/boto/MANIFEST.in +12 -0
  20. data/packages/gsutil/boto/README.rst +163 -0
  21. data/packages/gsutil/boto/bin/asadmin +290 -0
  22. data/packages/gsutil/boto/bin/bundle_image +27 -0
  23. data/packages/gsutil/boto/bin/cfadmin +108 -0
  24. data/packages/gsutil/boto/bin/cq +89 -0
  25. data/packages/gsutil/boto/bin/cwutil +140 -0
  26. data/packages/gsutil/boto/bin/elbadmin +284 -0
  27. data/packages/gsutil/boto/bin/fetch_file +43 -0
  28. data/packages/gsutil/boto/bin/glacier +154 -0
  29. data/packages/gsutil/boto/bin/instance_events +145 -0
  30. data/packages/gsutil/boto/bin/kill_instance +35 -0
  31. data/packages/gsutil/boto/bin/launch_instance +252 -0
  32. data/packages/gsutil/boto/bin/list_instances +90 -0
  33. data/packages/gsutil/boto/bin/lss3 +77 -0
  34. data/packages/gsutil/boto/bin/mturk +465 -0
  35. data/packages/gsutil/boto/bin/pyami_sendmail +52 -0
  36. data/packages/gsutil/boto/bin/route53 +205 -0
  37. data/packages/gsutil/boto/bin/s3put +374 -0
  38. data/packages/gsutil/boto/bin/sdbadmin +194 -0
  39. data/packages/gsutil/boto/bin/taskadmin +116 -0
  40. data/packages/gsutil/boto/boto/__init__.py +793 -0
  41. data/packages/gsutil/boto/boto/__init__.pyc +0 -0
  42. data/packages/gsutil/boto/boto/auth.py +682 -0
  43. data/packages/gsutil/boto/boto/auth.pyc +0 -0
  44. data/packages/gsutil/boto/boto/auth_handler.py +58 -0
  45. data/packages/gsutil/boto/boto/auth_handler.pyc +0 -0
  46. data/packages/gsutil/boto/boto/beanstalk/__init__.py +65 -0
  47. data/packages/gsutil/boto/boto/beanstalk/exception.py +64 -0
  48. data/packages/gsutil/boto/boto/beanstalk/layer1.py +1153 -0
  49. data/packages/gsutil/boto/boto/beanstalk/response.py +703 -0
  50. data/packages/gsutil/boto/boto/beanstalk/wrapper.py +29 -0
  51. data/packages/gsutil/boto/boto/cacerts/__init__.py +22 -0
  52. data/packages/gsutil/boto/boto/cacerts/__init__.pyc +0 -0
  53. data/packages/gsutil/boto/boto/cacerts/cacerts.txt +633 -0
  54. data/packages/gsutil/boto/boto/cloudformation/__init__.py +68 -0
  55. data/packages/gsutil/boto/boto/cloudformation/connection.py +364 -0
  56. data/packages/gsutil/boto/boto/cloudformation/stack.py +360 -0
  57. data/packages/gsutil/boto/boto/cloudformation/template.py +43 -0
  58. data/packages/gsutil/boto/boto/cloudfront/__init__.py +324 -0
  59. data/packages/gsutil/boto/boto/cloudfront/distribution.py +745 -0
  60. data/packages/gsutil/boto/boto/cloudfront/exception.py +26 -0
  61. data/packages/gsutil/boto/boto/cloudfront/identity.py +122 -0
  62. data/packages/gsutil/boto/boto/cloudfront/invalidation.py +216 -0
  63. data/packages/gsutil/boto/boto/cloudfront/logging.py +38 -0
  64. data/packages/gsutil/boto/boto/cloudfront/object.py +48 -0
  65. data/packages/gsutil/boto/boto/cloudfront/origin.py +150 -0
  66. data/packages/gsutil/boto/boto/cloudfront/signers.py +60 -0
  67. data/packages/gsutil/boto/boto/cloudsearch/__init__.py +45 -0
  68. data/packages/gsutil/boto/boto/cloudsearch/document.py +265 -0
  69. data/packages/gsutil/boto/boto/cloudsearch/domain.py +394 -0
  70. data/packages/gsutil/boto/boto/cloudsearch/layer1.py +738 -0
  71. data/packages/gsutil/boto/boto/cloudsearch/layer2.py +67 -0
  72. data/packages/gsutil/boto/boto/cloudsearch/optionstatus.py +248 -0
  73. data/packages/gsutil/boto/boto/cloudsearch/search.py +365 -0
  74. data/packages/gsutil/boto/boto/cloudsearch/sourceattribute.py +75 -0
  75. data/packages/gsutil/boto/boto/compat.py +28 -0
  76. data/packages/gsutil/boto/boto/compat.pyc +0 -0
  77. data/packages/gsutil/boto/boto/connection.py +1081 -0
  78. data/packages/gsutil/boto/boto/connection.pyc +0 -0
  79. data/packages/gsutil/boto/boto/contrib/__init__.py +22 -0
  80. data/packages/gsutil/boto/boto/contrib/ymlmessage.py +52 -0
  81. data/packages/gsutil/boto/boto/core/README +58 -0
  82. data/packages/gsutil/boto/boto/core/__init__.py +23 -0
  83. data/packages/gsutil/boto/boto/core/auth.py +78 -0
  84. data/packages/gsutil/boto/boto/core/credentials.py +154 -0
  85. data/packages/gsutil/boto/boto/core/dictresponse.py +178 -0
  86. data/packages/gsutil/boto/boto/core/service.py +67 -0
  87. data/packages/gsutil/boto/boto/datapipeline/__init__.py +0 -0
  88. data/packages/gsutil/boto/boto/datapipeline/exceptions.py +42 -0
  89. data/packages/gsutil/boto/boto/datapipeline/layer1.py +546 -0
  90. data/packages/gsutil/boto/boto/dynamodb/__init__.py +66 -0
  91. data/packages/gsutil/boto/boto/dynamodb/batch.py +262 -0
  92. data/packages/gsutil/boto/boto/dynamodb/condition.py +170 -0
  93. data/packages/gsutil/boto/boto/dynamodb/exceptions.py +64 -0
  94. data/packages/gsutil/boto/boto/dynamodb/item.py +196 -0
  95. data/packages/gsutil/boto/boto/dynamodb/layer1.py +575 -0
  96. data/packages/gsutil/boto/boto/dynamodb/layer2.py +798 -0
  97. data/packages/gsutil/boto/boto/dynamodb/schema.py +112 -0
  98. data/packages/gsutil/boto/boto/dynamodb/table.py +540 -0
  99. data/packages/gsutil/boto/boto/dynamodb/types.py +326 -0
  100. data/packages/gsutil/boto/boto/ec2/__init__.py +96 -0
  101. data/packages/gsutil/boto/boto/ec2/address.py +103 -0
  102. data/packages/gsutil/boto/boto/ec2/autoscale/__init__.py +781 -0
  103. data/packages/gsutil/boto/boto/ec2/autoscale/activity.py +74 -0
  104. data/packages/gsutil/boto/boto/ec2/autoscale/group.py +337 -0
  105. data/packages/gsutil/boto/boto/ec2/autoscale/instance.py +60 -0
  106. data/packages/gsutil/boto/boto/ec2/autoscale/launchconfig.py +209 -0
  107. data/packages/gsutil/boto/boto/ec2/autoscale/policy.py +166 -0
  108. data/packages/gsutil/boto/boto/ec2/autoscale/request.py +38 -0
  109. data/packages/gsutil/boto/boto/ec2/autoscale/scheduled.py +60 -0
  110. data/packages/gsutil/boto/boto/ec2/autoscale/tag.py +84 -0
  111. data/packages/gsutil/boto/boto/ec2/blockdevicemapping.py +141 -0
  112. data/packages/gsutil/boto/boto/ec2/bundleinstance.py +78 -0
  113. data/packages/gsutil/boto/boto/ec2/buyreservation.py +84 -0
  114. data/packages/gsutil/boto/boto/ec2/cloudwatch/__init__.py +603 -0
  115. data/packages/gsutil/boto/boto/ec2/cloudwatch/alarm.py +316 -0
  116. data/packages/gsutil/boto/boto/ec2/cloudwatch/datapoint.py +40 -0
  117. data/packages/gsutil/boto/boto/ec2/cloudwatch/dimension.py +38 -0
  118. data/packages/gsutil/boto/boto/ec2/cloudwatch/listelement.py +31 -0
  119. data/packages/gsutil/boto/boto/ec2/cloudwatch/metric.py +175 -0
  120. data/packages/gsutil/boto/boto/ec2/connection.py +3409 -0
  121. data/packages/gsutil/boto/boto/ec2/ec2object.py +107 -0
  122. data/packages/gsutil/boto/boto/ec2/elb/__init__.py +553 -0
  123. data/packages/gsutil/boto/boto/ec2/elb/healthcheck.py +89 -0
  124. data/packages/gsutil/boto/boto/ec2/elb/instancestate.py +62 -0
  125. data/packages/gsutil/boto/boto/ec2/elb/listelement.py +36 -0
  126. data/packages/gsutil/boto/boto/ec2/elb/listener.py +75 -0
  127. data/packages/gsutil/boto/boto/ec2/elb/loadbalancer.py +324 -0
  128. data/packages/gsutil/boto/boto/ec2/elb/policies.py +89 -0
  129. data/packages/gsutil/boto/boto/ec2/elb/securitygroup.py +38 -0
  130. data/packages/gsutil/boto/boto/ec2/group.py +39 -0
  131. data/packages/gsutil/boto/boto/ec2/image.py +350 -0
  132. data/packages/gsutil/boto/boto/ec2/instance.py +661 -0
  133. data/packages/gsutil/boto/boto/ec2/instanceinfo.py +51 -0
  134. data/packages/gsutil/boto/boto/ec2/instancestatus.py +207 -0
  135. data/packages/gsutil/boto/boto/ec2/keypair.py +113 -0
  136. data/packages/gsutil/boto/boto/ec2/launchspecification.py +105 -0
  137. data/packages/gsutil/boto/boto/ec2/networkinterface.py +247 -0
  138. data/packages/gsutil/boto/boto/ec2/placementgroup.py +51 -0
  139. data/packages/gsutil/boto/boto/ec2/regioninfo.py +34 -0
  140. data/packages/gsutil/boto/boto/ec2/reservedinstance.py +227 -0
  141. data/packages/gsutil/boto/boto/ec2/securitygroup.py +357 -0
  142. data/packages/gsutil/boto/boto/ec2/snapshot.py +170 -0
  143. data/packages/gsutil/boto/boto/ec2/spotdatafeedsubscription.py +63 -0
  144. data/packages/gsutil/boto/boto/ec2/spotinstancerequest.py +188 -0
  145. data/packages/gsutil/boto/boto/ec2/spotpricehistory.py +55 -0
  146. data/packages/gsutil/boto/boto/ec2/tag.py +87 -0
  147. data/packages/gsutil/boto/boto/ec2/vmtype.py +58 -0
  148. data/packages/gsutil/boto/boto/ec2/volume.py +293 -0
  149. data/packages/gsutil/boto/boto/ec2/volumestatus.py +200 -0
  150. data/packages/gsutil/boto/boto/ec2/zone.py +80 -0
  151. data/packages/gsutil/boto/boto/ecs/__init__.py +90 -0
  152. data/packages/gsutil/boto/boto/ecs/item.py +153 -0
  153. data/packages/gsutil/boto/boto/elasticache/__init__.py +62 -0
  154. data/packages/gsutil/boto/boto/elasticache/layer1.py +1252 -0
  155. data/packages/gsutil/boto/boto/elastictranscoder/__init__.py +62 -0
  156. data/packages/gsutil/boto/boto/elastictranscoder/exceptions.py +46 -0
  157. data/packages/gsutil/boto/boto/elastictranscoder/layer1.py +509 -0
  158. data/packages/gsutil/boto/boto/emr/__init__.py +73 -0
  159. data/packages/gsutil/boto/boto/emr/bootstrap_action.py +44 -0
  160. data/packages/gsutil/boto/boto/emr/connection.py +531 -0
  161. data/packages/gsutil/boto/boto/emr/emrobject.py +176 -0
  162. data/packages/gsutil/boto/boto/emr/instance_group.py +43 -0
  163. data/packages/gsutil/boto/boto/emr/step.py +281 -0
  164. data/packages/gsutil/boto/boto/exception.py +476 -0
  165. data/packages/gsutil/boto/boto/exception.pyc +0 -0
  166. data/packages/gsutil/boto/boto/file/README +49 -0
  167. data/packages/gsutil/boto/boto/file/__init__.py +28 -0
  168. data/packages/gsutil/boto/boto/file/bucket.py +112 -0
  169. data/packages/gsutil/boto/boto/file/connection.py +33 -0
  170. data/packages/gsutil/boto/boto/file/key.py +199 -0
  171. data/packages/gsutil/boto/boto/file/simpleresultset.py +30 -0
  172. data/packages/gsutil/boto/boto/fps/__init__.py +21 -0
  173. data/packages/gsutil/boto/boto/fps/connection.py +369 -0
  174. data/packages/gsutil/boto/boto/fps/exception.py +344 -0
  175. data/packages/gsutil/boto/boto/fps/response.py +175 -0
  176. data/packages/gsutil/boto/boto/glacier/__init__.py +57 -0
  177. data/packages/gsutil/boto/boto/glacier/concurrent.py +409 -0
  178. data/packages/gsutil/boto/boto/glacier/exceptions.py +58 -0
  179. data/packages/gsutil/boto/boto/glacier/job.py +152 -0
  180. data/packages/gsutil/boto/boto/glacier/layer1.py +637 -0
  181. data/packages/gsutil/boto/boto/glacier/layer2.py +93 -0
  182. data/packages/gsutil/boto/boto/glacier/response.py +48 -0
  183. data/packages/gsutil/boto/boto/glacier/utils.py +163 -0
  184. data/packages/gsutil/boto/boto/glacier/vault.py +387 -0
  185. data/packages/gsutil/boto/boto/glacier/writer.py +242 -0
  186. data/packages/gsutil/boto/boto/gs/__init__.py +22 -0
  187. data/packages/gsutil/boto/boto/gs/__init__.pyc +0 -0
  188. data/packages/gsutil/boto/boto/gs/acl.py +304 -0
  189. data/packages/gsutil/boto/boto/gs/acl.pyc +0 -0
  190. data/packages/gsutil/boto/boto/gs/bucket.py +870 -0
  191. data/packages/gsutil/boto/boto/gs/bucket.pyc +0 -0
  192. data/packages/gsutil/boto/boto/gs/bucketlistresultset.py +64 -0
  193. data/packages/gsutil/boto/boto/gs/bucketlistresultset.pyc +0 -0
  194. data/packages/gsutil/boto/boto/gs/connection.py +103 -0
  195. data/packages/gsutil/boto/boto/gs/connection.pyc +0 -0
  196. data/packages/gsutil/boto/boto/gs/cors.py +169 -0
  197. data/packages/gsutil/boto/boto/gs/cors.pyc +0 -0
  198. data/packages/gsutil/boto/boto/gs/key.py +704 -0
  199. data/packages/gsutil/boto/boto/gs/key.pyc +0 -0
  200. data/packages/gsutil/boto/boto/gs/resumable_upload_handler.py +659 -0
  201. data/packages/gsutil/boto/boto/gs/resumable_upload_handler.pyc +0 -0
  202. data/packages/gsutil/boto/boto/gs/user.py +54 -0
  203. data/packages/gsutil/boto/boto/gs/user.pyc +0 -0
  204. data/packages/gsutil/boto/boto/handler.py +44 -0
  205. data/packages/gsutil/boto/boto/handler.pyc +0 -0
  206. data/packages/gsutil/boto/boto/https_connection.py +124 -0
  207. data/packages/gsutil/boto/boto/https_connection.pyc +0 -0
  208. data/packages/gsutil/boto/boto/iam/__init__.py +74 -0
  209. data/packages/gsutil/boto/boto/iam/connection.py +1317 -0
  210. data/packages/gsutil/boto/boto/iam/summarymap.py +42 -0
  211. data/packages/gsutil/boto/boto/jsonresponse.py +163 -0
  212. data/packages/gsutil/boto/boto/jsonresponse.pyc +0 -0
  213. data/packages/gsutil/boto/boto/manage/__init__.py +23 -0
  214. data/packages/gsutil/boto/boto/manage/cmdshell.py +241 -0
  215. data/packages/gsutil/boto/boto/manage/propget.py +64 -0
  216. data/packages/gsutil/boto/boto/manage/server.py +556 -0
  217. data/packages/gsutil/boto/boto/manage/task.py +175 -0
  218. data/packages/gsutil/boto/boto/manage/test_manage.py +34 -0
  219. data/packages/gsutil/boto/boto/manage/volume.py +420 -0
  220. data/packages/gsutil/boto/boto/mashups/__init__.py +23 -0
  221. data/packages/gsutil/boto/boto/mashups/interactive.py +97 -0
  222. data/packages/gsutil/boto/boto/mashups/iobject.py +115 -0
  223. data/packages/gsutil/boto/boto/mashups/order.py +211 -0
  224. data/packages/gsutil/boto/boto/mashups/server.py +395 -0
  225. data/packages/gsutil/boto/boto/mturk/__init__.py +23 -0
  226. data/packages/gsutil/boto/boto/mturk/connection.py +1027 -0
  227. data/packages/gsutil/boto/boto/mturk/layoutparam.py +55 -0
  228. data/packages/gsutil/boto/boto/mturk/notification.py +103 -0
  229. data/packages/gsutil/boto/boto/mturk/price.py +48 -0
  230. data/packages/gsutil/boto/boto/mturk/qualification.py +137 -0
  231. data/packages/gsutil/boto/boto/mturk/question.py +455 -0
  232. data/packages/gsutil/boto/boto/mws/__init__.py +21 -0
  233. data/packages/gsutil/boto/boto/mws/connection.py +813 -0
  234. data/packages/gsutil/boto/boto/mws/exception.py +75 -0
  235. data/packages/gsutil/boto/boto/mws/response.py +655 -0
  236. data/packages/gsutil/boto/boto/plugin.py +90 -0
  237. data/packages/gsutil/boto/boto/plugin.pyc +0 -0
  238. data/packages/gsutil/boto/boto/provider.py +337 -0
  239. data/packages/gsutil/boto/boto/provider.pyc +0 -0
  240. data/packages/gsutil/boto/boto/pyami/__init__.py +22 -0
  241. data/packages/gsutil/boto/boto/pyami/__init__.pyc +0 -0
  242. data/packages/gsutil/boto/boto/pyami/bootstrap.py +134 -0
  243. data/packages/gsutil/boto/boto/pyami/config.py +229 -0
  244. data/packages/gsutil/boto/boto/pyami/config.pyc +0 -0
  245. data/packages/gsutil/boto/boto/pyami/copybot.cfg +60 -0
  246. data/packages/gsutil/boto/boto/pyami/copybot.py +97 -0
  247. data/packages/gsutil/boto/boto/pyami/helloworld.py +28 -0
  248. data/packages/gsutil/boto/boto/pyami/installers/__init__.py +64 -0
  249. data/packages/gsutil/boto/boto/pyami/installers/ubuntu/__init__.py +22 -0
  250. data/packages/gsutil/boto/boto/pyami/installers/ubuntu/apache.py +43 -0
  251. data/packages/gsutil/boto/boto/pyami/installers/ubuntu/ebs.py +238 -0
  252. data/packages/gsutil/boto/boto/pyami/installers/ubuntu/installer.py +96 -0
  253. data/packages/gsutil/boto/boto/pyami/installers/ubuntu/mysql.py +109 -0
  254. data/packages/gsutil/boto/boto/pyami/installers/ubuntu/trac.py +139 -0
  255. data/packages/gsutil/boto/boto/pyami/launch_ami.py +178 -0
  256. data/packages/gsutil/boto/boto/pyami/scriptbase.py +44 -0
  257. data/packages/gsutil/boto/boto/pyami/startup.py +60 -0
  258. data/packages/gsutil/boto/boto/rds/__init__.py +1194 -0
  259. data/packages/gsutil/boto/boto/rds/dbinstance.py +357 -0
  260. data/packages/gsutil/boto/boto/rds/dbsecuritygroup.py +177 -0
  261. data/packages/gsutil/boto/boto/rds/dbsnapshot.py +108 -0
  262. data/packages/gsutil/boto/boto/rds/event.py +49 -0
  263. data/packages/gsutil/boto/boto/rds/parametergroup.py +201 -0
  264. data/packages/gsutil/boto/boto/rds/regioninfo.py +32 -0
  265. data/packages/gsutil/boto/boto/regioninfo.py +63 -0
  266. data/packages/gsutil/boto/boto/regioninfo.pyc +0 -0
  267. data/packages/gsutil/boto/boto/resultset.py +169 -0
  268. data/packages/gsutil/boto/boto/resultset.pyc +0 -0
  269. data/packages/gsutil/boto/boto/roboto/__init__.py +1 -0
  270. data/packages/gsutil/boto/boto/roboto/awsqueryrequest.py +504 -0
  271. data/packages/gsutil/boto/boto/roboto/awsqueryservice.py +121 -0
  272. data/packages/gsutil/boto/boto/roboto/param.py +147 -0
  273. data/packages/gsutil/boto/boto/route53/__init__.py +75 -0
  274. data/packages/gsutil/boto/boto/route53/connection.py +403 -0
  275. data/packages/gsutil/boto/boto/route53/exception.py +27 -0
  276. data/packages/gsutil/boto/boto/route53/hostedzone.py +56 -0
  277. data/packages/gsutil/boto/boto/route53/record.py +306 -0
  278. data/packages/gsutil/boto/boto/route53/status.py +42 -0
  279. data/packages/gsutil/boto/boto/route53/zone.py +412 -0
  280. data/packages/gsutil/boto/boto/s3/__init__.py +84 -0
  281. data/packages/gsutil/boto/boto/s3/__init__.pyc +0 -0
  282. data/packages/gsutil/boto/boto/s3/acl.py +164 -0
  283. data/packages/gsutil/boto/boto/s3/acl.pyc +0 -0
  284. data/packages/gsutil/boto/boto/s3/bucket.py +1634 -0
  285. data/packages/gsutil/boto/boto/s3/bucket.pyc +0 -0
  286. data/packages/gsutil/boto/boto/s3/bucketlistresultset.py +139 -0
  287. data/packages/gsutil/boto/boto/s3/bucketlistresultset.pyc +0 -0
  288. data/packages/gsutil/boto/boto/s3/bucketlogging.py +83 -0
  289. data/packages/gsutil/boto/boto/s3/bucketlogging.pyc +0 -0
  290. data/packages/gsutil/boto/boto/s3/connection.py +540 -0
  291. data/packages/gsutil/boto/boto/s3/connection.pyc +0 -0
  292. data/packages/gsutil/boto/boto/s3/cors.py +210 -0
  293. data/packages/gsutil/boto/boto/s3/cors.pyc +0 -0
  294. data/packages/gsutil/boto/boto/s3/deletemarker.py +55 -0
  295. data/packages/gsutil/boto/boto/s3/deletemarker.pyc +0 -0
  296. data/packages/gsutil/boto/boto/s3/key.py +1712 -0
  297. data/packages/gsutil/boto/boto/s3/key.pyc +0 -0
  298. data/packages/gsutil/boto/boto/s3/keyfile.py +134 -0
  299. data/packages/gsutil/boto/boto/s3/keyfile.pyc +0 -0
  300. data/packages/gsutil/boto/boto/s3/lifecycle.py +231 -0
  301. data/packages/gsutil/boto/boto/s3/lifecycle.pyc +0 -0
  302. data/packages/gsutil/boto/boto/s3/multidelete.py +138 -0
  303. data/packages/gsutil/boto/boto/s3/multidelete.pyc +0 -0
  304. data/packages/gsutil/boto/boto/s3/multipart.py +315 -0
  305. data/packages/gsutil/boto/boto/s3/multipart.pyc +0 -0
  306. data/packages/gsutil/boto/boto/s3/prefix.py +42 -0
  307. data/packages/gsutil/boto/boto/s3/prefix.pyc +0 -0
  308. data/packages/gsutil/boto/boto/s3/resumable_download_handler.py +339 -0
  309. data/packages/gsutil/boto/boto/s3/resumable_download_handler.pyc +0 -0
  310. data/packages/gsutil/boto/boto/s3/tagging.py +71 -0
  311. data/packages/gsutil/boto/boto/s3/tagging.pyc +0 -0
  312. data/packages/gsutil/boto/boto/s3/user.py +49 -0
  313. data/packages/gsutil/boto/boto/s3/user.pyc +0 -0
  314. data/packages/gsutil/boto/boto/s3/website.py +237 -0
  315. data/packages/gsutil/boto/boto/s3/website.pyc +0 -0
  316. data/packages/gsutil/boto/boto/sdb/__init__.py +67 -0
  317. data/packages/gsutil/boto/boto/sdb/connection.py +617 -0
  318. data/packages/gsutil/boto/boto/sdb/db/__init__.py +20 -0
  319. data/packages/gsutil/boto/boto/sdb/db/blob.py +75 -0
  320. data/packages/gsutil/boto/boto/sdb/db/key.py +59 -0
  321. data/packages/gsutil/boto/boto/sdb/db/manager/__init__.py +85 -0
  322. data/packages/gsutil/boto/boto/sdb/db/manager/sdbmanager.py +732 -0
  323. data/packages/gsutil/boto/boto/sdb/db/manager/xmlmanager.py +517 -0
  324. data/packages/gsutil/boto/boto/sdb/db/model.py +294 -0
  325. data/packages/gsutil/boto/boto/sdb/db/property.py +703 -0
  326. data/packages/gsutil/boto/boto/sdb/db/query.py +85 -0
  327. data/packages/gsutil/boto/boto/sdb/db/sequence.py +226 -0
  328. data/packages/gsutil/boto/boto/sdb/db/test_db.py +231 -0
  329. data/packages/gsutil/boto/boto/sdb/domain.py +377 -0
  330. data/packages/gsutil/boto/boto/sdb/item.py +181 -0
  331. data/packages/gsutil/boto/boto/sdb/queryresultset.py +92 -0
  332. data/packages/gsutil/boto/boto/sdb/regioninfo.py +32 -0
  333. data/packages/gsutil/boto/boto/services/__init__.py +23 -0
  334. data/packages/gsutil/boto/boto/services/bs.py +179 -0
  335. data/packages/gsutil/boto/boto/services/message.py +58 -0
  336. data/packages/gsutil/boto/boto/services/result.py +136 -0
  337. data/packages/gsutil/boto/boto/services/service.py +161 -0
  338. data/packages/gsutil/boto/boto/services/servicedef.py +91 -0
  339. data/packages/gsutil/boto/boto/services/sonofmmm.cfg +43 -0
  340. data/packages/gsutil/boto/boto/services/sonofmmm.py +81 -0
  341. data/packages/gsutil/boto/boto/services/submit.py +88 -0
  342. data/packages/gsutil/boto/boto/ses/__init__.py +54 -0
  343. data/packages/gsutil/boto/boto/ses/connection.py +521 -0
  344. data/packages/gsutil/boto/boto/ses/exceptions.py +77 -0
  345. data/packages/gsutil/boto/boto/sns/__init__.py +78 -0
  346. data/packages/gsutil/boto/boto/sns/connection.py +431 -0
  347. data/packages/gsutil/boto/boto/sqs/__init__.py +56 -0
  348. data/packages/gsutil/boto/boto/sqs/attributes.py +46 -0
  349. data/packages/gsutil/boto/boto/sqs/batchresults.py +95 -0
  350. data/packages/gsutil/boto/boto/sqs/connection.py +417 -0
  351. data/packages/gsutil/boto/boto/sqs/jsonmessage.py +43 -0
  352. data/packages/gsutil/boto/boto/sqs/message.py +253 -0
  353. data/packages/gsutil/boto/boto/sqs/queue.py +478 -0
  354. data/packages/gsutil/boto/boto/sqs/regioninfo.py +32 -0
  355. data/packages/gsutil/boto/boto/storage_uri.py +835 -0
  356. data/packages/gsutil/boto/boto/storage_uri.pyc +0 -0
  357. data/packages/gsutil/boto/boto/sts/__init__.py +55 -0
  358. data/packages/gsutil/boto/boto/sts/connection.py +207 -0
  359. data/packages/gsutil/boto/boto/sts/credentials.py +215 -0
  360. data/packages/gsutil/boto/boto/swf/__init__.py +60 -0
  361. data/packages/gsutil/boto/boto/swf/exceptions.py +44 -0
  362. data/packages/gsutil/boto/boto/swf/layer1.py +1512 -0
  363. data/packages/gsutil/boto/boto/swf/layer1_decisions.py +287 -0
  364. data/packages/gsutil/boto/boto/swf/layer2.py +342 -0
  365. data/packages/gsutil/boto/boto/utils.py +927 -0
  366. data/packages/gsutil/boto/boto/utils.pyc +0 -0
  367. data/packages/gsutil/boto/boto/vpc/__init__.py +910 -0
  368. data/packages/gsutil/boto/boto/vpc/customergateway.py +54 -0
  369. data/packages/gsutil/boto/boto/vpc/dhcpoptions.py +72 -0
  370. data/packages/gsutil/boto/boto/vpc/internetgateway.py +72 -0
  371. data/packages/gsutil/boto/boto/vpc/routetable.py +109 -0
  372. data/packages/gsutil/boto/boto/vpc/subnet.py +57 -0
  373. data/packages/gsutil/boto/boto/vpc/vpc.py +54 -0
  374. data/packages/gsutil/boto/boto/vpc/vpnconnection.py +60 -0
  375. data/packages/gsutil/boto/boto/vpc/vpngateway.py +83 -0
  376. data/packages/gsutil/boto/docs/BotoCheatSheet.pdf +0 -0
  377. data/packages/gsutil/boto/docs/Makefile +89 -0
  378. data/packages/gsutil/boto/docs/make.bat +113 -0
  379. data/packages/gsutil/boto/docs/source/_templates/layout.html +3 -0
  380. data/packages/gsutil/boto/docs/source/autoscale_tut.rst +220 -0
  381. data/packages/gsutil/boto/docs/source/boto_config_tut.rst +125 -0
  382. data/packages/gsutil/boto/docs/source/boto_theme/static/boto.css_t +239 -0
  383. data/packages/gsutil/boto/docs/source/boto_theme/static/pygments.css +61 -0
  384. data/packages/gsutil/boto/docs/source/boto_theme/theme.conf +3 -0
  385. data/packages/gsutil/boto/docs/source/cloudfront_tut.rst +196 -0
  386. data/packages/gsutil/boto/docs/source/cloudsearch_tut.rst +411 -0
  387. data/packages/gsutil/boto/docs/source/cloudwatch_tut.rst +116 -0
  388. data/packages/gsutil/boto/docs/source/conf.py +32 -0
  389. data/packages/gsutil/boto/docs/source/contributing.rst +204 -0
  390. data/packages/gsutil/boto/docs/source/documentation.rst +59 -0
  391. data/packages/gsutil/boto/docs/source/dynamodb_tut.rst +339 -0
  392. data/packages/gsutil/boto/docs/source/ec2_tut.rst +86 -0
  393. data/packages/gsutil/boto/docs/source/elb_tut.rst +257 -0
  394. data/packages/gsutil/boto/docs/source/emr_tut.rst +108 -0
  395. data/packages/gsutil/boto/docs/source/index.rst +146 -0
  396. data/packages/gsutil/boto/docs/source/rds_tut.rst +108 -0
  397. data/packages/gsutil/boto/docs/source/ref/autoscale.rst +62 -0
  398. data/packages/gsutil/boto/docs/source/ref/beanstalk.rst +26 -0
  399. data/packages/gsutil/boto/docs/source/ref/boto.rst +47 -0
  400. data/packages/gsutil/boto/docs/source/ref/cloudformation.rst +34 -0
  401. data/packages/gsutil/boto/docs/source/ref/cloudfront.rst +68 -0
  402. data/packages/gsutil/boto/docs/source/ref/cloudsearch.rst +59 -0
  403. data/packages/gsutil/boto/docs/source/ref/cloudwatch.rst +27 -0
  404. data/packages/gsutil/boto/docs/source/ref/contrib.rst +32 -0
  405. data/packages/gsutil/boto/docs/source/ref/datapipeline.rst +26 -0
  406. data/packages/gsutil/boto/docs/source/ref/dynamodb.rst +61 -0
  407. data/packages/gsutil/boto/docs/source/ref/ec2.rst +140 -0
  408. data/packages/gsutil/boto/docs/source/ref/ecs.rst +19 -0
  409. data/packages/gsutil/boto/docs/source/ref/elasticache.rst +19 -0
  410. data/packages/gsutil/boto/docs/source/ref/elastictranscoder.rst +26 -0
  411. data/packages/gsutil/boto/docs/source/ref/elb.rst +47 -0
  412. data/packages/gsutil/boto/docs/source/ref/emr.rst +34 -0
  413. data/packages/gsutil/boto/docs/source/ref/file.rst +34 -0
  414. data/packages/gsutil/boto/docs/source/ref/fps.rst +19 -0
  415. data/packages/gsutil/boto/docs/source/ref/glacier.rst +63 -0
  416. data/packages/gsutil/boto/docs/source/ref/gs.rst +72 -0
  417. data/packages/gsutil/boto/docs/source/ref/iam.rst +27 -0
  418. data/packages/gsutil/boto/docs/source/ref/index.rst +40 -0
  419. data/packages/gsutil/boto/docs/source/ref/manage.rst +47 -0
  420. data/packages/gsutil/boto/docs/source/ref/mturk.rst +54 -0
  421. data/packages/gsutil/boto/docs/source/ref/mws.rst +33 -0
  422. data/packages/gsutil/boto/docs/source/ref/pyami.rst +103 -0
  423. data/packages/gsutil/boto/docs/source/ref/rds.rst +47 -0
  424. data/packages/gsutil/boto/docs/source/ref/route53.rst +34 -0
  425. data/packages/gsutil/boto/docs/source/ref/s3.rst +111 -0
  426. data/packages/gsutil/boto/docs/source/ref/sdb.rst +45 -0
  427. data/packages/gsutil/boto/docs/source/ref/sdb_db.rst +83 -0
  428. data/packages/gsutil/boto/docs/source/ref/services.rst +61 -0
  429. data/packages/gsutil/boto/docs/source/ref/ses.rst +21 -0
  430. data/packages/gsutil/boto/docs/source/ref/sns.rst +17 -0
  431. data/packages/gsutil/boto/docs/source/ref/sqs.rst +61 -0
  432. data/packages/gsutil/boto/docs/source/ref/sts.rst +25 -0
  433. data/packages/gsutil/boto/docs/source/ref/swf.rst +22 -0
  434. data/packages/gsutil/boto/docs/source/ref/vpc.rst +54 -0
  435. data/packages/gsutil/boto/docs/source/s3_tut.rst +450 -0
  436. data/packages/gsutil/boto/docs/source/security_groups.rst +82 -0
  437. data/packages/gsutil/boto/docs/source/ses_tut.rst +171 -0
  438. data/packages/gsutil/boto/docs/source/simpledb_tut.rst +188 -0
  439. data/packages/gsutil/boto/docs/source/sqs_tut.rst +246 -0
  440. data/packages/gsutil/boto/docs/source/vpc_tut.rst +100 -0
  441. data/packages/gsutil/boto/pylintrc +305 -0
  442. data/packages/gsutil/boto/requirements.txt +10 -0
  443. data/packages/gsutil/boto/setup.py +89 -0
  444. data/packages/gsutil/boto/tests/__init__.py +20 -0
  445. data/packages/gsutil/boto/tests/db/test_lists.py +96 -0
  446. data/packages/gsutil/boto/tests/db/test_password.py +128 -0
  447. data/packages/gsutil/boto/tests/db/test_query.py +152 -0
  448. data/packages/gsutil/boto/tests/db/test_sequence.py +109 -0
  449. data/packages/gsutil/boto/tests/devpay/__init__.py +0 -0
  450. data/packages/gsutil/boto/tests/devpay/test_s3.py +181 -0
  451. data/packages/gsutil/boto/tests/fps/__init__.py +0 -0
  452. data/packages/gsutil/boto/tests/fps/test.py +100 -0
  453. data/packages/gsutil/boto/tests/fps/test_verify_signature.py +12 -0
  454. data/packages/gsutil/boto/tests/integration/__init__.py +0 -0
  455. data/packages/gsutil/boto/tests/integration/beanstalk/test_wrapper.py +209 -0
  456. data/packages/gsutil/boto/tests/integration/cloudformation/__init__.py +21 -0
  457. data/packages/gsutil/boto/tests/integration/cloudformation/test_cert_verification.py +40 -0
  458. data/packages/gsutil/boto/tests/integration/cloudformation/test_connection.py +110 -0
  459. data/packages/gsutil/boto/tests/integration/cloudsearch/__init__.py +21 -0
  460. data/packages/gsutil/boto/tests/integration/cloudsearch/test_cert_verification.py +40 -0
  461. data/packages/gsutil/boto/tests/integration/datapipeline/test_layer1.py +122 -0
  462. data/packages/gsutil/boto/tests/integration/dynamodb/__init__.py +20 -0
  463. data/packages/gsutil/boto/tests/integration/dynamodb/test_cert_verification.py +40 -0
  464. data/packages/gsutil/boto/tests/integration/dynamodb/test_layer1.py +266 -0
  465. data/packages/gsutil/boto/tests/integration/dynamodb/test_layer2.py +484 -0
  466. data/packages/gsutil/boto/tests/integration/dynamodb/test_table.py +84 -0
  467. data/packages/gsutil/boto/tests/integration/ec2/__init__.py +20 -0
  468. data/packages/gsutil/boto/tests/integration/ec2/autoscale/__init__.py +21 -0
  469. data/packages/gsutil/boto/tests/integration/ec2/autoscale/test_cert_verification.py +40 -0
  470. data/packages/gsutil/boto/tests/integration/ec2/autoscale/test_connection.py +167 -0
  471. data/packages/gsutil/boto/tests/integration/ec2/cloudwatch/__init__.py +20 -0
  472. data/packages/gsutil/boto/tests/integration/ec2/cloudwatch/test_cert_verification.py +40 -0
  473. data/packages/gsutil/boto/tests/integration/ec2/cloudwatch/test_connection.py +277 -0
  474. data/packages/gsutil/boto/tests/integration/ec2/elb/__init__.py +20 -0
  475. data/packages/gsutil/boto/tests/integration/ec2/elb/test_cert_verification.py +40 -0
  476. data/packages/gsutil/boto/tests/integration/ec2/elb/test_connection.py +130 -0
  477. data/packages/gsutil/boto/tests/integration/ec2/test_cert_verification.py +40 -0
  478. data/packages/gsutil/boto/tests/integration/ec2/test_connection.py +192 -0
  479. data/packages/gsutil/boto/tests/integration/ec2/vpc/__init__.py +0 -0
  480. data/packages/gsutil/boto/tests/integration/ec2/vpc/test_connection.py +95 -0
  481. data/packages/gsutil/boto/tests/integration/elasticache/__init__.py +0 -0
  482. data/packages/gsutil/boto/tests/integration/elasticache/test_layer1.py +67 -0
  483. data/packages/gsutil/boto/tests/integration/elastictranscoder/__init__.py +0 -0
  484. data/packages/gsutil/boto/tests/integration/elastictranscoder/test_cert_verification.py +35 -0
  485. data/packages/gsutil/boto/tests/integration/elastictranscoder/test_layer1.py +115 -0
  486. data/packages/gsutil/boto/tests/integration/emr/__init__.py +20 -0
  487. data/packages/gsutil/boto/tests/integration/emr/test_cert_verification.py +40 -0
  488. data/packages/gsutil/boto/tests/integration/glacier/__init__.py +22 -0
  489. data/packages/gsutil/boto/tests/integration/glacier/test_cert_verification.py +40 -0
  490. data/packages/gsutil/boto/tests/integration/glacier/test_layer1.py +44 -0
  491. data/packages/gsutil/boto/tests/integration/glacier/test_layer2.py +45 -0
  492. data/packages/gsutil/boto/tests/integration/gs/__init__.py +0 -0
  493. data/packages/gsutil/boto/tests/integration/gs/cb_test_harness.py +71 -0
  494. data/packages/gsutil/boto/tests/integration/gs/test_basic.py +379 -0
  495. data/packages/gsutil/boto/tests/integration/gs/test_generation_conditionals.py +399 -0
  496. data/packages/gsutil/boto/tests/integration/gs/test_resumable_downloads.py +358 -0
  497. data/packages/gsutil/boto/tests/integration/gs/test_resumable_uploads.py +525 -0
  498. data/packages/gsutil/boto/tests/integration/gs/test_storage_uri.py +125 -0
  499. data/packages/gsutil/boto/tests/integration/gs/test_versioning.py +268 -0
  500. data/packages/gsutil/boto/tests/integration/gs/testcase.py +116 -0
  501. data/packages/gsutil/boto/tests/integration/gs/util.py +63 -0
  502. data/packages/gsutil/boto/tests/integration/iam/__init__.py +20 -0
  503. data/packages/gsutil/boto/tests/integration/iam/test_cert_verification.py +40 -0
  504. data/packages/gsutil/boto/tests/integration/mws/__init__.py +0 -0
  505. data/packages/gsutil/boto/tests/integration/mws/test.py +100 -0
  506. data/packages/gsutil/boto/tests/integration/rds/__init__.py +21 -0
  507. data/packages/gsutil/boto/tests/integration/rds/test_cert_verification.py +40 -0
  508. data/packages/gsutil/boto/tests/integration/route53/__init__.py +20 -0
  509. data/packages/gsutil/boto/tests/integration/route53/test_cert_verification.py +40 -0
  510. data/packages/gsutil/boto/tests/integration/route53/test_zone.py +132 -0
  511. data/packages/gsutil/boto/tests/integration/s3/__init__.py +20 -0
  512. data/packages/gsutil/boto/tests/integration/s3/mock_storage_service.py +589 -0
  513. data/packages/gsutil/boto/tests/integration/s3/other_cacerts.txt +70 -0
  514. data/packages/gsutil/boto/tests/integration/s3/test_bucket.py +263 -0
  515. data/packages/gsutil/boto/tests/integration/s3/test_cert_verification.py +40 -0
  516. data/packages/gsutil/boto/tests/integration/s3/test_connection.py +245 -0
  517. data/packages/gsutil/boto/tests/integration/s3/test_cors.py +78 -0
  518. data/packages/gsutil/boto/tests/integration/s3/test_encryption.py +115 -0
  519. data/packages/gsutil/boto/tests/integration/s3/test_https_cert_validation.py +141 -0
  520. data/packages/gsutil/boto/tests/integration/s3/test_key.py +375 -0
  521. data/packages/gsutil/boto/tests/integration/s3/test_mfa.py +95 -0
  522. data/packages/gsutil/boto/tests/integration/s3/test_multidelete.py +181 -0
  523. data/packages/gsutil/boto/tests/integration/s3/test_multipart.py +139 -0
  524. data/packages/gsutil/boto/tests/integration/s3/test_pool.py +246 -0
  525. data/packages/gsutil/boto/tests/integration/s3/test_versioning.py +158 -0
  526. data/packages/gsutil/boto/tests/integration/sdb/__init__.py +20 -0
  527. data/packages/gsutil/boto/tests/integration/sdb/test_cert_verification.py +40 -0
  528. data/packages/gsutil/boto/tests/integration/sdb/test_connection.py +119 -0
  529. data/packages/gsutil/boto/tests/integration/ses/__init__.py +0 -0
  530. data/packages/gsutil/boto/tests/integration/ses/test_cert_verification.py +40 -0
  531. data/packages/gsutil/boto/tests/integration/ses/test_connection.py +38 -0
  532. data/packages/gsutil/boto/tests/integration/sns/__init__.py +20 -0
  533. data/packages/gsutil/boto/tests/integration/sns/test_cert_verification.py +40 -0
  534. data/packages/gsutil/boto/tests/integration/sqs/__init__.py +20 -0
  535. data/packages/gsutil/boto/tests/integration/sqs/test_cert_verification.py +40 -0
  536. data/packages/gsutil/boto/tests/integration/sqs/test_connection.py +217 -0
  537. data/packages/gsutil/boto/tests/integration/sts/__init__.py +20 -0
  538. data/packages/gsutil/boto/tests/integration/sts/test_cert_verification.py +40 -0
  539. data/packages/gsutil/boto/tests/integration/sts/test_session_token.py +65 -0
  540. data/packages/gsutil/boto/tests/integration/swf/__init__.py +0 -0
  541. data/packages/gsutil/boto/tests/integration/swf/test_cert_verification.py +40 -0
  542. data/packages/gsutil/boto/tests/integration/swf/test_layer1.py +246 -0
  543. data/packages/gsutil/boto/tests/integration/swf/test_layer1_workflow_execution.py +173 -0
  544. data/packages/gsutil/boto/tests/mturk/__init__.py +0 -0
  545. data/packages/gsutil/boto/tests/mturk/_init_environment.py +28 -0
  546. data/packages/gsutil/boto/tests/mturk/all_tests.py +24 -0
  547. data/packages/gsutil/boto/tests/mturk/cleanup_tests.py +47 -0
  548. data/packages/gsutil/boto/tests/mturk/common.py +45 -0
  549. data/packages/gsutil/boto/tests/mturk/create_free_text_question_regex.doctest +100 -0
  550. data/packages/gsutil/boto/tests/mturk/create_hit.doctest +92 -0
  551. data/packages/gsutil/boto/tests/mturk/create_hit_binary.doctest +94 -0
  552. data/packages/gsutil/boto/tests/mturk/create_hit_external.py +21 -0
  553. data/packages/gsutil/boto/tests/mturk/create_hit_from_hit_type.doctest +103 -0
  554. data/packages/gsutil/boto/tests/mturk/create_hit_test.py +21 -0
  555. data/packages/gsutil/boto/tests/mturk/create_hit_with_qualifications.py +16 -0
  556. data/packages/gsutil/boto/tests/mturk/hit_persistence.py +27 -0
  557. data/packages/gsutil/boto/tests/mturk/mocks.py +11 -0
  558. data/packages/gsutil/boto/tests/mturk/reviewable_hits.doctest +129 -0
  559. data/packages/gsutil/boto/tests/mturk/run-doctest.py +13 -0
  560. data/packages/gsutil/boto/tests/mturk/search_hits.doctest +16 -0
  561. data/packages/gsutil/boto/tests/mturk/selenium_support.py +61 -0
  562. data/packages/gsutil/boto/tests/mturk/support.py +7 -0
  563. data/packages/gsutil/boto/tests/mturk/test_disable_hit.py +11 -0
  564. data/packages/gsutil/boto/tests/test.py +59 -0
  565. data/packages/gsutil/boto/tests/unit/__init__.py +79 -0
  566. data/packages/gsutil/boto/tests/unit/auth/__init__.py +0 -0
  567. data/packages/gsutil/boto/tests/unit/auth/test_sigv4.py +73 -0
  568. data/packages/gsutil/boto/tests/unit/beanstalk/__init__.py +0 -0
  569. data/packages/gsutil/boto/tests/unit/beanstalk/test_layer1.py +128 -0
  570. data/packages/gsutil/boto/tests/unit/cloudformation/__init__.py +0 -0
  571. data/packages/gsutil/boto/tests/unit/cloudformation/test_connection.py +605 -0
  572. data/packages/gsutil/boto/tests/unit/cloudformation/test_stack.py +63 -0
  573. data/packages/gsutil/boto/tests/unit/cloudfront/__init__.py +0 -0
  574. data/packages/gsutil/boto/tests/unit/cloudfront/test_invalidation_list.py +113 -0
  575. data/packages/gsutil/boto/tests/unit/cloudfront/test_signed_urls.py +354 -0
  576. data/packages/gsutil/boto/tests/unit/cloudsearch/__init__.py +1 -0
  577. data/packages/gsutil/boto/tests/unit/cloudsearch/test_connection.py +241 -0
  578. data/packages/gsutil/boto/tests/unit/cloudsearch/test_document.py +324 -0
  579. data/packages/gsutil/boto/tests/unit/cloudsearch/test_search.py +325 -0
  580. data/packages/gsutil/boto/tests/unit/dynamodb/__init__.py +0 -0
  581. data/packages/gsutil/boto/tests/unit/dynamodb/test_batch.py +103 -0
  582. data/packages/gsutil/boto/tests/unit/dynamodb/test_layer2.py +119 -0
  583. data/packages/gsutil/boto/tests/unit/dynamodb/test_types.py +82 -0
  584. data/packages/gsutil/boto/tests/unit/ec2/__init__.py +0 -0
  585. data/packages/gsutil/boto/tests/unit/ec2/autoscale/__init__.py +0 -0
  586. data/packages/gsutil/boto/tests/unit/ec2/autoscale/test_group.py +162 -0
  587. data/packages/gsutil/boto/tests/unit/ec2/test_address.py +39 -0
  588. data/packages/gsutil/boto/tests/unit/ec2/test_blockdevicemapping.py +79 -0
  589. data/packages/gsutil/boto/tests/unit/ec2/test_connection.py +480 -0
  590. data/packages/gsutil/boto/tests/unit/ec2/test_instance.py +243 -0
  591. data/packages/gsutil/boto/tests/unit/ec2/test_networkinterface.py +140 -0
  592. data/packages/gsutil/boto/tests/unit/ec2/test_volume.py +248 -0
  593. data/packages/gsutil/boto/tests/unit/emr/test_emr_responses.py +373 -0
  594. data/packages/gsutil/boto/tests/unit/glacier/__init__.py +0 -0
  595. data/packages/gsutil/boto/tests/unit/glacier/test_concurrent.py +120 -0
  596. data/packages/gsutil/boto/tests/unit/glacier/test_job.py +60 -0
  597. data/packages/gsutil/boto/tests/unit/glacier/test_layer1.py +98 -0
  598. data/packages/gsutil/boto/tests/unit/glacier/test_layer2.py +266 -0
  599. data/packages/gsutil/boto/tests/unit/glacier/test_utils.py +116 -0
  600. data/packages/gsutil/boto/tests/unit/glacier/test_vault.py +100 -0
  601. data/packages/gsutil/boto/tests/unit/glacier/test_writer.py +185 -0
  602. data/packages/gsutil/boto/tests/unit/provider/__init__.py +0 -0
  603. data/packages/gsutil/boto/tests/unit/provider/test_provider.py +176 -0
  604. data/packages/gsutil/boto/tests/unit/rds/__init__.py +0 -0
  605. data/packages/gsutil/boto/tests/unit/rds/test_connection.py +131 -0
  606. data/packages/gsutil/boto/tests/unit/s3/__init__.py +0 -0
  607. data/packages/gsutil/boto/tests/unit/s3/test_cors_configuration.py +77 -0
  608. data/packages/gsutil/boto/tests/unit/s3/test_key.py +75 -0
  609. data/packages/gsutil/boto/tests/unit/s3/test_keyfile.py +101 -0
  610. data/packages/gsutil/boto/tests/unit/s3/test_lifecycle.py +97 -0
  611. data/packages/gsutil/boto/tests/unit/s3/test_tagging.py +47 -0
  612. data/packages/gsutil/boto/tests/unit/s3/test_uri.py +257 -0
  613. data/packages/gsutil/boto/tests/unit/s3/test_website.py +188 -0
  614. data/packages/gsutil/boto/tests/unit/sns/__init__.py +0 -0
  615. data/packages/gsutil/boto/tests/unit/sns/test_connection.py +99 -0
  616. data/packages/gsutil/boto/tests/unit/sqs/__init__.py +0 -0
  617. data/packages/gsutil/boto/tests/unit/sqs/test_connection.py +98 -0
  618. data/packages/gsutil/boto/tests/unit/sqs/test_queue.py +40 -0
  619. data/packages/gsutil/boto/tests/unit/sts/test_connection.py +74 -0
  620. data/packages/gsutil/boto/tests/unit/test_connection.py +60 -0
  621. data/packages/gsutil/boto/tests/unit/utils/test_utils.py +109 -0
  622. data/packages/gsutil/boto/tox.ini +8 -0
  623. data/packages/gsutil/gslib/README +5 -0
  624. data/packages/gsutil/gslib/__init__.py +22 -0
  625. data/packages/gsutil/gslib/__init__.pyc +0 -0
  626. data/packages/gsutil/gslib/addlhelp/__init__.py +15 -0
  627. data/packages/gsutil/gslib/addlhelp/acls.py +234 -0
  628. data/packages/gsutil/gslib/addlhelp/anon.py +57 -0
  629. data/packages/gsutil/gslib/addlhelp/command_opts.py +116 -0
  630. data/packages/gsutil/gslib/addlhelp/dev.py +139 -0
  631. data/packages/gsutil/gslib/addlhelp/metadata.py +186 -0
  632. data/packages/gsutil/gslib/addlhelp/naming.py +173 -0
  633. data/packages/gsutil/gslib/addlhelp/prod.py +160 -0
  634. data/packages/gsutil/gslib/addlhelp/projects.py +130 -0
  635. data/packages/gsutil/gslib/addlhelp/subdirs.py +110 -0
  636. data/packages/gsutil/gslib/addlhelp/support.py +86 -0
  637. data/packages/gsutil/gslib/addlhelp/versioning.py +242 -0
  638. data/packages/gsutil/gslib/addlhelp/wildcards.py +170 -0
  639. data/packages/gsutil/gslib/bucket_listing_ref.py +175 -0
  640. data/packages/gsutil/gslib/bucket_listing_ref.pyc +0 -0
  641. data/packages/gsutil/gslib/command.py +722 -0
  642. data/packages/gsutil/gslib/command.pyc +0 -0
  643. data/packages/gsutil/gslib/command_runner.py +101 -0
  644. data/packages/gsutil/gslib/command_runner.pyc +0 -0
  645. data/packages/gsutil/gslib/commands/__init__.py +15 -0
  646. data/packages/gsutil/gslib/commands/__init__.pyc +0 -0
  647. data/packages/gsutil/gslib/commands/cat.py +131 -0
  648. data/packages/gsutil/gslib/commands/cat.pyc +0 -0
  649. data/packages/gsutil/gslib/commands/chacl.py +532 -0
  650. data/packages/gsutil/gslib/commands/chacl.pyc +0 -0
  651. data/packages/gsutil/gslib/commands/config.py +694 -0
  652. data/packages/gsutil/gslib/commands/config.pyc +0 -0
  653. data/packages/gsutil/gslib/commands/cp.py +1818 -0
  654. data/packages/gsutil/gslib/commands/cp.pyc +0 -0
  655. data/packages/gsutil/gslib/commands/disablelogging.py +101 -0
  656. data/packages/gsutil/gslib/commands/disablelogging.pyc +0 -0
  657. data/packages/gsutil/gslib/commands/enablelogging.py +149 -0
  658. data/packages/gsutil/gslib/commands/enablelogging.pyc +0 -0
  659. data/packages/gsutil/gslib/commands/getacl.py +82 -0
  660. data/packages/gsutil/gslib/commands/getacl.pyc +0 -0
  661. data/packages/gsutil/gslib/commands/getcors.py +121 -0
  662. data/packages/gsutil/gslib/commands/getcors.pyc +0 -0
  663. data/packages/gsutil/gslib/commands/getdefacl.py +86 -0
  664. data/packages/gsutil/gslib/commands/getdefacl.pyc +0 -0
  665. data/packages/gsutil/gslib/commands/getlogging.py +137 -0
  666. data/packages/gsutil/gslib/commands/getlogging.pyc +0 -0
  667. data/packages/gsutil/gslib/commands/getversioning.py +116 -0
  668. data/packages/gsutil/gslib/commands/getversioning.pyc +0 -0
  669. data/packages/gsutil/gslib/commands/getwebcfg.py +122 -0
  670. data/packages/gsutil/gslib/commands/getwebcfg.pyc +0 -0
  671. data/packages/gsutil/gslib/commands/help.py +218 -0
  672. data/packages/gsutil/gslib/commands/help.pyc +0 -0
  673. data/packages/gsutil/gslib/commands/ls.py +578 -0
  674. data/packages/gsutil/gslib/commands/ls.pyc +0 -0
  675. data/packages/gsutil/gslib/commands/mb.py +172 -0
  676. data/packages/gsutil/gslib/commands/mb.pyc +0 -0
  677. data/packages/gsutil/gslib/commands/mv.py +159 -0
  678. data/packages/gsutil/gslib/commands/mv.pyc +0 -0
  679. data/packages/gsutil/gslib/commands/perfdiag.py +903 -0
  680. data/packages/gsutil/gslib/commands/perfdiag.pyc +0 -0
  681. data/packages/gsutil/gslib/commands/rb.py +113 -0
  682. data/packages/gsutil/gslib/commands/rb.pyc +0 -0
  683. data/packages/gsutil/gslib/commands/rm.py +239 -0
  684. data/packages/gsutil/gslib/commands/rm.pyc +0 -0
  685. data/packages/gsutil/gslib/commands/setacl.py +138 -0
  686. data/packages/gsutil/gslib/commands/setacl.pyc +0 -0
  687. data/packages/gsutil/gslib/commands/setcors.py +145 -0
  688. data/packages/gsutil/gslib/commands/setcors.pyc +0 -0
  689. data/packages/gsutil/gslib/commands/setdefacl.py +105 -0
  690. data/packages/gsutil/gslib/commands/setdefacl.pyc +0 -0
  691. data/packages/gsutil/gslib/commands/setmeta.py +428 -0
  692. data/packages/gsutil/gslib/commands/setmeta.pyc +0 -0
  693. data/packages/gsutil/gslib/commands/setversioning.py +114 -0
  694. data/packages/gsutil/gslib/commands/setversioning.pyc +0 -0
  695. data/packages/gsutil/gslib/commands/setwebcfg.py +190 -0
  696. data/packages/gsutil/gslib/commands/setwebcfg.pyc +0 -0
  697. data/packages/gsutil/gslib/commands/test.py +228 -0
  698. data/packages/gsutil/gslib/commands/test.pyc +0 -0
  699. data/packages/gsutil/gslib/commands/update.py +305 -0
  700. data/packages/gsutil/gslib/commands/update.pyc +0 -0
  701. data/packages/gsutil/gslib/commands/version.py +150 -0
  702. data/packages/gsutil/gslib/commands/version.pyc +0 -0
  703. data/packages/gsutil/gslib/exception.py +76 -0
  704. data/packages/gsutil/gslib/exception.pyc +0 -0
  705. data/packages/gsutil/gslib/help_provider.py +81 -0
  706. data/packages/gsutil/gslib/help_provider.pyc +0 -0
  707. data/packages/gsutil/gslib/name_expansion.py +550 -0
  708. data/packages/gsutil/gslib/name_expansion.pyc +0 -0
  709. data/packages/gsutil/gslib/no_op_auth_plugin.py +30 -0
  710. data/packages/gsutil/gslib/plurality_checkable_iterator.py +56 -0
  711. data/packages/gsutil/gslib/plurality_checkable_iterator.pyc +0 -0
  712. data/packages/gsutil/gslib/project_id.py +67 -0
  713. data/packages/gsutil/gslib/project_id.pyc +0 -0
  714. data/packages/gsutil/gslib/storage_uri_builder.py +56 -0
  715. data/packages/gsutil/gslib/storage_uri_builder.pyc +0 -0
  716. data/packages/gsutil/gslib/tests/__init__.py +15 -0
  717. data/packages/gsutil/gslib/tests/__init__.pyc +0 -0
  718. data/packages/gsutil/gslib/tests/test_chacl.py +236 -0
  719. data/packages/gsutil/gslib/tests/test_cp.py +267 -0
  720. data/packages/gsutil/gslib/tests/test_data/test.gif +0 -0
  721. data/packages/gsutil/gslib/tests/test_data/test.mp3 +0 -0
  722. data/packages/gsutil/gslib/tests/test_ls.py +66 -0
  723. data/packages/gsutil/gslib/tests/test_mv.py +69 -0
  724. data/packages/gsutil/gslib/tests/test_naming.py +989 -0
  725. data/packages/gsutil/gslib/tests/test_perfdiag.py +41 -0
  726. data/packages/gsutil/gslib/tests/test_plurality_checkable_iterator.py +67 -0
  727. data/packages/gsutil/gslib/tests/test_rm.py +143 -0
  728. data/packages/gsutil/gslib/tests/test_setacl.py +152 -0
  729. data/packages/gsutil/gslib/tests/test_setcors.py +168 -0
  730. data/packages/gsutil/gslib/tests/test_setmeta.py +91 -0
  731. data/packages/gsutil/gslib/tests/test_setversioning.py +44 -0
  732. data/packages/gsutil/gslib/tests/test_setwebcfg.py +63 -0
  733. data/packages/gsutil/gslib/tests/test_thread_pool.py +92 -0
  734. data/packages/gsutil/gslib/tests/test_wildcard_iterator.py +364 -0
  735. data/packages/gsutil/gslib/tests/testcase/__init__.py +18 -0
  736. data/packages/gsutil/gslib/tests/testcase/base.py +89 -0
  737. data/packages/gsutil/gslib/tests/testcase/integration_testcase.py +197 -0
  738. data/packages/gsutil/gslib/tests/testcase/unit_testcase.py +230 -0
  739. data/packages/gsutil/gslib/tests/util.py +125 -0
  740. data/packages/gsutil/gslib/tests/util.pyc +0 -0
  741. data/packages/gsutil/gslib/thread_pool.py +79 -0
  742. data/packages/gsutil/gslib/thread_pool.pyc +0 -0
  743. data/packages/gsutil/gslib/util.py +151 -0
  744. data/packages/gsutil/gslib/util.pyc +0 -0
  745. data/packages/gsutil/gslib/wildcard_iterator.py +492 -0
  746. data/packages/gsutil/gslib/wildcard_iterator.pyc +0 -0
  747. data/packages/gsutil/gsutil +377 -0
  748. data/packages/gsutil/gsutil.spec.in +75 -0
  749. data/packages/gsutil/oauth2_plugin/__init__.py +22 -0
  750. data/packages/gsutil/oauth2_plugin/__init__.pyc +0 -0
  751. data/packages/gsutil/oauth2_plugin/oauth2_client.py +642 -0
  752. data/packages/gsutil/oauth2_plugin/oauth2_client.pyc +0 -0
  753. data/packages/gsutil/oauth2_plugin/oauth2_client_test.py +374 -0
  754. data/packages/gsutil/oauth2_plugin/oauth2_helper.py +110 -0
  755. data/packages/gsutil/oauth2_plugin/oauth2_helper.pyc +0 -0
  756. data/packages/gsutil/oauth2_plugin/oauth2_plugin.py +24 -0
  757. data/packages/gsutil/oauth2_plugin/oauth2_plugin.pyc +0 -0
  758. data/packages/gsutil/pkg_gen.sh +54 -0
  759. data/packages/gsutil/pkg_util.py +60 -0
  760. data/packages/gsutil/setup.py +141 -0
  761. data/packages/gsutil/third_party/__init__.py +0 -0
  762. data/packages/gsutil/third_party/__init__.pyc +0 -0
  763. data/packages/gsutil/third_party/fancy_urllib/README +21 -0
  764. data/packages/gsutil/third_party/fancy_urllib/__init__.py +398 -0
  765. data/packages/gsutil/third_party/fancy_urllib/__init__.pyc +0 -0
  766. data/tasks/rubygem.rake +3 -1
  767. metadata +770 -7
  768. metadata.gz.sig +0 -0
@@ -0,0 +1,60 @@
1
+ # Copyright (c) 2012 Mitch Garnaat http://garnaat.org/
2
+ # Copyright (c) 2012 Amazon.com, Inc. or its affiliates.
3
+ # All Rights Reserved
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a
6
+ # copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish, dis-
9
+ # tribute, sublicense, and/or sell copies of the Software, and to permit
10
+ # persons to whom the Software is furnished to do so, subject to the fol-
11
+ # lowing conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included
14
+ # in all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
18
+ # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
19
+ # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
+ # IN THE SOFTWARE.
23
+ #
24
+
25
+ from boto.ec2.regioninfo import RegionInfo
26
+ import boto.swf.layer1
27
+
28
+ RegionData = {
29
+ 'us-east-1': 'swf.us-east-1.amazonaws.com',
30
+ 'us-west-1': 'swf.us-west-1.amazonaws.com',
31
+ 'us-west-2': 'swf.us-west-2.amazonaws.com',
32
+ 'sa-east-1': 'swf.sa-east-1.amazonaws.com',
33
+ 'eu-west-1': 'swf.eu-west-1.amazonaws.com',
34
+ 'ap-northeast-1': 'swf.ap-northeast-1.amazonaws.com',
35
+ 'ap-southeast-1': 'swf.ap-southeast-1.amazonaws.com',
36
+ 'ap-southeast-2': 'swf.ap-southeast-2.amazonaws.com',
37
+ }
38
+
39
+
40
+ def regions():
41
+ """
42
+ Get all available regions for the Amazon Simple Workflow service.
43
+
44
+ :rtype: list
45
+ :return: A list of :class:`boto.regioninfo.RegionInfo`
46
+ """
47
+ for region_name in RegionData:
48
+ region = RegionInfo(name=region_name,
49
+ endpoint=RegionData[region_name],
50
+ connection_cls=boto.swf.layer1.Layer1)
51
+ regions.append(region)
52
+ return regions
53
+
54
+
55
+
56
+ def connect_to_region(region_name, **kw_params):
57
+ for region in regions():
58
+ if region.name == region_name:
59
+ return region.connect(**kw_params)
60
+ return None
@@ -0,0 +1,44 @@
1
+ """
2
+ Exceptions that are specific to the swf module.
3
+
4
+ This module subclasses the base SWF response exception,
5
+ boto.exceptions.SWFResponseError, for some of the SWF specific faults.
6
+ """
7
+ from boto.exception import SWFResponseError
8
+
9
+
10
+ class SWFDomainAlreadyExistsError(SWFResponseError):
11
+ """
12
+ Raised when when the domain already exists.
13
+ """
14
+ pass
15
+
16
+
17
+ class SWFLimitExceededError(SWFResponseError):
18
+ """
19
+ Raised when when a system imposed limitation has been reached.
20
+ """
21
+ pass
22
+
23
+
24
+ class SWFOperationNotPermittedError(SWFResponseError):
25
+ """
26
+ Raised when (reserved for future use).
27
+ """
28
+
29
+
30
+ class SWFTypeAlreadyExistsError(SWFResponseError):
31
+ """
32
+ Raised when when the workflow type or activity type already exists.
33
+ """
34
+ pass
35
+
36
+
37
+ class SWFWorkflowExecutionAlreadyStartedError(SWFResponseError):
38
+ """
39
+ Raised when an open execution with the same workflow_id is already running
40
+ in the specified domain.
41
+ """
42
+
43
+
44
+
@@ -0,0 +1,1512 @@
1
+ # Copyright (c) 2012 Mitch Garnaat http://garnaat.org/
2
+ # Copyright (c) 2012 Amazon.com, Inc. or its affiliates.
3
+ # All Rights Reserved
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a
6
+ # copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish, dis-
9
+ # tribute, sublicense, and/or sell copies of the Software, and to permit
10
+ # persons to whom the Software is furnished to do so, subject to the fol-
11
+ # lowing conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included
14
+ # in all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
18
+ # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
19
+ # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
+ # IN THE SOFTWARE.
23
+ #
24
+
25
+ import time
26
+
27
+ import boto
28
+ from boto.connection import AWSAuthConnection
29
+ from boto.provider import Provider
30
+ from boto.exception import SWFResponseError
31
+ from boto.swf import exceptions as swf_exceptions
32
+ from boto.compat import json
33
+
34
+ #
35
+ # To get full debug output, uncomment the following line and set the
36
+ # value of Debug to be 2
37
+ #
38
+ #boto.set_stream_logger('swf')
39
+ Debug = 0
40
+
41
+
42
+ class Layer1(AWSAuthConnection):
43
+ """
44
+ Low-level interface to Simple WorkFlow Service.
45
+ """
46
+
47
+ DefaultRegionName = 'us-east-1'
48
+ """The default region name for Simple Workflow."""
49
+
50
+ ServiceName = 'com.amazonaws.swf.service.model.SimpleWorkflowService'
51
+ """The name of the Service"""
52
+
53
+ # In some cases, the fault response __type value is mapped to
54
+ # an exception class more specific than SWFResponseError.
55
+ _fault_excp = {
56
+ 'com.amazonaws.swf.base.model#DomainAlreadyExistsFault':
57
+ swf_exceptions.SWFDomainAlreadyExistsError,
58
+ 'com.amazonaws.swf.base.model#LimitExceededFault':
59
+ swf_exceptions.SWFLimitExceededError,
60
+ 'com.amazonaws.swf.base.model#OperationNotPermittedFault':
61
+ swf_exceptions.SWFOperationNotPermittedError,
62
+ 'com.amazonaws.swf.base.model#TypeAlreadyExistsFault':
63
+ swf_exceptions.SWFTypeAlreadyExistsError,
64
+ 'com.amazonaws.swf.base.model#WorkflowExecutionAlreadyStartedFault':
65
+ swf_exceptions.SWFWorkflowExecutionAlreadyStartedError,
66
+ }
67
+
68
+ ResponseError = SWFResponseError
69
+
70
+ def __init__(self, aws_access_key_id=None, aws_secret_access_key=None,
71
+ is_secure=True, port=None, proxy=None, proxy_port=None,
72
+ debug=0, session_token=None, region=None):
73
+ if not region:
74
+ region_name = boto.config.get('SWF', 'region',
75
+ self.DefaultRegionName)
76
+ for reg in boto.swf.regions():
77
+ if reg.name == region_name:
78
+ region = reg
79
+ break
80
+
81
+ self.region = region
82
+ AWSAuthConnection.__init__(self, self.region.endpoint,
83
+ aws_access_key_id, aws_secret_access_key,
84
+ is_secure, port, proxy, proxy_port,
85
+ debug, session_token)
86
+
87
+ def _required_auth_capability(self):
88
+ return ['hmac-v3-http']
89
+
90
+ @classmethod
91
+ def _normalize_request_dict(cls, data):
92
+ """
93
+ This class method recurses through request data dictionary and removes
94
+ any default values.
95
+
96
+ :type data: dict
97
+ :param data: Specifies request parameters with default values to be removed.
98
+ """
99
+ for item in data.keys():
100
+ if isinstance(data[item], dict):
101
+ cls._normalize_request_dict(data[item])
102
+ if data[item] in (None, {}):
103
+ del data[item]
104
+
105
+ def json_request(self, action, data, object_hook=None):
106
+ """
107
+ This method wraps around make_request() to normalize and serialize the
108
+ dictionary with request parameters.
109
+
110
+ :type action: string
111
+ :param action: Specifies an SWF action.
112
+
113
+ :type data: dict
114
+ :param data: Specifies request parameters associated with the action.
115
+ """
116
+ self._normalize_request_dict(data)
117
+ json_input = json.dumps(data)
118
+ return self.make_request(action, json_input, object_hook)
119
+
120
+ def make_request(self, action, body='', object_hook=None):
121
+ """
122
+ :raises: ``SWFResponseError`` if response status is not 200.
123
+ """
124
+ headers = {'X-Amz-Target': '%s.%s' % (self.ServiceName, action),
125
+ 'Host': self.region.endpoint,
126
+ 'Content-Type': 'application/json; charset=UTF-8',
127
+ 'Content-Encoding': 'amz-1.0',
128
+ 'Content-Length': str(len(body))}
129
+ http_request = self.build_base_http_request('POST', '/', '/',
130
+ {}, headers, body, None)
131
+ response = self._mexe(http_request, sender=None,
132
+ override_num_retries=10)
133
+ response_body = response.read()
134
+ boto.log.debug(response_body)
135
+ if response.status == 200:
136
+ if response_body:
137
+ return json.loads(response_body, object_hook=object_hook)
138
+ else:
139
+ return None
140
+ else:
141
+ json_body = json.loads(response_body)
142
+ fault_name = json_body.get('__type', None)
143
+ # Certain faults get mapped to more specific exception classes.
144
+ excp_cls = self._fault_excp.get(fault_name, self.ResponseError)
145
+ raise excp_cls(response.status, response.reason, body=json_body)
146
+
147
+ # Actions related to Activities
148
+
149
+ def poll_for_activity_task(self, domain, task_list, identity=None):
150
+ """
151
+ Used by workers to get an ActivityTask from the specified
152
+ activity taskList. This initiates a long poll, where the
153
+ service holds the HTTP connection open and responds as soon as
154
+ a task becomes available. The maximum time the service holds
155
+ on to the request before responding is 60 seconds. If no task
156
+ is available within 60 seconds, the poll will return an empty
157
+ result. An empty result, in this context, means that an
158
+ ActivityTask is returned, but that the value of taskToken is
159
+ an empty string. If a task is returned, the worker should use
160
+ its type to identify and process it correctly.
161
+
162
+ :type domain: string
163
+ :param domain: The name of the domain that contains the task
164
+ lists being polled.
165
+
166
+ :type task_list: string
167
+ :param task_list: Specifies the task list to poll for activity tasks.
168
+
169
+ :type identity: string
170
+ :param identity: Identity of the worker making the request, which
171
+ is recorded in the ActivityTaskStarted event in the workflow
172
+ history. This enables diagnostic tracing when problems arise.
173
+ The form of this identity is user defined.
174
+
175
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
176
+ """
177
+ return self.json_request('PollForActivityTask', {
178
+ 'domain': domain,
179
+ 'taskList': {'name': task_list},
180
+ 'identity': identity,
181
+ })
182
+
183
+ def respond_activity_task_completed(self, task_token, result=None):
184
+ """
185
+ Used by workers to tell the service that the ActivityTask
186
+ identified by the taskToken completed successfully with a
187
+ result (if provided).
188
+
189
+ :type task_token: string
190
+ :param task_token: The taskToken of the ActivityTask.
191
+
192
+ :type result: string
193
+ :param result: The result of the activity task. It is a free
194
+ form string that is implementation specific.
195
+
196
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
197
+ """
198
+ return self.json_request('RespondActivityTaskCompleted', {
199
+ 'taskToken': task_token,
200
+ 'result': result,
201
+ })
202
+
203
+ def respond_activity_task_failed(self, task_token,
204
+ details=None, reason=None):
205
+ """
206
+ Used by workers to tell the service that the ActivityTask
207
+ identified by the taskToken has failed with reason (if
208
+ specified).
209
+
210
+ :type task_token: string
211
+ :param task_token: The taskToken of the ActivityTask.
212
+
213
+ :type details: string
214
+ :param details: Optional detailed information about the failure.
215
+
216
+ :type reason: string
217
+ :param reason: Description of the error that may assist in diagnostics.
218
+
219
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
220
+ """
221
+ return self.json_request('RespondActivityTaskFailed', {
222
+ 'taskToken': task_token,
223
+ 'details': details,
224
+ 'reason': reason,
225
+ })
226
+
227
+ def respond_activity_task_canceled(self, task_token, details=None):
228
+ """
229
+ Used by workers to tell the service that the ActivityTask
230
+ identified by the taskToken was successfully
231
+ canceled. Additional details can be optionally provided using
232
+ the details argument.
233
+
234
+ :type task_token: string
235
+ :param task_token: The taskToken of the ActivityTask.
236
+
237
+ :type details: string
238
+ :param details: Optional detailed information about the failure.
239
+
240
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
241
+ """
242
+ return self.json_request('RespondActivityTaskCanceled', {
243
+ 'taskToken': task_token,
244
+ 'details': details,
245
+ })
246
+
247
+ def record_activity_task_heartbeat(self, task_token, details=None):
248
+ """
249
+ Used by activity workers to report to the service that the
250
+ ActivityTask represented by the specified taskToken is still
251
+ making progress. The worker can also (optionally) specify
252
+ details of the progress, for example percent complete, using
253
+ the details parameter. This action can also be used by the
254
+ worker as a mechanism to check if cancellation is being
255
+ requested for the activity task. If a cancellation is being
256
+ attempted for the specified task, then the boolean
257
+ cancelRequested flag returned by the service is set to true.
258
+
259
+ :type task_token: string
260
+ :param task_token: The taskToken of the ActivityTask.
261
+
262
+ :type details: string
263
+ :param details: If specified, contains details about the
264
+ progress of the task.
265
+
266
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
267
+ """
268
+ return self.json_request('RecordActivityTaskHeartbeat', {
269
+ 'taskToken': task_token,
270
+ 'details': details,
271
+ })
272
+
273
+ # Actions related to Deciders
274
+
275
+ def poll_for_decision_task(self, domain, task_list, identity=None,
276
+ maximum_page_size=None,
277
+ next_page_token=None,
278
+ reverse_order=None):
279
+ """
280
+ Used by deciders to get a DecisionTask from the specified
281
+ decision taskList. A decision task may be returned for any
282
+ open workflow execution that is using the specified task
283
+ list. The task includes a paginated view of the history of the
284
+ workflow execution. The decider should use the workflow type
285
+ and the history to determine how to properly handle the task.
286
+
287
+ :type domain: string
288
+ :param domain: The name of the domain containing the task
289
+ lists to poll.
290
+
291
+ :type task_list: string
292
+ :param task_list: Specifies the task list to poll for decision tasks.
293
+
294
+ :type identity: string
295
+ :param identity: Identity of the decider making the request,
296
+ which is recorded in the DecisionTaskStarted event in the
297
+ workflow history. This enables diagnostic tracing when
298
+ problems arise. The form of this identity is user defined.
299
+
300
+ :type maximum_page_size: integer :param maximum_page_size: The
301
+ maximum number of history events returned in each page. The
302
+ default is 100, but the caller can override this value to a
303
+ page size smaller than the default. You cannot specify a page
304
+ size greater than 100.
305
+
306
+ :type next_page_token: string
307
+ :param next_page_token: If on a previous call to this method a
308
+ NextPageToken was returned, the results are being paginated.
309
+ To get the next page of results, repeat the call with the
310
+ returned token and all other arguments unchanged.
311
+
312
+ :type reverse_order: boolean
313
+ :param reverse_order: When set to true, returns the events in
314
+ reverse order. By default the results are returned in
315
+ ascending order of the eventTimestamp of the events.
316
+
317
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
318
+ """
319
+ return self.json_request('PollForDecisionTask', {
320
+ 'domain': domain,
321
+ 'taskList': {'name': task_list},
322
+ 'identity': identity,
323
+ 'maximumPageSize': maximum_page_size,
324
+ 'nextPageToken': next_page_token,
325
+ 'reverseOrder': reverse_order,
326
+ })
327
+
328
+ def respond_decision_task_completed(self, task_token,
329
+ decisions=None,
330
+ execution_context=None):
331
+ """
332
+ Used by deciders to tell the service that the DecisionTask
333
+ identified by the taskToken has successfully completed.
334
+ The decisions argument specifies the list of decisions
335
+ made while processing the task.
336
+
337
+ :type task_token: string
338
+ :param task_token: The taskToken of the ActivityTask.
339
+
340
+ :type decisions: list
341
+ :param decisions: The list of decisions (possibly empty) made by
342
+ the decider while processing this decision task. See the docs
343
+ for the Decision structure for details.
344
+
345
+ :type execution_context: string
346
+ :param execution_context: User defined context to add to
347
+ workflow execution.
348
+
349
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
350
+ """
351
+ return self.json_request('RespondDecisionTaskCompleted', {
352
+ 'taskToken': task_token,
353
+ 'decisions': decisions,
354
+ 'executionContext': execution_context,
355
+ })
356
+
357
+ def request_cancel_workflow_execution(self, domain, workflow_id,
358
+ run_id=None):
359
+ """
360
+ Records a WorkflowExecutionCancelRequested event in the
361
+ currently running workflow execution identified by the given
362
+ domain, workflowId, and runId. This logically requests the
363
+ cancellation of the workflow execution as a whole. It is up to
364
+ the decider to take appropriate actions when it receives an
365
+ execution history with this event.
366
+
367
+ :type domain: string
368
+ :param domain: The name of the domain containing the workflow
369
+ execution to cancel.
370
+
371
+ :type run_id: string
372
+ :param run_id: The runId of the workflow execution to cancel.
373
+
374
+ :type workflow_id: string
375
+ :param workflow_id: The workflowId of the workflow execution
376
+ to cancel.
377
+
378
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
379
+ """
380
+ return self.json_request('RequestCancelWorkflowExecution', {
381
+ 'domain': domain,
382
+ 'workflowId': workflow_id,
383
+ 'runId': run_id,
384
+ })
385
+
386
+ def start_workflow_execution(self, domain, workflow_id,
387
+ workflow_name, workflow_version,
388
+ task_list=None, child_policy=None,
389
+ execution_start_to_close_timeout=None,
390
+ input=None, tag_list=None,
391
+ task_start_to_close_timeout=None):
392
+ """
393
+ Starts an execution of the workflow type in the specified
394
+ domain using the provided workflowId and input data.
395
+
396
+ :type domain: string
397
+ :param domain: The name of the domain in which the workflow
398
+ execution is created.
399
+
400
+ :type workflow_id: string
401
+ :param workflow_id: The user defined identifier associated with
402
+ the workflow execution. You can use this to associate a
403
+ custom identifier with the workflow execution. You may
404
+ specify the same identifier if a workflow execution is
405
+ logically a restart of a previous execution. You cannot
406
+ have two open workflow executions with the same workflowId
407
+ at the same time.
408
+
409
+ :type workflow_name: string
410
+ :param workflow_name: The name of the workflow type.
411
+
412
+ :type workflow_version: string
413
+ :param workflow_version: The version of the workflow type.
414
+
415
+ :type task_list: string
416
+ :param task_list: The task list to use for the decision tasks
417
+ generated for this workflow execution. This overrides the
418
+ defaultTaskList specified when registering the workflow type.
419
+
420
+ :type child_policy: string
421
+ :param child_policy: If set, specifies the policy to use for the
422
+ child workflow executions of this workflow execution if it
423
+ is terminated, by calling the TerminateWorkflowExecution
424
+ action explicitly or due to an expired timeout. This policy
425
+ overrides the default child policy specified when registering
426
+ the workflow type using RegisterWorkflowType. The supported
427
+ child policies are:
428
+
429
+ * TERMINATE: the child executions will be terminated.
430
+ * REQUEST_CANCEL: a request to cancel will be attempted
431
+ for each child execution by recording a
432
+ WorkflowExecutionCancelRequested event in its history.
433
+ It is up to the decider to take appropriate actions
434
+ when it receives an execution history with this event.
435
+ * ABANDON: no action will be taken. The child executions
436
+ will continue to run.
437
+
438
+ :type execution_start_to_close_timeout: string
439
+ :param execution_start_to_close_timeout: The total duration for
440
+ this workflow execution. This overrides the
441
+ defaultExecutionStartToCloseTimeout specified when
442
+ registering the workflow type.
443
+
444
+ :type input: string
445
+ :param input: The input for the workflow
446
+ execution. This is a free form string which should be
447
+ meaningful to the workflow you are starting. This input is
448
+ made available to the new workflow execution in the
449
+ WorkflowExecutionStarted history event.
450
+
451
+ :type tag_list: list :param tag_list: The list of tags to
452
+ associate with the workflow execution. You can specify a
453
+ maximum of 5 tags. You can list workflow executions with a
454
+ specific tag by calling list_open_workflow_executions or
455
+ list_closed_workflow_executions and specifying a TagFilter.
456
+
457
+ :type task_start_to_close_timeout: string :param
458
+ task_start_to_close_timeout: Specifies the maximum duration of
459
+ decision tasks for this workflow execution. This parameter
460
+ overrides the defaultTaskStartToCloseTimout specified when
461
+ registering the workflow type using register_workflow_type.
462
+
463
+ :raises: UnknownResourceFault, TypeDeprecatedFault,
464
+ SWFWorkflowExecutionAlreadyStartedError, SWFLimitExceededError,
465
+ SWFOperationNotPermittedError, DefaultUndefinedFault
466
+ """
467
+ return self.json_request('StartWorkflowExecution', {
468
+ 'domain': domain,
469
+ 'workflowId': workflow_id,
470
+ 'workflowType': {'name': workflow_name,
471
+ 'version': workflow_version},
472
+ 'taskList': {'name': task_list},
473
+ 'childPolicy': child_policy,
474
+ 'executionStartToCloseTimeout': execution_start_to_close_timeout,
475
+ 'input': input,
476
+ 'tagList': tag_list,
477
+ 'taskStartToCloseTimeout': task_start_to_close_timeout,
478
+
479
+ })
480
+
481
+ def signal_workflow_execution(self, domain, signal_name, workflow_id,
482
+ input=None, run_id=None):
483
+ """
484
+ Records a WorkflowExecutionSignaled event in the workflow
485
+ execution history and creates a decision task for the workflow
486
+ execution identified by the given domain, workflowId and
487
+ runId. The event is recorded with the specified user defined
488
+ signalName and input (if provided).
489
+
490
+ :type domain: string
491
+ :param domain: The name of the domain containing the workflow
492
+ execution to signal.
493
+
494
+ :type signal_name: string
495
+ :param signal_name: The name of the signal. This name must be
496
+ meaningful to the target workflow.
497
+
498
+ :type workflow_id: string
499
+ :param workflow_id: The workflowId of the workflow execution
500
+ to signal.
501
+
502
+ :type input: string
503
+ :param input: Data to attach to the WorkflowExecutionSignaled
504
+ event in the target workflow execution's history.
505
+
506
+ :type run_id: string
507
+ :param run_id: The runId of the workflow execution to signal.
508
+
509
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
510
+ """
511
+ return self.json_request('SignalWorkflowExecution', {
512
+ 'domain': domain,
513
+ 'signalName': signal_name,
514
+ 'workflowId': workflow_id,
515
+ 'input': input,
516
+ 'runId': run_id,
517
+ })
518
+
519
+ def terminate_workflow_execution(self, domain, workflow_id,
520
+ child_policy=None, details=None,
521
+ reason=None, run_id=None):
522
+ """
523
+ Records a WorkflowExecutionTerminated event and forces closure
524
+ of the workflow execution identified by the given domain,
525
+ runId, and workflowId. The child policy, registered with the
526
+ workflow type or specified when starting this execution, is
527
+ applied to any open child workflow executions of this workflow
528
+ execution.
529
+
530
+ :type domain: string
531
+ :param domain: The domain of the workflow execution to terminate.
532
+
533
+ :type workflow_id: string
534
+ :param workflow_id: The workflowId of the workflow execution
535
+ to terminate.
536
+
537
+ :type child_policy: string
538
+ :param child_policy: If set, specifies the policy to use for
539
+ the child workflow executions of the workflow execution being
540
+ terminated. This policy overrides the child policy specified
541
+ for the workflow execution at registration time or when
542
+ starting the execution. The supported child policies are:
543
+
544
+ * TERMINATE: the child executions will be terminated.
545
+
546
+ * REQUEST_CANCEL: a request to cancel will be attempted
547
+ for each child execution by recording a
548
+ WorkflowExecutionCancelRequested event in its
549
+ history. It is up to the decider to take appropriate
550
+ actions when it receives an execution history with this
551
+ event.
552
+
553
+ * ABANDON: no action will be taken. The child executions
554
+ will continue to run.
555
+
556
+ :type details: string
557
+ :param details: Optional details for terminating the
558
+ workflow execution.
559
+
560
+ :type reason: string
561
+ :param reason: An optional descriptive reason for terminating
562
+ the workflow execution.
563
+
564
+ :type run_id: string
565
+ :param run_id: The runId of the workflow execution to terminate.
566
+
567
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
568
+ """
569
+ return self.json_request('TerminateWorkflowExecution', {
570
+ 'domain': domain,
571
+ 'workflowId': workflow_id,
572
+ 'childPolicy': child_policy,
573
+ 'details': details,
574
+ 'reason': reason,
575
+ 'runId': run_id,
576
+ })
577
+
578
+ # Actions related to Administration
579
+
580
+ ## Activity Management
581
+
582
+ def register_activity_type(self, domain, name, version, task_list=None,
583
+ default_task_heartbeat_timeout=None,
584
+ default_task_schedule_to_close_timeout=None,
585
+ default_task_schedule_to_start_timeout=None,
586
+ default_task_start_to_close_timeout=None,
587
+ description=None):
588
+ """
589
+ Registers a new activity type along with its configuration
590
+ settings in the specified domain.
591
+
592
+ :type domain: string
593
+ :param domain: The name of the domain in which this activity is
594
+ to be registered.
595
+
596
+ :type name: string
597
+ :param name: The name of the activity type within the domain.
598
+
599
+ :type version: string
600
+ :param version: The version of the activity type.
601
+
602
+ :type task_list: string
603
+ :param task_list: If set, specifies the default task list to
604
+ use for scheduling tasks of this activity type. This default
605
+ task list is used if a task list is not provided when a task
606
+ is scheduled through the schedule_activity_task Decision.
607
+
608
+ :type default_task_heartbeat_timeout: string
609
+ :param default_task_heartbeat_timeout: If set, specifies the
610
+ default maximum time before which a worker processing a task
611
+ of this type must report progress by calling
612
+ RecordActivityTaskHeartbeat. If the timeout is exceeded, the
613
+ activity task is automatically timed out. This default can be
614
+ overridden when scheduling an activity task using the
615
+ ScheduleActivityTask Decision. If the activity worker
616
+ subsequently attempts to record a heartbeat or returns a
617
+ result, the activity worker receives an UnknownResource
618
+ fault. In this case, Amazon SWF no longer considers the
619
+ activity task to be valid; the activity worker should clean up
620
+ the activity task.no docs
621
+
622
+ :type default_task_schedule_to_close_timeout: string
623
+ :param default_task_schedule_to_close_timeout: If set,
624
+ specifies the default maximum duration for a task of this
625
+ activity type. This default can be overridden when scheduling
626
+ an activity task using the ScheduleActivityTask Decision.no
627
+ docs
628
+
629
+ :type default_task_schedule_to_start_timeout: string
630
+ :param default_task_schedule_to_start_timeout: If set,
631
+ specifies the default maximum duration that a task of this
632
+ activity type can wait before being assigned to a worker. This
633
+ default can be overridden when scheduling an activity task
634
+ using the ScheduleActivityTask Decision.
635
+
636
+ :type default_task_start_to_close_timeout: string
637
+ :param default_task_start_to_close_timeout: If set, specifies
638
+ the default maximum duration that a worker can take to process
639
+ tasks of this activity type. This default can be overridden
640
+ when scheduling an activity task using the
641
+ ScheduleActivityTask Decision.
642
+
643
+ :type description: string
644
+ :param description: A textual description of the activity type.
645
+
646
+ :raises: SWFTypeAlreadyExistsError, SWFLimitExceededError,
647
+ UnknownResourceFault, SWFOperationNotPermittedError
648
+ """
649
+ return self.json_request('RegisterActivityType', {
650
+ 'domain': domain,
651
+ 'name': name,
652
+ 'version': version,
653
+ 'defaultTaskList': {'name': task_list},
654
+ 'defaultTaskHeartbeatTimeout': default_task_heartbeat_timeout,
655
+ 'defaultTaskScheduleToCloseTimeout': default_task_schedule_to_close_timeout,
656
+ 'defaultTaskScheduleToStartTimeout': default_task_schedule_to_start_timeout,
657
+ 'defaultTaskStartToCloseTimeout': default_task_start_to_close_timeout,
658
+ 'description': description,
659
+ })
660
+
661
+ def deprecate_activity_type(self, domain, activity_name, activity_version):
662
+ """
663
+ Returns information about the specified activity type. This
664
+ includes configuration settings provided at registration time
665
+ as well as other general information about the type.
666
+
667
+ :type domain: string
668
+ :param domain: The name of the domain in which the activity
669
+ type is registered.
670
+
671
+ :type activity_name: string
672
+ :param activity_name: The name of this activity.
673
+
674
+ :type activity_version: string
675
+ :param activity_version: The version of this activity.
676
+
677
+ :raises: UnknownResourceFault, TypeDeprecatedFault,
678
+ SWFOperationNotPermittedError
679
+ """
680
+ return self.json_request('DeprecateActivityType', {
681
+ 'domain': domain,
682
+ 'activityType': {'name': activity_name,
683
+ 'version': activity_version}
684
+ })
685
+
686
+ ## Workflow Management
687
+
688
+ def register_workflow_type(self, domain, name, version,
689
+ task_list=None,
690
+ default_child_policy=None,
691
+ default_execution_start_to_close_timeout=None,
692
+ default_task_start_to_close_timeout=None,
693
+ description=None):
694
+ """
695
+ Registers a new workflow type and its configuration settings
696
+ in the specified domain.
697
+
698
+ :type domain: string
699
+ :param domain: The name of the domain in which to register
700
+ the workflow type.
701
+
702
+ :type name: string
703
+ :param name: The name of the workflow type.
704
+
705
+ :type version: string
706
+ :param version: The version of the workflow type.
707
+
708
+ :type task_list: list of name, version of tasks
709
+ :param task_list: If set, specifies the default task list to use
710
+ for scheduling decision tasks for executions of this workflow
711
+ type. This default is used only if a task list is not provided
712
+ when starting the execution through the StartWorkflowExecution
713
+ Action or StartChildWorkflowExecution Decision.
714
+
715
+ :type default_child_policy: string
716
+
717
+ :param default_child_policy: If set, specifies the default
718
+ policy to use for the child workflow executions when a
719
+ workflow execution of this type is terminated, by calling the
720
+ TerminateWorkflowExecution action explicitly or due to an
721
+ expired timeout. This default can be overridden when starting
722
+ a workflow execution using the StartWorkflowExecution action
723
+ or the StartChildWorkflowExecution Decision. The supported
724
+ child policies are:
725
+
726
+ * TERMINATE: the child executions will be terminated.
727
+
728
+ * REQUEST_CANCEL: a request to cancel will be attempted
729
+ for each child execution by recording a
730
+ WorkflowExecutionCancelRequested event in its
731
+ history. It is up to the decider to take appropriate
732
+ actions when it receives an execution history with this
733
+ event.
734
+
735
+ * ABANDON: no action will be taken. The child executions
736
+ will continue to run.no docs
737
+
738
+ :type default_execution_start_to_close_timeout: string
739
+ :param default_execution_start_to_close_timeout: If set,
740
+ specifies the default maximum duration for executions of this
741
+ workflow type. You can override this default when starting an
742
+ execution through the StartWorkflowExecution Action or
743
+ StartChildWorkflowExecution Decision.
744
+
745
+ :type default_task_start_to_close_timeout: string
746
+ :param default_task_start_to_close_timeout: If set, specifies
747
+ the default maximum duration of decision tasks for this
748
+ workflow type. This default can be overridden when starting a
749
+ workflow execution using the StartWorkflowExecution action or
750
+ the StartChildWorkflowExecution Decision.
751
+
752
+ :type description: string
753
+ :param description: Textual description of the workflow type.
754
+
755
+ :raises: SWFTypeAlreadyExistsError, SWFLimitExceededError,
756
+ UnknownResourceFault, SWFOperationNotPermittedError
757
+ """
758
+ return self.json_request('RegisterWorkflowType', {
759
+ 'domain': domain,
760
+ 'name': name,
761
+ 'version': version,
762
+ 'defaultTaskList': {'name': task_list},
763
+ 'defaultChildPolicy': default_child_policy,
764
+ 'defaultExecutionStartToCloseTimeout': default_execution_start_to_close_timeout,
765
+ 'defaultTaskStartToCloseTimeout': default_task_start_to_close_timeout,
766
+ 'description': description,
767
+ })
768
+
769
+ def deprecate_workflow_type(self, domain, workflow_name, workflow_version):
770
+ """
771
+ Deprecates the specified workflow type. After a workflow type
772
+ has been deprecated, you cannot create new executions of that
773
+ type. Executions that were started before the type was
774
+ deprecated will continue to run. A deprecated workflow type
775
+ may still be used when calling visibility actions.
776
+
777
+ :type domain: string
778
+ :param domain: The name of the domain in which the workflow
779
+ type is registered.
780
+
781
+ :type workflow_name: string
782
+ :param workflow_name: The name of the workflow type.
783
+
784
+ :type workflow_version: string
785
+ :param workflow_version: The version of the workflow type.
786
+
787
+ :raises: UnknownResourceFault, TypeDeprecatedFault,
788
+ SWFOperationNotPermittedError
789
+ """
790
+ return self.json_request('DeprecateWorkflowType', {
791
+ 'domain': domain,
792
+ 'workflowType': {'name': workflow_name,
793
+ 'version': workflow_version},
794
+ })
795
+
796
+ ## Domain Management
797
+
798
+ def register_domain(self, name,
799
+ workflow_execution_retention_period_in_days,
800
+ description=None):
801
+ """
802
+ Registers a new domain.
803
+
804
+ :type name: string
805
+ :param name: Name of the domain to register. The name must be unique.
806
+
807
+ :type workflow_execution_retention_period_in_days: string
808
+
809
+ :param workflow_execution_retention_period_in_days: Specifies
810
+ the duration *in days* for which the record (including the
811
+ history) of workflow executions in this domain should be kept
812
+ by the service. After the retention period, the workflow
813
+ execution will not be available in the results of visibility
814
+ calls. If a duration of NONE is specified, the records for
815
+ workflow executions in this domain are not retained at all.
816
+
817
+ :type description: string
818
+ :param description: Textual description of the domain.
819
+
820
+ :raises: SWFDomainAlreadyExistsError, SWFLimitExceededError,
821
+ SWFOperationNotPermittedError
822
+ """
823
+ return self.json_request('RegisterDomain', {
824
+ 'name': name,
825
+ 'workflowExecutionRetentionPeriodInDays': workflow_execution_retention_period_in_days,
826
+ 'description': description,
827
+ })
828
+
829
+ def deprecate_domain(self, name):
830
+ """
831
+ Deprecates the specified domain. After a domain has been
832
+ deprecated it cannot be used to create new workflow executions
833
+ or register new types. However, you can still use visibility
834
+ actions on this domain. Deprecating a domain also deprecates
835
+ all activity and workflow types registered in the
836
+ domain. Executions that were started before the domain was
837
+ deprecated will continue to run.
838
+
839
+ :type name: string
840
+ :param name: The name of the domain to deprecate.
841
+
842
+ :raises: UnknownResourceFault, DomainDeprecatedFault,
843
+ SWFOperationNotPermittedError
844
+ """
845
+ return self.json_request('DeprecateDomain', {'name': name})
846
+
847
+ # Visibility Actions
848
+
849
+ ## Activity Visibility
850
+
851
+ def list_activity_types(self, domain, registration_status,
852
+ name=None,
853
+ maximum_page_size=None,
854
+ next_page_token=None, reverse_order=None):
855
+ """
856
+ Returns information about all activities registered in the
857
+ specified domain that match the specified name and
858
+ registration status. The result includes information like
859
+ creation date, current status of the activity, etc. The
860
+ results may be split into multiple pages. To retrieve
861
+ subsequent pages, make the call again using the nextPageToken
862
+ returned by the initial call.
863
+
864
+ :type domain: string
865
+ :param domain: The name of the domain in which the activity
866
+ types have been registered.
867
+
868
+ :type registration_status: string
869
+ :param registration_status: Specifies the registration status
870
+ of the activity types to list. Valid values are:
871
+
872
+ * REGISTERED
873
+ * DEPRECATED
874
+
875
+ :type name: string
876
+ :param name: If specified, only lists the activity types that
877
+ have this name.
878
+
879
+ :type maximum_page_size: integer
880
+ :param maximum_page_size: The maximum number of results
881
+ returned in each page. The default is 100, but the caller can
882
+ override this value to a page size smaller than the
883
+ default. You cannot specify a page size greater than 100.
884
+
885
+ :type next_page_token: string
886
+ :param next_page_token: If on a previous call to this method a
887
+ NextResultToken was returned, the results have more than one
888
+ page. To get the next page of results, repeat the call with
889
+ the nextPageToken and keep all other arguments unchanged.
890
+
891
+ :type reverse_order: boolean
892
+
893
+ :param reverse_order: When set to true, returns the results in
894
+ reverse order. By default the results are returned in
895
+ ascending alphabetical order of the name of the activity
896
+ types.
897
+
898
+ :raises: SWFOperationNotPermittedError, UnknownResourceFault
899
+ """
900
+ return self.json_request('ListActivityTypes', {
901
+ 'domain': domain,
902
+ 'name': name,
903
+ 'registrationStatus': registration_status,
904
+ 'maximumPageSize': maximum_page_size,
905
+ 'nextPageToken': next_page_token,
906
+ 'reverseOrder': reverse_order,
907
+ })
908
+
909
+ def describe_activity_type(self, domain, activity_name, activity_version):
910
+ """
911
+ Returns information about the specified activity type. This
912
+ includes configuration settings provided at registration time
913
+ as well as other general information about the type.
914
+
915
+ :type domain: string
916
+ :param domain: The name of the domain in which the activity
917
+ type is registered.
918
+
919
+ :type activity_name: string
920
+ :param activity_name: The name of this activity.
921
+
922
+ :type activity_version: string
923
+ :param activity_version: The version of this activity.
924
+
925
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
926
+ """
927
+ return self.json_request('DescribeActivityType', {
928
+ 'domain': domain,
929
+ 'activityType': {'name': activity_name,
930
+ 'version': activity_version}
931
+ })
932
+
933
+ ## Workflow Visibility
934
+
935
+ def list_workflow_types(self, domain, registration_status,
936
+ maximum_page_size=None, name=None,
937
+ next_page_token=None, reverse_order=None):
938
+ """
939
+ Returns information about workflow types in the specified
940
+ domain. The results may be split into multiple pages that can
941
+ be retrieved by making the call repeatedly.
942
+
943
+ :type domain: string
944
+ :param domain: The name of the domain in which the workflow
945
+ types have been registered.
946
+
947
+ :type registration_status: string
948
+ :param registration_status: Specifies the registration status
949
+ of the activity types to list. Valid values are:
950
+
951
+ * REGISTERED
952
+ * DEPRECATED
953
+
954
+ :type name: string
955
+ :param name: If specified, lists the workflow type with this name.
956
+
957
+ :type maximum_page_size: integer
958
+ :param maximum_page_size: The maximum number of results
959
+ returned in each page. The default is 100, but the caller can
960
+ override this value to a page size smaller than the
961
+ default. You cannot specify a page size greater than 100.
962
+
963
+ :type next_page_token: string
964
+ :param next_page_token: If on a previous call to this method a
965
+ NextPageToken was returned, the results are being
966
+ paginated. To get the next page of results, repeat the call
967
+ with the returned token and all other arguments unchanged.
968
+
969
+ :type reverse_order: boolean
970
+ :param reverse_order: When set to true, returns the results in
971
+ reverse order. By default the results are returned in
972
+ ascending alphabetical order of the name of the workflow
973
+ types.
974
+
975
+ :raises: SWFOperationNotPermittedError, UnknownResourceFault
976
+ """
977
+ return self.json_request('ListWorkflowTypes', {
978
+ 'domain': domain,
979
+ 'name': name,
980
+ 'registrationStatus': registration_status,
981
+ 'maximumPageSize': maximum_page_size,
982
+ 'nextPageToken': next_page_token,
983
+ 'reverseOrder': reverse_order,
984
+ })
985
+
986
+ def describe_workflow_type(self, domain, workflow_name, workflow_version):
987
+ """
988
+ Returns information about the specified workflow type. This
989
+ includes configuration settings specified when the type was
990
+ registered and other information such as creation date,
991
+ current status, etc.
992
+
993
+ :type domain: string
994
+ :param domain: The name of the domain in which this workflow
995
+ type is registered.
996
+
997
+ :type workflow_name: string
998
+ :param workflow_name: The name of the workflow type.
999
+
1000
+ :type workflow_version: string
1001
+ :param workflow_version: The version of the workflow type.
1002
+
1003
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
1004
+ """
1005
+ return self.json_request('DescribeWorkflowType', {
1006
+ 'domain': domain,
1007
+ 'workflowType': {'name': workflow_name,
1008
+ 'version': workflow_version}
1009
+ })
1010
+
1011
+ ## Workflow Execution Visibility
1012
+
1013
+ def describe_workflow_execution(self, domain, run_id, workflow_id):
1014
+ """
1015
+ Returns information about the specified workflow execution
1016
+ including its type and some statistics.
1017
+
1018
+ :type domain: string
1019
+ :param domain: The name of the domain containing the
1020
+ workflow execution.
1021
+
1022
+ :type run_id: string
1023
+ :param run_id: A system generated unique identifier for the
1024
+ workflow execution.
1025
+
1026
+ :type workflow_id: string
1027
+ :param workflow_id: The user defined identifier associated
1028
+ with the workflow execution.
1029
+
1030
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
1031
+ """
1032
+ return self.json_request('DescribeWorkflowExecution', {
1033
+ 'domain': domain,
1034
+ 'execution': {'runId': run_id,
1035
+ 'workflowId': workflow_id},
1036
+ })
1037
+
1038
+ def get_workflow_execution_history(self, domain, run_id, workflow_id,
1039
+ maximum_page_size=None,
1040
+ next_page_token=None,
1041
+ reverse_order=None):
1042
+ """
1043
+ Returns the history of the specified workflow execution. The
1044
+ results may be split into multiple pages. To retrieve
1045
+ subsequent pages, make the call again using the nextPageToken
1046
+ returned by the initial call.
1047
+
1048
+ :type domain: string
1049
+ :param domain: The name of the domain containing the
1050
+ workflow execution.
1051
+
1052
+ :type run_id: string
1053
+ :param run_id: A system generated unique identifier for the
1054
+ workflow execution.
1055
+
1056
+ :type workflow_id: string
1057
+ :param workflow_id: The user defined identifier associated
1058
+ with the workflow execution.
1059
+
1060
+ :type maximum_page_size: integer
1061
+ :param maximum_page_size: Specifies the maximum number of
1062
+ history events returned in one page. The next page in the
1063
+ result is identified by the NextPageToken returned. By default
1064
+ 100 history events are returned in a page but the caller can
1065
+ override this value to a page size smaller than the
1066
+ default. You cannot specify a page size larger than 100.
1067
+
1068
+ :type next_page_token: string
1069
+ :param next_page_token: If a NextPageToken is returned, the
1070
+ result has more than one pages. To get the next page, repeat
1071
+ the call and specify the nextPageToken with all other
1072
+ arguments unchanged.
1073
+
1074
+ :type reverse_order: boolean
1075
+ :param reverse_order: When set to true, returns the events in
1076
+ reverse order. By default the results are returned in
1077
+ ascending order of the eventTimeStamp of the events.
1078
+
1079
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
1080
+ """
1081
+ return self.json_request('GetWorkflowExecutionHistory', {
1082
+ 'domain': domain,
1083
+ 'execution': {'runId': run_id,
1084
+ 'workflowId': workflow_id},
1085
+ 'maximumPageSize': maximum_page_size,
1086
+ 'nextPageToken': next_page_token,
1087
+ 'reverseOrder': reverse_order,
1088
+ })
1089
+
1090
+ def count_open_workflow_executions(self, domain, latest_date, oldest_date,
1091
+ tag=None,
1092
+ workflow_id=None,
1093
+ workflow_name=None,
1094
+ workflow_version=None):
1095
+ """
1096
+ Returns the number of open workflow executions within the
1097
+ given domain that meet the specified filtering criteria.
1098
+
1099
+ .. note:
1100
+ workflow_id, workflow_name/workflow_version and tag are mutually
1101
+ exclusive. You can specify at most one of these in a request.
1102
+
1103
+ :type domain: string
1104
+ :param domain: The name of the domain containing the
1105
+ workflow executions to count.
1106
+
1107
+ :type latest_date: timestamp
1108
+ :param latest_date: Specifies the latest start or close date
1109
+ and time to return.
1110
+
1111
+ :type oldest_date: timestamp
1112
+ :param oldest_date: Specifies the oldest start or close date
1113
+ and time to return.
1114
+
1115
+ :type workflow_name: string
1116
+ :param workflow_name: Name of the workflow type to filter on.
1117
+
1118
+ :type workflow_version: string
1119
+ :param workflow_version: Version of the workflow type to filter on.
1120
+
1121
+ :type tag: string
1122
+ :param tag: If specified, only executions that have a tag
1123
+ that matches the filter are counted.
1124
+
1125
+ :type workflow_id: string
1126
+ :param workflow_id: If specified, only workflow executions
1127
+ matching the workflow_id are counted.
1128
+
1129
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
1130
+ """
1131
+ return self.json_request('CountOpenWorkflowExecutions', {
1132
+ 'domain': domain,
1133
+ 'startTimeFilter': {'oldestDate': oldest_date,
1134
+ 'latestDate': latest_date},
1135
+ 'typeFilter': {'name': workflow_name,
1136
+ 'version': workflow_version},
1137
+ 'executionFilter': {'workflowId': workflow_id},
1138
+ 'tagFilter': {'tag': tag},
1139
+ })
1140
+
1141
+ def list_open_workflow_executions(self, domain,
1142
+ oldest_date,
1143
+ latest_date=None,
1144
+ tag=None,
1145
+ workflow_id=None,
1146
+ workflow_name=None,
1147
+ workflow_version=None,
1148
+ maximum_page_size=None,
1149
+ next_page_token=None,
1150
+ reverse_order=None):
1151
+ """
1152
+ Returns the list of open workflow executions within the
1153
+ given domain that meet the specified filtering criteria.
1154
+
1155
+ .. note:
1156
+ workflow_id, workflow_name/workflow_version
1157
+ and tag are mutually exclusive. You can specify at most
1158
+ one of these in a request.
1159
+
1160
+ :type domain: string
1161
+ :param domain: The name of the domain containing the
1162
+ workflow executions to count.
1163
+
1164
+ :type latest_date: timestamp
1165
+ :param latest_date: Specifies the latest start or close date
1166
+ and time to return.
1167
+
1168
+ :type oldest_date: timestamp
1169
+ :param oldest_date: Specifies the oldest start or close date
1170
+ and time to return.
1171
+
1172
+ :type tag: string
1173
+ :param tag: If specified, only executions that have a tag
1174
+ that matches the filter are counted.
1175
+
1176
+ :type workflow_id: string
1177
+ :param workflow_id: If specified, only workflow executions
1178
+ matching the workflow_id are counted.
1179
+
1180
+ :type workflow_name: string
1181
+ :param workflow_name: Name of the workflow type to filter on.
1182
+
1183
+ :type workflow_version: string
1184
+ :param workflow_version: Version of the workflow type to filter on.
1185
+
1186
+ :type maximum_page_size: integer
1187
+ :param maximum_page_size: The maximum number of results
1188
+ returned in each page. The default is 100, but the caller can
1189
+ override this value to a page size smaller than the
1190
+ default. You cannot specify a page size greater than 100.
1191
+
1192
+ :type next_page_token: string
1193
+ :param next_page_token: If on a previous call to this method a
1194
+ NextPageToken was returned, the results are being
1195
+ paginated. To get the next page of results, repeat the call
1196
+ with the returned token and all other arguments unchanged.
1197
+
1198
+ :type reverse_order: boolean
1199
+ :param reverse_order: When set to true, returns the results in
1200
+ reverse order. By default the results are returned in
1201
+ descending order of the start or the close time of the
1202
+ executions.
1203
+
1204
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
1205
+
1206
+ """
1207
+ return self.json_request('ListOpenWorkflowExecutions', {
1208
+ 'domain': domain,
1209
+ 'startTimeFilter': {'oldestDate': oldest_date,
1210
+ 'latestDate': latest_date},
1211
+ 'tagFilter': {'tag': tag},
1212
+ 'typeFilter': {'name': workflow_name,
1213
+ 'version': workflow_version},
1214
+ 'executionFilter': {'workflowId': workflow_id},
1215
+ 'maximumPageSize': maximum_page_size,
1216
+ 'nextPageToken': next_page_token,
1217
+ 'reverseOrder': reverse_order,
1218
+ })
1219
+
1220
+ def count_closed_workflow_executions(self, domain,
1221
+ start_latest_date=None,
1222
+ start_oldest_date=None,
1223
+ close_latest_date=None,
1224
+ close_oldest_date=None,
1225
+ close_status=None,
1226
+ tag=None,
1227
+ workflow_id=None,
1228
+ workflow_name=None,
1229
+ workflow_version=None):
1230
+ """
1231
+ Returns the number of closed workflow executions within the
1232
+ given domain that meet the specified filtering criteria.
1233
+
1234
+ .. note:
1235
+ close_status, workflow_id, workflow_name/workflow_version
1236
+ and tag are mutually exclusive. You can specify at most
1237
+ one of these in a request.
1238
+
1239
+ .. note:
1240
+ start_latest_date/start_oldest_date and
1241
+ close_latest_date/close_oldest_date are mutually
1242
+ exclusive. You can specify at most one of these in a request.
1243
+
1244
+ :type domain: string
1245
+ :param domain: The name of the domain containing the
1246
+ workflow executions to count.
1247
+
1248
+ :type start_latest_date: timestamp
1249
+ :param start_latest_date: If specified, only workflow executions
1250
+ that meet the start time criteria of the filter are counted.
1251
+
1252
+ :type start_oldest_date: timestamp
1253
+ :param start_oldest_date: If specified, only workflow executions
1254
+ that meet the start time criteria of the filter are counted.
1255
+
1256
+ :type close_latest_date: timestamp
1257
+ :param close_latest_date: If specified, only workflow executions
1258
+ that meet the close time criteria of the filter are counted.
1259
+
1260
+ :type close_oldest_date: timestamp
1261
+ :param close_oldest_date: If specified, only workflow executions
1262
+ that meet the close time criteria of the filter are counted.
1263
+
1264
+ :type close_status: string
1265
+ :param close_status: The close status that must match the close status
1266
+ of an execution for it to meet the criteria of this filter.
1267
+ Valid values are:
1268
+
1269
+ * COMPLETED
1270
+ * FAILED
1271
+ * CANCELED
1272
+ * TERMINATED
1273
+ * CONTINUED_AS_NEW
1274
+ * TIMED_OUT
1275
+
1276
+ :type tag: string
1277
+ :param tag: If specified, only executions that have a tag
1278
+ that matches the filter are counted.
1279
+
1280
+ :type workflow_id: string
1281
+ :param workflow_id: If specified, only workflow executions
1282
+ matching the workflow_id are counted.
1283
+
1284
+ :type workflow_name: string
1285
+ :param workflow_name: Name of the workflow type to filter on.
1286
+
1287
+ :type workflow_version: string
1288
+ :param workflow_version: Version of the workflow type to filter on.
1289
+
1290
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
1291
+ """
1292
+ return self.json_request('CountClosedWorkflowExecutions', {
1293
+ 'domain': domain,
1294
+ 'startTimeFilter': {'oldestDate': start_oldest_date,
1295
+ 'latestDate': start_latest_date},
1296
+ 'closeTimeFilter': {'oldestDate': close_oldest_date,
1297
+ 'latestDate': close_latest_date},
1298
+ 'closeStatusFilter': {'status': close_status},
1299
+ 'tagFilter': {'tag': tag},
1300
+ 'typeFilter': {'name': workflow_name,
1301
+ 'version': workflow_version},
1302
+ 'executionFilter': {'workflowId': workflow_id}
1303
+ })
1304
+
1305
+ def list_closed_workflow_executions(self, domain,
1306
+ start_latest_date=None,
1307
+ start_oldest_date=None,
1308
+ close_latest_date=None,
1309
+ close_oldest_date=None,
1310
+ close_status=None,
1311
+ tag=None,
1312
+ workflow_id=None,
1313
+ workflow_name=None,
1314
+ workflow_version=None,
1315
+ maximum_page_size=None,
1316
+ next_page_token=None,
1317
+ reverse_order=None):
1318
+ """
1319
+ Returns the number of closed workflow executions within the
1320
+ given domain that meet the specified filtering criteria.
1321
+
1322
+ .. note:
1323
+ close_status, workflow_id, workflow_name/workflow_version
1324
+ and tag are mutually exclusive. You can specify at most
1325
+ one of these in a request.
1326
+
1327
+ .. note:
1328
+ start_latest_date/start_oldest_date and
1329
+ close_latest_date/close_oldest_date are mutually
1330
+ exclusive. You can specify at most one of these in a request.
1331
+
1332
+ :type domain: string
1333
+ :param domain: The name of the domain containing the
1334
+ workflow executions to count.
1335
+
1336
+ :type start_latest_date: timestamp
1337
+ :param start_latest_date: If specified, only workflow executions
1338
+ that meet the start time criteria of the filter are counted.
1339
+
1340
+ :type start_oldest_date: timestamp
1341
+ :param start_oldest_date: If specified, only workflow executions
1342
+ that meet the start time criteria of the filter are counted.
1343
+
1344
+ :type close_latest_date: timestamp
1345
+ :param close_latest_date: If specified, only workflow executions
1346
+ that meet the close time criteria of the filter are counted.
1347
+
1348
+ :type close_oldest_date: timestamp
1349
+ :param close_oldest_date: If specified, only workflow executions
1350
+ that meet the close time criteria of the filter are counted.
1351
+
1352
+ :type close_status: string
1353
+ :param close_status: The close status that must match the close status
1354
+ of an execution for it to meet the criteria of this filter.
1355
+ Valid values are:
1356
+
1357
+ * COMPLETED
1358
+ * FAILED
1359
+ * CANCELED
1360
+ * TERMINATED
1361
+ * CONTINUED_AS_NEW
1362
+ * TIMED_OUT
1363
+
1364
+ :type tag: string
1365
+ :param tag: If specified, only executions that have a tag
1366
+ that matches the filter are counted.
1367
+
1368
+ :type workflow_id: string
1369
+ :param workflow_id: If specified, only workflow executions
1370
+ matching the workflow_id are counted.
1371
+
1372
+ :type workflow_name: string
1373
+ :param workflow_name: Name of the workflow type to filter on.
1374
+
1375
+ :type workflow_version: string
1376
+ :param workflow_version: Version of the workflow type to filter on.
1377
+
1378
+ :type maximum_page_size: integer
1379
+ :param maximum_page_size: The maximum number of results
1380
+ returned in each page. The default is 100, but the caller can
1381
+ override this value to a page size smaller than the
1382
+ default. You cannot specify a page size greater than 100.
1383
+
1384
+ :type next_page_token: string
1385
+ :param next_page_token: If on a previous call to this method a
1386
+ NextPageToken was returned, the results are being
1387
+ paginated. To get the next page of results, repeat the call
1388
+ with the returned token and all other arguments unchanged.
1389
+
1390
+ :type reverse_order: boolean
1391
+ :param reverse_order: When set to true, returns the results in
1392
+ reverse order. By default the results are returned in
1393
+ descending order of the start or the close time of the
1394
+ executions.
1395
+
1396
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
1397
+ """
1398
+ return self.json_request('ListClosedWorkflowExecutions', {
1399
+ 'domain': domain,
1400
+ 'startTimeFilter': {'oldestDate': start_oldest_date,
1401
+ 'latestDate': start_latest_date},
1402
+ 'closeTimeFilter': {'oldestDate': close_oldest_date,
1403
+ 'latestDate': close_latest_date},
1404
+ 'executionFilter': {'workflowId': workflow_id},
1405
+ 'closeStatusFilter': {'status': close_status},
1406
+ 'tagFilter': {'tag': tag},
1407
+ 'typeFilter': {'name': workflow_name,
1408
+ 'version': workflow_version},
1409
+ 'maximumPageSize': maximum_page_size,
1410
+ 'nextPageToken': next_page_token,
1411
+ 'reverseOrder': reverse_order,
1412
+ })
1413
+
1414
+ ## Domain Visibility
1415
+
1416
+ def list_domains(self, registration_status,
1417
+ maximum_page_size=None,
1418
+ next_page_token=None, reverse_order=None):
1419
+ """
1420
+ Returns the list of domains registered in the account. The
1421
+ results may be split into multiple pages. To retrieve
1422
+ subsequent pages, make the call again using the nextPageToken
1423
+ returned by the initial call.
1424
+
1425
+ :type registration_status: string
1426
+ :param registration_status: Specifies the registration status
1427
+ of the domains to list. Valid Values:
1428
+
1429
+ * REGISTERED
1430
+ * DEPRECATED
1431
+
1432
+ :type maximum_page_size: integer
1433
+ :param maximum_page_size: The maximum number of results
1434
+ returned in each page. The default is 100, but the caller can
1435
+ override this value to a page size smaller than the
1436
+ default. You cannot specify a page size greater than 100.
1437
+
1438
+ :type next_page_token: string
1439
+ :param next_page_token: If on a previous call to this method a
1440
+ NextPageToken was returned, the result has more than one
1441
+ page. To get the next page of results, repeat the call with
1442
+ the returned token and all other arguments unchanged.
1443
+
1444
+ :type reverse_order: boolean
1445
+ :param reverse_order: When set to true, returns the results in
1446
+ reverse order. By default the results are returned in
1447
+ ascending alphabetical order of the name of the domains.
1448
+
1449
+ :raises: SWFOperationNotPermittedError
1450
+ """
1451
+ return self.json_request('ListDomains', {
1452
+ 'registrationStatus': registration_status,
1453
+ 'maximumPageSize': maximum_page_size,
1454
+ 'nextPageToken': next_page_token,
1455
+ 'reverseOrder': reverse_order,
1456
+ })
1457
+
1458
+ def describe_domain(self, name):
1459
+ """
1460
+ Returns information about the specified domain including
1461
+ description and status.
1462
+
1463
+ :type name: string
1464
+ :param name: The name of the domain to describe.
1465
+
1466
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
1467
+ """
1468
+ return self.json_request('DescribeDomain', {'name': name})
1469
+
1470
+ ## Task List Visibility
1471
+
1472
+ def count_pending_decision_tasks(self, domain, task_list):
1473
+ """
1474
+ Returns the estimated number of decision tasks in the
1475
+ specified task list. The count returned is an approximation
1476
+ and is not guaranteed to be exact. If you specify a task list
1477
+ that no decision task was ever scheduled in then 0 will be
1478
+ returned.
1479
+
1480
+ :type domain: string
1481
+ :param domain: The name of the domain that contains the task list.
1482
+
1483
+ :type task_list: string
1484
+ :param task_list: The name of the task list.
1485
+
1486
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
1487
+ """
1488
+ return self.json_request('CountPendingDecisionTasks', {
1489
+ 'domain': domain,
1490
+ 'taskList': {'name': task_list}
1491
+ })
1492
+
1493
+ def count_pending_activity_tasks(self, domain, task_list):
1494
+ """
1495
+ Returns the estimated number of activity tasks in the
1496
+ specified task list. The count returned is an approximation
1497
+ and is not guaranteed to be exact. If you specify a task list
1498
+ that no activity task was ever scheduled in then 0 will be
1499
+ returned.
1500
+
1501
+ :type domain: string
1502
+ :param domain: The name of the domain that contains the task list.
1503
+
1504
+ :type task_list: string
1505
+ :param task_list: The name of the task list.
1506
+
1507
+ :raises: UnknownResourceFault, SWFOperationNotPermittedError
1508
+ """
1509
+ return self.json_request('CountPendingActivityTasks', {
1510
+ 'domain': domain,
1511
+ 'taskList': {'name': task_list}
1512
+ })