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,394 @@
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 boto
26
+ from boto.compat import json
27
+ from .optionstatus import OptionStatus
28
+ from .optionstatus import IndexFieldStatus
29
+ from .optionstatus import ServicePoliciesStatus
30
+ from .optionstatus import RankExpressionStatus
31
+ from .document import DocumentServiceConnection
32
+ from .search import SearchConnection
33
+
34
+ def handle_bool(value):
35
+ if value in [True, 'true', 'True', 'TRUE', 1]:
36
+ return True
37
+ return False
38
+
39
+
40
+ class Domain(object):
41
+ """
42
+ A Cloudsearch domain.
43
+
44
+ :ivar name: The name of the domain.
45
+
46
+ :ivar id: The internally generated unique identifier for the domain.
47
+
48
+ :ivar created: A boolean which is True if the domain is
49
+ created. It can take several minutes to initialize a domain
50
+ when CreateDomain is called. Newly created search domains are
51
+ returned with a False value for Created until domain creation
52
+ is complete
53
+
54
+ :ivar deleted: A boolean which is True if the search domain has
55
+ been deleted. The system must clean up resources dedicated to
56
+ the search domain when delete is called. Newly deleted
57
+ search domains are returned from list_domains with a True
58
+ value for deleted for several minutes until resource cleanup
59
+ is complete.
60
+
61
+ :ivar processing: True if processing is being done to activate the
62
+ current domain configuration.
63
+
64
+ :ivar num_searchable_docs: The number of documents that have been
65
+ submittted to the domain and indexed.
66
+
67
+ :ivar requires_index_document: True if index_documents needs to be
68
+ called to activate the current domain configuration.
69
+
70
+ :ivar search_instance_count: The number of search instances that are
71
+ available to process search requests.
72
+
73
+ :ivar search_instance_type: The instance type that is being used to
74
+ process search requests.
75
+
76
+ :ivar search_partition_count: The number of partitions across which
77
+ the search index is spread.
78
+ """
79
+
80
+ def __init__(self, layer1, data):
81
+ self.layer1 = layer1
82
+ self.update_from_data(data)
83
+
84
+ def update_from_data(self, data):
85
+ self.created = data['created']
86
+ self.deleted = data['deleted']
87
+ self.processing = data['processing']
88
+ self.requires_index_documents = data['requires_index_documents']
89
+ self.domain_id = data['domain_id']
90
+ self.domain_name = data['domain_name']
91
+ self.num_searchable_docs = data['num_searchable_docs']
92
+ self.search_instance_count = data['search_instance_count']
93
+ self.search_instance_type = data.get('search_instance_type', None)
94
+ self.search_partition_count = data['search_partition_count']
95
+ self._doc_service = data['doc_service']
96
+ self._search_service = data['search_service']
97
+
98
+ @property
99
+ def doc_service_arn(self):
100
+ return self._doc_service['arn']
101
+
102
+ @property
103
+ def doc_service_endpoint(self):
104
+ return self._doc_service['endpoint']
105
+
106
+ @property
107
+ def search_service_arn(self):
108
+ return self._search_service['arn']
109
+
110
+ @property
111
+ def search_service_endpoint(self):
112
+ return self._search_service['endpoint']
113
+
114
+ @property
115
+ def created(self):
116
+ return self._created
117
+
118
+ @created.setter
119
+ def created(self, value):
120
+ self._created = handle_bool(value)
121
+
122
+ @property
123
+ def deleted(self):
124
+ return self._deleted
125
+
126
+ @deleted.setter
127
+ def deleted(self, value):
128
+ self._deleted = handle_bool(value)
129
+
130
+ @property
131
+ def processing(self):
132
+ return self._processing
133
+
134
+ @processing.setter
135
+ def processing(self, value):
136
+ self._processing = handle_bool(value)
137
+
138
+ @property
139
+ def requires_index_documents(self):
140
+ return self._requires_index_documents
141
+
142
+ @requires_index_documents.setter
143
+ def requires_index_documents(self, value):
144
+ self._requires_index_documents = handle_bool(value)
145
+
146
+ @property
147
+ def search_partition_count(self):
148
+ return self._search_partition_count
149
+
150
+ @search_partition_count.setter
151
+ def search_partition_count(self, value):
152
+ self._search_partition_count = int(value)
153
+
154
+ @property
155
+ def search_instance_count(self):
156
+ return self._search_instance_count
157
+
158
+ @search_instance_count.setter
159
+ def search_instance_count(self, value):
160
+ self._search_instance_count = int(value)
161
+
162
+ @property
163
+ def num_searchable_docs(self):
164
+ return self._num_searchable_docs
165
+
166
+ @num_searchable_docs.setter
167
+ def num_searchable_docs(self, value):
168
+ self._num_searchable_docs = int(value)
169
+
170
+ @property
171
+ def name(self):
172
+ return self.domain_name
173
+
174
+ @property
175
+ def id(self):
176
+ return self.domain_id
177
+
178
+ def delete(self):
179
+ """
180
+ Delete this domain and all index data associated with it.
181
+ """
182
+ return self.layer1.delete_domain(self.name)
183
+
184
+ def get_stemming(self):
185
+ """
186
+ Return a :class:`boto.cloudsearch.option.OptionStatus` object
187
+ representing the currently defined stemming options for
188
+ the domain.
189
+ """
190
+ return OptionStatus(self, None,
191
+ self.layer1.describe_stemming_options,
192
+ self.layer1.update_stemming_options)
193
+
194
+ def get_stopwords(self):
195
+ """
196
+ Return a :class:`boto.cloudsearch.option.OptionStatus` object
197
+ representing the currently defined stopword options for
198
+ the domain.
199
+ """
200
+ return OptionStatus(self, None,
201
+ self.layer1.describe_stopword_options,
202
+ self.layer1.update_stopword_options)
203
+
204
+ def get_synonyms(self):
205
+ """
206
+ Return a :class:`boto.cloudsearch.option.OptionStatus` object
207
+ representing the currently defined synonym options for
208
+ the domain.
209
+ """
210
+ return OptionStatus(self, None,
211
+ self.layer1.describe_synonym_options,
212
+ self.layer1.update_synonym_options)
213
+
214
+ def get_access_policies(self):
215
+ """
216
+ Return a :class:`boto.cloudsearch.option.OptionStatus` object
217
+ representing the currently defined access policies for
218
+ the domain.
219
+ """
220
+ return ServicePoliciesStatus(self, None,
221
+ self.layer1.describe_service_access_policies,
222
+ self.layer1.update_service_access_policies)
223
+
224
+ def index_documents(self):
225
+ """
226
+ Tells the search domain to start indexing its documents using
227
+ the latest text processing options and IndexFields. This
228
+ operation must be invoked to make options whose OptionStatus
229
+ has OptioState of RequiresIndexDocuments visible in search
230
+ results.
231
+ """
232
+ self.layer1.index_documents(self.name)
233
+
234
+ def get_index_fields(self, field_names=None):
235
+ """
236
+ Return a list of index fields defined for this domain.
237
+ """
238
+ data = self.layer1.describe_index_fields(self.name, field_names)
239
+ return [IndexFieldStatus(self, d) for d in data]
240
+
241
+ def create_index_field(self, field_name, field_type,
242
+ default='', facet=False, result=False, searchable=False,
243
+ source_attributes=[]):
244
+ """
245
+ Defines an ``IndexField``, either replacing an existing
246
+ definition or creating a new one.
247
+
248
+ :type field_name: string
249
+ :param field_name: The name of a field in the search index.
250
+
251
+ :type field_type: string
252
+ :param field_type: The type of field. Valid values are
253
+ uint | literal | text
254
+
255
+ :type default: string or int
256
+ :param default: The default value for the field. If the
257
+ field is of type ``uint`` this should be an integer value.
258
+ Otherwise, it's a string.
259
+
260
+ :type facet: bool
261
+ :param facet: A boolean to indicate whether facets
262
+ are enabled for this field or not. Does not apply to
263
+ fields of type ``uint``.
264
+
265
+ :type results: bool
266
+ :param results: A boolean to indicate whether values
267
+ of this field can be returned in search results or
268
+ used in ranking. Does not apply to fields of type ``uint``.
269
+
270
+ :type searchable: bool
271
+ :param searchable: A boolean to indicate whether search
272
+ is enabled for this field or not. Applies only to fields
273
+ of type ``literal``.
274
+
275
+ :type source_attributes: list of dicts
276
+ :param source_attributes: An optional list of dicts that
277
+ provide information about attributes for this index field.
278
+ A maximum of 20 source attributes can be configured for
279
+ each index field.
280
+
281
+ Each item in the list is a dict with the following keys:
282
+
283
+ * data_copy - The value is a dict with the following keys:
284
+ * default - Optional default value if the source attribute
285
+ is not specified in a document.
286
+ * name - The name of the document source field to add
287
+ to this ``IndexField``.
288
+ * data_function - Identifies the transformation to apply
289
+ when copying data from a source attribute.
290
+ * data_map - The value is a dict with the following keys:
291
+ * cases - A dict that translates source field values
292
+ to custom values.
293
+ * default - An optional default value to use if the
294
+ source attribute is not specified in a document.
295
+ * name - the name of the document source field to add
296
+ to this ``IndexField``
297
+ * data_trim_title - Trims common title words from a source
298
+ document attribute when populating an ``IndexField``.
299
+ This can be used to create an ``IndexField`` you can
300
+ use for sorting. The value is a dict with the following
301
+ fields:
302
+ * default - An optional default value.
303
+ * language - an IETF RFC 4646 language code.
304
+ * separator - The separator that follows the text to trim.
305
+ * name - The name of the document source field to add.
306
+
307
+ :raises: BaseException, InternalException, LimitExceededException,
308
+ InvalidTypeException, ResourceNotFoundException
309
+ """
310
+ data = self.layer1.define_index_field(self.name, field_name,
311
+ field_type, default=default,
312
+ facet=facet, result=result,
313
+ searchable=searchable,
314
+ source_attributes=source_attributes)
315
+ return IndexFieldStatus(self, data,
316
+ self.layer1.describe_index_fields)
317
+
318
+ def get_rank_expressions(self, rank_names=None):
319
+ """
320
+ Return a list of rank expressions defined for this domain.
321
+ """
322
+ fn = self.layer1.describe_rank_expressions
323
+ data = fn(self.name, rank_names)
324
+ return [RankExpressionStatus(self, d, fn) for d in data]
325
+
326
+ def create_rank_expression(self, name, expression):
327
+ """
328
+ Create a new rank expression.
329
+
330
+ :type rank_name: string
331
+ :param rank_name: The name of an expression computed for ranking
332
+ while processing a search request.
333
+
334
+ :type rank_expression: string
335
+ :param rank_expression: The expression to evaluate for ranking
336
+ or thresholding while processing a search request. The
337
+ RankExpression syntax is based on JavaScript expressions
338
+ and supports:
339
+
340
+ * Integer, floating point, hex and octal literals
341
+ * Shortcut evaluation of logical operators such that an
342
+ expression a || b evaluates to the value a if a is
343
+ true without evaluting b at all
344
+ * JavaScript order of precedence for operators
345
+ * Arithmetic operators: + - * / %
346
+ * Boolean operators (including the ternary operator)
347
+ * Bitwise operators
348
+ * Comparison operators
349
+ * Common mathematic functions: abs ceil erf exp floor
350
+ lgamma ln log2 log10 max min sqrt pow
351
+ * Trigonometric library functions: acosh acos asinh asin
352
+ atanh atan cosh cos sinh sin tanh tan
353
+ * Random generation of a number between 0 and 1: rand
354
+ * Current time in epoch: time
355
+ * The min max functions that operate on a variable argument list
356
+
357
+ Intermediate results are calculated as double precision
358
+ floating point values. The final return value of a
359
+ RankExpression is automatically converted from floating
360
+ point to a 32-bit unsigned integer by rounding to the
361
+ nearest integer, with a natural floor of 0 and a ceiling
362
+ of max(uint32_t), 4294967295. Mathematical errors such as
363
+ dividing by 0 will fail during evaluation and return a
364
+ value of 0.
365
+
366
+ The source data for a RankExpression can be the name of an
367
+ IndexField of type uint, another RankExpression or the
368
+ reserved name text_relevance. The text_relevance source is
369
+ defined to return an integer from 0 to 1000 (inclusive) to
370
+ indicate how relevant a document is to the search request,
371
+ taking into account repetition of search terms in the
372
+ document and proximity of search terms to each other in
373
+ each matching IndexField in the document.
374
+
375
+ For more information about using rank expressions to
376
+ customize ranking, see the Amazon CloudSearch Developer
377
+ Guide.
378
+
379
+ :raises: BaseException, InternalException, LimitExceededException,
380
+ InvalidTypeException, ResourceNotFoundException
381
+ """
382
+ data = self.layer1.define_rank_expression(self.name, name, expression)
383
+ return RankExpressionStatus(self, data,
384
+ self.layer1.describe_rank_expressions)
385
+
386
+ def get_document_service(self):
387
+ return DocumentServiceConnection(domain=self)
388
+
389
+ def get_search_service(self):
390
+ return SearchConnection(domain=self)
391
+
392
+ def __repr__(self):
393
+ return '<Domain: %s>' % self.domain_name
394
+
@@ -0,0 +1,738 @@
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
+ import boto
25
+ import boto.jsonresponse
26
+ from boto.connection import AWSQueryConnection
27
+ from boto.regioninfo import RegionInfo
28
+
29
+ #boto.set_stream_logger('cloudsearch')
30
+
31
+
32
+ def do_bool(val):
33
+ return 'true' if val in [True, 1, '1', 'true'] else 'false'
34
+
35
+
36
+ class Layer1(AWSQueryConnection):
37
+
38
+ APIVersion = '2011-02-01'
39
+ DefaultRegionName = boto.config.get('Boto', 'cs_region_name', 'us-east-1')
40
+ DefaultRegionEndpoint = boto.config.get('Boto', 'cs_region_endpoint',
41
+ 'cloudsearch.us-east-1.amazonaws.com')
42
+
43
+ def __init__(self, aws_access_key_id=None, aws_secret_access_key=None,
44
+ is_secure=True, host=None, port=None,
45
+ proxy=None, proxy_port=None,
46
+ proxy_user=None, proxy_pass=None, debug=0,
47
+ https_connection_factory=None, region=None, path='/',
48
+ api_version=None, security_token=None,
49
+ validate_certs=True):
50
+ if not region:
51
+ region = RegionInfo(self, self.DefaultRegionName,
52
+ self.DefaultRegionEndpoint)
53
+ self.region = region
54
+ AWSQueryConnection.__init__(self, aws_access_key_id,
55
+ aws_secret_access_key,
56
+ is_secure, port, proxy, proxy_port,
57
+ proxy_user, proxy_pass,
58
+ self.region.endpoint, debug,
59
+ https_connection_factory, path,
60
+ security_token,
61
+ validate_certs=validate_certs)
62
+
63
+ def _required_auth_capability(self):
64
+ return ['sign-v2']
65
+
66
+ def get_response(self, doc_path, action, params, path='/',
67
+ parent=None, verb='GET', list_marker=None):
68
+ if not parent:
69
+ parent = self
70
+ response = self.make_request(action, params, path, verb)
71
+ body = response.read()
72
+ boto.log.debug(body)
73
+ if response.status == 200:
74
+ e = boto.jsonresponse.Element(
75
+ list_marker=list_marker if list_marker else 'Set',
76
+ pythonize_name=True)
77
+ h = boto.jsonresponse.XmlHandler(e, parent)
78
+ h.parse(body)
79
+ inner = e
80
+ for p in doc_path:
81
+ inner = inner.get(p)
82
+ if not inner:
83
+ return None if list_marker == None else []
84
+ if isinstance(inner, list):
85
+ return inner
86
+ else:
87
+ return dict(**inner)
88
+ else:
89
+ raise self.ResponseError(response.status, response.reason, body)
90
+
91
+ def create_domain(self, domain_name):
92
+ """
93
+ Create a new search domain.
94
+
95
+ :type domain_name: string
96
+ :param domain_name: A string that represents the name of a
97
+ domain. Domain names must be unique across the domains
98
+ owned by an account within an AWS region. Domain names
99
+ must start with a letter or number and can contain the
100
+ following characters: a-z (lowercase), 0-9, and -
101
+ (hyphen). Uppercase letters and underscores are not
102
+ allowed.
103
+
104
+ :raises: BaseException, InternalException, LimitExceededException
105
+ """
106
+ doc_path = ('create_domain_response',
107
+ 'create_domain_result',
108
+ 'domain_status')
109
+ params = {'DomainName': domain_name}
110
+ return self.get_response(doc_path, 'CreateDomain',
111
+ params, verb='POST')
112
+
113
+ def define_index_field(self, domain_name, field_name, field_type,
114
+ default='', facet=False, result=False,
115
+ searchable=False, source_attributes=None):
116
+ """
117
+ Defines an ``IndexField``, either replacing an existing
118
+ definition or creating a new one.
119
+
120
+ :type domain_name: string
121
+ :param domain_name: A string that represents the name of a
122
+ domain. Domain names must be unique across the domains
123
+ owned by an account within an AWS region. Domain names
124
+ must start with a letter or number and can contain the
125
+ following characters: a-z (lowercase), 0-9, and -
126
+ (hyphen). Uppercase letters and underscores are not
127
+ allowed.
128
+
129
+ :type field_name: string
130
+ :param field_name: The name of a field in the search index.
131
+
132
+ :type field_type: string
133
+ :param field_type: The type of field. Valid values are
134
+ uint | literal | text
135
+
136
+ :type default: string or int
137
+ :param default: The default value for the field. If the
138
+ field is of type ``uint`` this should be an integer value.
139
+ Otherwise, it's a string.
140
+
141
+ :type facet: bool
142
+ :param facet: A boolean to indicate whether facets
143
+ are enabled for this field or not. Does not apply to
144
+ fields of type ``uint``.
145
+
146
+ :type results: bool
147
+ :param results: A boolean to indicate whether values
148
+ of this field can be returned in search results or
149
+ used in ranking. Does not apply to fields of type ``uint``.
150
+
151
+ :type searchable: bool
152
+ :param searchable: A boolean to indicate whether search
153
+ is enabled for this field or not. Applies only to fields
154
+ of type ``literal``.
155
+
156
+ :type source_attributes: list of dicts
157
+ :param source_attributes: An optional list of dicts that
158
+ provide information about attributes for this index field.
159
+ A maximum of 20 source attributes can be configured for
160
+ each index field.
161
+
162
+ Each item in the list is a dict with the following keys:
163
+
164
+ * data_copy - The value is a dict with the following keys:
165
+ * default - Optional default value if the source attribute
166
+ is not specified in a document.
167
+ * name - The name of the document source field to add
168
+ to this ``IndexField``.
169
+ * data_function - Identifies the transformation to apply
170
+ when copying data from a source attribute.
171
+ * data_map - The value is a dict with the following keys:
172
+ * cases - A dict that translates source field values
173
+ to custom values.
174
+ * default - An optional default value to use if the
175
+ source attribute is not specified in a document.
176
+ * name - the name of the document source field to add
177
+ to this ``IndexField``
178
+ * data_trim_title - Trims common title words from a source
179
+ document attribute when populating an ``IndexField``.
180
+ This can be used to create an ``IndexField`` you can
181
+ use for sorting. The value is a dict with the following
182
+ fields:
183
+ * default - An optional default value.
184
+ * language - an IETF RFC 4646 language code.
185
+ * separator - The separator that follows the text to trim.
186
+ * name - The name of the document source field to add.
187
+
188
+ :raises: BaseException, InternalException, LimitExceededException,
189
+ InvalidTypeException, ResourceNotFoundException
190
+ """
191
+ doc_path = ('define_index_field_response',
192
+ 'define_index_field_result',
193
+ 'index_field')
194
+ params = {'DomainName': domain_name,
195
+ 'IndexField.IndexFieldName': field_name,
196
+ 'IndexField.IndexFieldType': field_type}
197
+ if field_type == 'literal':
198
+ params['IndexField.LiteralOptions.DefaultValue'] = default
199
+ params['IndexField.LiteralOptions.FacetEnabled'] = do_bool(facet)
200
+ params['IndexField.LiteralOptions.ResultEnabled'] = do_bool(result)
201
+ params['IndexField.LiteralOptions.SearchEnabled'] = do_bool(searchable)
202
+ elif field_type == 'uint':
203
+ params['IndexField.UIntOptions.DefaultValue'] = default
204
+ elif field_type == 'text':
205
+ params['IndexField.TextOptions.DefaultValue'] = default
206
+ params['IndexField.TextOptions.FacetEnabled'] = do_bool(facet)
207
+ params['IndexField.TextOptions.ResultEnabled'] = do_bool(result)
208
+
209
+ return self.get_response(doc_path, 'DefineIndexField',
210
+ params, verb='POST')
211
+
212
+ def define_rank_expression(self, domain_name, rank_name, rank_expression):
213
+ """
214
+ Defines a RankExpression, either replacing an existing
215
+ definition or creating a new one.
216
+
217
+ :type domain_name: string
218
+ :param domain_name: A string that represents the name of a
219
+ domain. Domain names must be unique across the domains
220
+ owned by an account within an AWS region. Domain names
221
+ must start with a letter or number and can contain the
222
+ following characters: a-z (lowercase), 0-9, and -
223
+ (hyphen). Uppercase letters and underscores are not
224
+ allowed.
225
+
226
+ :type rank_name: string
227
+ :param rank_name: The name of an expression computed for ranking
228
+ while processing a search request.
229
+
230
+ :type rank_expression: string
231
+ :param rank_expression: The expression to evaluate for ranking
232
+ or thresholding while processing a search request. The
233
+ RankExpression syntax is based on JavaScript expressions
234
+ and supports:
235
+
236
+ * Integer, floating point, hex and octal literals
237
+ * Shortcut evaluation of logical operators such that an
238
+ expression a || b evaluates to the value a if a is
239
+ true without evaluting b at all
240
+ * JavaScript order of precedence for operators
241
+ * Arithmetic operators: + - * / %
242
+ * Boolean operators (including the ternary operator)
243
+ * Bitwise operators
244
+ * Comparison operators
245
+ * Common mathematic functions: abs ceil erf exp floor
246
+ lgamma ln log2 log10 max min sqrt pow
247
+ * Trigonometric library functions: acosh acos asinh asin
248
+ atanh atan cosh cos sinh sin tanh tan
249
+ * Random generation of a number between 0 and 1: rand
250
+ * Current time in epoch: time
251
+ * The min max functions that operate on a variable argument list
252
+
253
+ Intermediate results are calculated as double precision
254
+ floating point values. The final return value of a
255
+ RankExpression is automatically converted from floating
256
+ point to a 32-bit unsigned integer by rounding to the
257
+ nearest integer, with a natural floor of 0 and a ceiling
258
+ of max(uint32_t), 4294967295. Mathematical errors such as
259
+ dividing by 0 will fail during evaluation and return a
260
+ value of 0.
261
+
262
+ The source data for a RankExpression can be the name of an
263
+ IndexField of type uint, another RankExpression or the
264
+ reserved name text_relevance. The text_relevance source is
265
+ defined to return an integer from 0 to 1000 (inclusive) to
266
+ indicate how relevant a document is to the search request,
267
+ taking into account repetition of search terms in the
268
+ document and proximity of search terms to each other in
269
+ each matching IndexField in the document.
270
+
271
+ For more information about using rank expressions to
272
+ customize ranking, see the Amazon CloudSearch Developer
273
+ Guide.
274
+
275
+ :raises: BaseException, InternalException, LimitExceededException,
276
+ InvalidTypeException, ResourceNotFoundException
277
+ """
278
+ doc_path = ('define_rank_expression_response',
279
+ 'define_rank_expression_result',
280
+ 'rank_expression')
281
+ params = {'DomainName': domain_name,
282
+ 'RankExpression.RankExpression': rank_expression,
283
+ 'RankExpression.RankName': rank_name}
284
+ return self.get_response(doc_path, 'DefineRankExpression',
285
+ params, verb='POST')
286
+
287
+ def delete_domain(self, domain_name):
288
+ """
289
+ Delete a search domain.
290
+
291
+ :type domain_name: string
292
+ :param domain_name: A string that represents the name of a
293
+ domain. Domain names must be unique across the domains
294
+ owned by an account within an AWS region. Domain names
295
+ must start with a letter or number and can contain the
296
+ following characters: a-z (lowercase), 0-9, and -
297
+ (hyphen). Uppercase letters and underscores are not
298
+ allowed.
299
+
300
+ :raises: BaseException, InternalException
301
+ """
302
+ doc_path = ('delete_domain_response',
303
+ 'delete_domain_result',
304
+ 'domain_status')
305
+ params = {'DomainName': domain_name}
306
+ return self.get_response(doc_path, 'DeleteDomain',
307
+ params, verb='POST')
308
+
309
+ def delete_index_field(self, domain_name, field_name):
310
+ """
311
+ Deletes an existing ``IndexField`` from the search domain.
312
+
313
+ :type domain_name: string
314
+ :param domain_name: A string that represents the name of a
315
+ domain. Domain names must be unique across the domains
316
+ owned by an account within an AWS region. Domain names
317
+ must start with a letter or number and can contain the
318
+ following characters: a-z (lowercase), 0-9, and -
319
+ (hyphen). Uppercase letters and underscores are not
320
+ allowed.
321
+
322
+ :type field_name: string
323
+ :param field_name: A string that represents the name of
324
+ an index field. Field names must begin with a letter and
325
+ can contain the following characters: a-z (lowercase),
326
+ 0-9, and _ (underscore). Uppercase letters and hyphens are
327
+ not allowed. The names "body", "docid", and
328
+ "text_relevance" are reserved and cannot be specified as
329
+ field or rank expression names.
330
+
331
+ :raises: BaseException, InternalException, ResourceNotFoundException
332
+ """
333
+ doc_path = ('delete_index_field_response',
334
+ 'delete_index_field_result',
335
+ 'index_field')
336
+ params = {'DomainName': domain_name,
337
+ 'IndexFieldName': field_name}
338
+ return self.get_response(doc_path, 'DeleteIndexField',
339
+ params, verb='POST')
340
+
341
+ def delete_rank_expression(self, domain_name, rank_name):
342
+ """
343
+ Deletes an existing ``RankExpression`` from the search domain.
344
+
345
+ :type domain_name: string
346
+ :param domain_name: A string that represents the name of a
347
+ domain. Domain names must be unique across the domains
348
+ owned by an account within an AWS region. Domain names
349
+ must start with a letter or number and can contain the
350
+ following characters: a-z (lowercase), 0-9, and -
351
+ (hyphen). Uppercase letters and underscores are not
352
+ allowed.
353
+
354
+ :type rank_name: string
355
+ :param rank_name: Name of the ``RankExpression`` to delete.
356
+
357
+ :raises: BaseException, InternalException, ResourceNotFoundException
358
+ """
359
+ doc_path = ('delete_rank_expression_response',
360
+ 'delete_rank_expression_result',
361
+ 'rank_expression')
362
+ params = {'DomainName': domain_name, 'RankName': rank_name}
363
+ return self.get_response(doc_path, 'DeleteRankExpression',
364
+ params, verb='POST')
365
+
366
+ def describe_default_search_field(self, domain_name):
367
+ """
368
+ Describes options defining the default search field used by
369
+ indexing for the search domain.
370
+
371
+ :type domain_name: string
372
+ :param domain_name: A string that represents the name of a
373
+ domain. Domain names must be unique across the domains
374
+ owned by an account within an AWS region. Domain names
375
+ must start with a letter or number and can contain the
376
+ following characters: a-z (lowercase), 0-9, and -
377
+ (hyphen). Uppercase letters and underscores are not
378
+ allowed.
379
+
380
+ :raises: BaseException, InternalException, ResourceNotFoundException
381
+ """
382
+ doc_path = ('describe_default_search_field_response',
383
+ 'describe_default_search_field_result',
384
+ 'default_search_field')
385
+ params = {'DomainName': domain_name}
386
+ return self.get_response(doc_path, 'DescribeDefaultSearchField',
387
+ params, verb='POST')
388
+
389
+ def describe_domains(self, domain_names=None):
390
+ """
391
+ Describes the domains (optionally limited to one or more
392
+ domains by name) owned by this account.
393
+
394
+ :type domain_names: list
395
+ :param domain_names: Limits the response to the specified domains.
396
+
397
+ :raises: BaseException, InternalException
398
+ """
399
+ doc_path = ('describe_domains_response',
400
+ 'describe_domains_result',
401
+ 'domain_status_list')
402
+ params = {}
403
+ if domain_names:
404
+ for i, domain_name in enumerate(domain_names, 1):
405
+ params['DomainNames.member.%d' % i] = domain_name
406
+ return self.get_response(doc_path, 'DescribeDomains',
407
+ params, verb='POST',
408
+ list_marker='DomainStatusList')
409
+
410
+ def describe_index_fields(self, domain_name, field_names=None):
411
+ """
412
+ Describes index fields in the search domain, optionally
413
+ limited to a single ``IndexField``.
414
+
415
+ :type domain_name: string
416
+ :param domain_name: A string that represents the name of a
417
+ domain. Domain names must be unique across the domains
418
+ owned by an account within an AWS region. Domain names
419
+ must start with a letter or number and can contain the
420
+ following characters: a-z (lowercase), 0-9, and -
421
+ (hyphen). Uppercase letters and underscores are not
422
+ allowed.
423
+
424
+ :type field_names: list
425
+ :param field_names: Limits the response to the specified fields.
426
+
427
+ :raises: BaseException, InternalException, ResourceNotFoundException
428
+ """
429
+ doc_path = ('describe_index_fields_response',
430
+ 'describe_index_fields_result',
431
+ 'index_fields')
432
+ params = {'DomainName': domain_name}
433
+ if field_names:
434
+ for i, field_name in enumerate(field_names, 1):
435
+ params['FieldNames.member.%d' % i] = field_name
436
+ return self.get_response(doc_path, 'DescribeIndexFields',
437
+ params, verb='POST',
438
+ list_marker='IndexFields')
439
+
440
+ def describe_rank_expressions(self, domain_name, rank_names=None):
441
+ """
442
+ Describes RankExpressions in the search domain, optionally
443
+ limited to a single expression.
444
+
445
+ :type domain_name: string
446
+ :param domain_name: A string that represents the name of a
447
+ domain. Domain names must be unique across the domains
448
+ owned by an account within an AWS region. Domain names
449
+ must start with a letter or number and can contain the
450
+ following characters: a-z (lowercase), 0-9, and -
451
+ (hyphen). Uppercase letters and underscores are not
452
+ allowed.
453
+
454
+ :type rank_names: list
455
+ :param rank_names: Limit response to the specified rank names.
456
+
457
+ :raises: BaseException, InternalException, ResourceNotFoundException
458
+ """
459
+ doc_path = ('describe_rank_expressions_response',
460
+ 'describe_rank_expressions_result',
461
+ 'rank_expressions')
462
+ params = {'DomainName': domain_name}
463
+ if rank_names:
464
+ for i, rank_name in enumerate(rank_names, 1):
465
+ params['RankNames.member.%d' % i] = rank_name
466
+ return self.get_response(doc_path, 'DescribeRankExpressions',
467
+ params, verb='POST',
468
+ list_marker='RankExpressions')
469
+
470
+ def describe_service_access_policies(self, domain_name):
471
+ """
472
+ Describes the resource-based policies controlling access to
473
+ the services in this search domain.
474
+
475
+ :type domain_name: string
476
+ :param domain_name: A string that represents the name of a
477
+ domain. Domain names must be unique across the domains
478
+ owned by an account within an AWS region. Domain names
479
+ must start with a letter or number and can contain the
480
+ following characters: a-z (lowercase), 0-9, and -
481
+ (hyphen). Uppercase letters and underscores are not
482
+ allowed.
483
+
484
+ :raises: BaseException, InternalException, ResourceNotFoundException
485
+ """
486
+ doc_path = ('describe_service_access_policies_response',
487
+ 'describe_service_access_policies_result',
488
+ 'access_policies')
489
+ params = {'DomainName': domain_name}
490
+ return self.get_response(doc_path, 'DescribeServiceAccessPolicies',
491
+ params, verb='POST')
492
+
493
+ def describe_stemming_options(self, domain_name):
494
+ """
495
+ Describes stemming options used by indexing for the search domain.
496
+
497
+ :type domain_name: string
498
+ :param domain_name: A string that represents the name of a
499
+ domain. Domain names must be unique across the domains
500
+ owned by an account within an AWS region. Domain names
501
+ must start with a letter or number and can contain the
502
+ following characters: a-z (lowercase), 0-9, and -
503
+ (hyphen). Uppercase letters and underscores are not
504
+ allowed.
505
+
506
+ :raises: BaseException, InternalException, ResourceNotFoundException
507
+ """
508
+ doc_path = ('describe_stemming_options_response',
509
+ 'describe_stemming_options_result',
510
+ 'stems')
511
+ params = {'DomainName': domain_name}
512
+ return self.get_response(doc_path, 'DescribeStemmingOptions',
513
+ params, verb='POST')
514
+
515
+ def describe_stopword_options(self, domain_name):
516
+ """
517
+ Describes stopword options used by indexing for the search domain.
518
+
519
+ :type domain_name: string
520
+ :param domain_name: A string that represents the name of a
521
+ domain. Domain names must be unique across the domains
522
+ owned by an account within an AWS region. Domain names
523
+ must start with a letter or number and can contain the
524
+ following characters: a-z (lowercase), 0-9, and -
525
+ (hyphen). Uppercase letters and underscores are not
526
+ allowed.
527
+
528
+ :raises: BaseException, InternalException, ResourceNotFoundException
529
+ """
530
+ doc_path = ('describe_stopword_options_response',
531
+ 'describe_stopword_options_result',
532
+ 'stopwords')
533
+ params = {'DomainName': domain_name}
534
+ return self.get_response(doc_path, 'DescribeStopwordOptions',
535
+ params, verb='POST')
536
+
537
+ def describe_synonym_options(self, domain_name):
538
+ """
539
+ Describes synonym options used by indexing for the search domain.
540
+
541
+ :type domain_name: string
542
+ :param domain_name: A string that represents the name of a
543
+ domain. Domain names must be unique across the domains
544
+ owned by an account within an AWS region. Domain names
545
+ must start with a letter or number and can contain the
546
+ following characters: a-z (lowercase), 0-9, and -
547
+ (hyphen). Uppercase letters and underscores are not
548
+ allowed.
549
+
550
+ :raises: BaseException, InternalException, ResourceNotFoundException
551
+ """
552
+ doc_path = ('describe_synonym_options_response',
553
+ 'describe_synonym_options_result',
554
+ 'synonyms')
555
+ params = {'DomainName': domain_name}
556
+ return self.get_response(doc_path, 'DescribeSynonymOptions',
557
+ params, verb='POST')
558
+
559
+ def index_documents(self, domain_name):
560
+ """
561
+ Tells the search domain to start scanning its documents using
562
+ the latest text processing options and ``IndexFields``. This
563
+ operation must be invoked to make visible in searches any
564
+ options whose <a>OptionStatus</a> has ``OptionState`` of
565
+ ``RequiresIndexDocuments``.
566
+
567
+ :type domain_name: string
568
+ :param domain_name: A string that represents the name of a
569
+ domain. Domain names must be unique across the domains
570
+ owned by an account within an AWS region. Domain names
571
+ must start with a letter or number and can contain the
572
+ following characters: a-z (lowercase), 0-9, and -
573
+ (hyphen). Uppercase letters and underscores are not
574
+ allowed.
575
+
576
+ :raises: BaseException, InternalException, ResourceNotFoundException
577
+ """
578
+ doc_path = ('index_documents_response',
579
+ 'index_documents_result',
580
+ 'field_names')
581
+ params = {'DomainName': domain_name}
582
+ return self.get_response(doc_path, 'IndexDocuments', params,
583
+ verb='POST', list_marker='FieldNames')
584
+
585
+ def update_default_search_field(self, domain_name, default_search_field):
586
+ """
587
+ Updates options defining the default search field used by
588
+ indexing for the search domain.
589
+
590
+ :type domain_name: string
591
+ :param domain_name: A string that represents the name of a
592
+ domain. Domain names must be unique across the domains
593
+ owned by an account within an AWS region. Domain names
594
+ must start with a letter or number and can contain the
595
+ following characters: a-z (lowercase), 0-9, and -
596
+ (hyphen). Uppercase letters and underscores are not
597
+ allowed.
598
+
599
+ :type default_search_field: string
600
+ :param default_search_field: The IndexField to use for search
601
+ requests issued with the q parameter. The default is an
602
+ empty string, which automatically searches all text
603
+ fields.
604
+
605
+ :raises: BaseException, InternalException, InvalidTypeException,
606
+ ResourceNotFoundException
607
+ """
608
+ doc_path = ('update_default_search_field_response',
609
+ 'update_default_search_field_result',
610
+ 'default_search_field')
611
+ params = {'DomainName': domain_name,
612
+ 'DefaultSearchField': default_search_field}
613
+ return self.get_response(doc_path, 'UpdateDefaultSearchField',
614
+ params, verb='POST')
615
+
616
+ def update_service_access_policies(self, domain_name, access_policies):
617
+ """
618
+ Updates the policies controlling access to the services in
619
+ this search domain.
620
+
621
+ :type domain_name: string
622
+ :param domain_name: A string that represents the name of a
623
+ domain. Domain names must be unique across the domains
624
+ owned by an account within an AWS region. Domain names
625
+ must start with a letter or number and can contain the
626
+ following characters: a-z (lowercase), 0-9, and -
627
+ (hyphen). Uppercase letters and underscores are not
628
+ allowed.
629
+
630
+ :type access_policies: string
631
+ :param access_policies: An IAM access policy as described in
632
+ The Access Policy Language in Using AWS Identity and
633
+ Access Management. The maximum size of an access policy
634
+ document is 100KB.
635
+
636
+ :raises: BaseException, InternalException, LimitExceededException,
637
+ ResourceNotFoundException, InvalidTypeException
638
+ """
639
+ doc_path = ('update_service_access_policies_response',
640
+ 'update_service_access_policies_result',
641
+ 'access_policies')
642
+ params = {'AccessPolicies': access_policies,
643
+ 'DomainName': domain_name}
644
+ return self.get_response(doc_path, 'UpdateServiceAccessPolicies',
645
+ params, verb='POST')
646
+
647
+ def update_stemming_options(self, domain_name, stems):
648
+ """
649
+ Updates stemming options used by indexing for the search domain.
650
+
651
+ :type domain_name: string
652
+ :param domain_name: A string that represents the name of a
653
+ domain. Domain names must be unique across the domains
654
+ owned by an account within an AWS region. Domain names
655
+ must start with a letter or number and can contain the
656
+ following characters: a-z (lowercase), 0-9, and -
657
+ (hyphen). Uppercase letters and underscores are not
658
+ allowed.
659
+
660
+ :type stems: string
661
+ :param stems: Maps terms to their stems. The JSON object
662
+ has a single key called "stems" whose value is a
663
+ dict mapping terms to their stems. The maximum size
664
+ of a stemming document is 500KB.
665
+ Example: {"stems":{"people": "person", "walking":"walk"}}
666
+
667
+ :raises: BaseException, InternalException, InvalidTypeException,
668
+ LimitExceededException, ResourceNotFoundException
669
+ """
670
+ doc_path = ('update_stemming_options_response',
671
+ 'update_stemming_options_result',
672
+ 'stems')
673
+ params = {'DomainName': domain_name,
674
+ 'Stems': stems}
675
+ return self.get_response(doc_path, 'UpdateStemmingOptions',
676
+ params, verb='POST')
677
+
678
+ def update_stopword_options(self, domain_name, stopwords):
679
+ """
680
+ Updates stopword options used by indexing for the search domain.
681
+
682
+ :type domain_name: string
683
+ :param domain_name: A string that represents the name of a
684
+ domain. Domain names must be unique across the domains
685
+ owned by an account within an AWS region. Domain names
686
+ must start with a letter or number and can contain the
687
+ following characters: a-z (lowercase), 0-9, and -
688
+ (hyphen). Uppercase letters and underscores are not
689
+ allowed.
690
+
691
+ :type stopwords: string
692
+ :param stopwords: Lists stopwords in a JSON object. The object has a
693
+ single key called "stopwords" whose value is an array of strings.
694
+ The maximum size of a stopwords document is 10KB. Example:
695
+ {"stopwords": ["a", "an", "the", "of"]}
696
+
697
+ :raises: BaseException, InternalException, InvalidTypeException,
698
+ LimitExceededException, ResourceNotFoundException
699
+ """
700
+ doc_path = ('update_stopword_options_response',
701
+ 'update_stopword_options_result',
702
+ 'stopwords')
703
+ params = {'DomainName': domain_name,
704
+ 'Stopwords': stopwords}
705
+ return self.get_response(doc_path, 'UpdateStopwordOptions',
706
+ params, verb='POST')
707
+
708
+ def update_synonym_options(self, domain_name, synonyms):
709
+ """
710
+ Updates synonym options used by indexing for the search domain.
711
+
712
+ :type domain_name: string
713
+ :param domain_name: A string that represents the name of a
714
+ domain. Domain names must be unique across the domains
715
+ owned by an account within an AWS region. Domain names
716
+ must start with a letter or number and can contain the
717
+ following characters: a-z (lowercase), 0-9, and -
718
+ (hyphen). Uppercase letters and underscores are not
719
+ allowed.
720
+
721
+ :type synonyms: string
722
+ :param synonyms: Maps terms to their synonyms. The JSON object
723
+ has a single key "synonyms" whose value is a dict mapping terms
724
+ to their synonyms. Each synonym is a simple string or an
725
+ array of strings. The maximum size of a stopwords document
726
+ is 100KB. Example:
727
+ {"synonyms": {"cat": ["feline", "kitten"], "puppy": "dog"}}
728
+
729
+ :raises: BaseException, InternalException, InvalidTypeException,
730
+ LimitExceededException, ResourceNotFoundException
731
+ """
732
+ doc_path = ('update_synonym_options_response',
733
+ 'update_synonym_options_result',
734
+ 'synonyms')
735
+ params = {'DomainName': domain_name,
736
+ 'Synonyms': synonyms}
737
+ return self.get_response(doc_path, 'UpdateSynonymOptions',
738
+ params, verb='POST')