googlecloud 0.0.4 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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/googlecloud.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,80 @@
1
+ # Copyright (c) 2006-2008 Mitch Garnaat http://garnaat.org/
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a
4
+ # copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish, dis-
7
+ # tribute, sublicense, and/or sell copies of the Software, and to permit
8
+ # persons to whom the Software is furnished to do so, subject to the fol-
9
+ # lowing conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included
12
+ # in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
16
+ # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
17
+ # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
18
+ # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20
+ # IN THE SOFTWARE.
21
+
22
+ """
23
+ Represents an EC2 Availability Zone
24
+ """
25
+ from boto.ec2.ec2object import EC2Object
26
+
27
+ class MessageSet(list):
28
+ """
29
+ A list object that contains messages associated with
30
+ an availability zone.
31
+ """
32
+
33
+ def startElement(self, name, attrs, connection):
34
+ return None
35
+
36
+ def endElement(self, name, value, connection):
37
+ if name == 'message':
38
+ self.append(value)
39
+ else:
40
+ setattr(self, name, value)
41
+
42
+ class Zone(EC2Object):
43
+ """
44
+ Represents an Availability Zone.
45
+
46
+ :ivar name: The name of the zone.
47
+ :ivar state: The current state of the zone.
48
+ :ivar region_name: The name of the region the zone is associated with.
49
+ :ivar messages: A list of messages related to the zone.
50
+ """
51
+
52
+ def __init__(self, connection=None):
53
+ EC2Object.__init__(self, connection)
54
+ self.name = None
55
+ self.state = None
56
+ self.region_name = None
57
+ self.messages = None
58
+
59
+ def __repr__(self):
60
+ return 'Zone:%s' % self.name
61
+
62
+ def startElement(self, name, attrs, connection):
63
+ if name == 'messageSet':
64
+ self.messages = MessageSet()
65
+ return self.messages
66
+ return None
67
+
68
+ def endElement(self, name, value, connection):
69
+ if name == 'zoneName':
70
+ self.name = value
71
+ elif name == 'zoneState':
72
+ self.state = value
73
+ elif name == 'regionName':
74
+ self.region_name = value
75
+ else:
76
+ setattr(self, name, value)
77
+
78
+
79
+
80
+
@@ -0,0 +1,90 @@
1
+ # Copyright (c) 2010 Chris Moyer http://coredumped.org/
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a
4
+ # copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish, dis-
7
+ # tribute, sublicense, and/or sell copies of the Software, and to permit
8
+ # persons to whom the Software is furnished to do so, subject to the fol-
9
+ # lowing conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included
12
+ # in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
16
+ # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
17
+ # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
18
+ # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20
+ # IN THE SOFTWARE.
21
+
22
+ import boto
23
+ from boto.connection import AWSQueryConnection, AWSAuthConnection
24
+ import time
25
+ import urllib
26
+ import xml.sax
27
+ from boto.ecs.item import ItemSet
28
+ from boto import handler
29
+
30
+ class ECSConnection(AWSQueryConnection):
31
+ """
32
+ ECommerce Connection
33
+
34
+ For more information on how to use this module see:
35
+
36
+ http://blog.coredumped.org/2010/09/search-for-books-on-amazon-using-boto.html
37
+ """
38
+
39
+ APIVersion = '2010-11-01'
40
+
41
+ def __init__(self, aws_access_key_id=None, aws_secret_access_key=None,
42
+ is_secure=True, port=None, proxy=None, proxy_port=None,
43
+ proxy_user=None, proxy_pass=None, host='ecs.amazonaws.com',
44
+ debug=0, https_connection_factory=None, path='/'):
45
+ AWSQueryConnection.__init__(self, aws_access_key_id, aws_secret_access_key,
46
+ is_secure, port, proxy, proxy_port, proxy_user, proxy_pass,
47
+ host, debug, https_connection_factory, path)
48
+
49
+ def _required_auth_capability(self):
50
+ return ['ecs']
51
+
52
+ def get_response(self, action, params, page=0, itemSet=None):
53
+ """
54
+ Utility method to handle calls to ECS and parsing of responses.
55
+ """
56
+ params['Service'] = "AWSECommerceService"
57
+ params['Operation'] = action
58
+ if page:
59
+ params['ItemPage'] = page
60
+ response = self.make_request(None, params, "/onca/xml")
61
+ body = response.read()
62
+ boto.log.debug(body)
63
+
64
+ if response.status != 200:
65
+ boto.log.error('%s %s' % (response.status, response.reason))
66
+ boto.log.error('%s' % body)
67
+ raise self.ResponseError(response.status, response.reason, body)
68
+
69
+ if itemSet == None:
70
+ rs = ItemSet(self, action, params, page)
71
+ else:
72
+ rs = itemSet
73
+ h = handler.XmlHandler(rs, self)
74
+ xml.sax.parseString(body, h)
75
+ return rs
76
+
77
+ #
78
+ # Group methods
79
+ #
80
+
81
+ def item_search(self, search_index, **params):
82
+ """
83
+ Returns items that satisfy the search criteria, including one or more search
84
+ indices.
85
+
86
+ For a full list of search terms,
87
+ :see: http://docs.amazonwebservices.com/AWSECommerceService/2010-09-01/DG/index.html?ItemSearch.html
88
+ """
89
+ params['SearchIndex'] = search_index
90
+ return self.get_response('ItemSearch', params)
@@ -0,0 +1,153 @@
1
+ # Copyright (c) 2010 Chris Moyer http://coredumped.org/
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a
4
+ # copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish, dis-
7
+ # tribute, sublicense, and/or sell copies of the Software, and to permit
8
+ # persons to whom the Software is furnished to do so, subject to the fol-
9
+ # lowing conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included
12
+ # in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
16
+ # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
17
+ # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
18
+ # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20
+ # IN THE SOFTWARE.
21
+
22
+
23
+ import xml.sax
24
+ import cgi
25
+ from StringIO import StringIO
26
+
27
+ class ResponseGroup(xml.sax.ContentHandler):
28
+ """A Generic "Response Group", which can
29
+ be anything from the entire list of Items to
30
+ specific response elements within an item"""
31
+
32
+ def __init__(self, connection=None, nodename=None):
33
+ """Initialize this Item"""
34
+ self._connection = connection
35
+ self._nodename = nodename
36
+ self._nodepath = []
37
+ self._curobj = None
38
+ self._xml = StringIO()
39
+
40
+ def __repr__(self):
41
+ return '<%s: %s>' % (self.__class__.__name__, self.__dict__)
42
+
43
+ #
44
+ # Attribute Functions
45
+ #
46
+ def get(self, name):
47
+ return self.__dict__.get(name)
48
+
49
+ def set(self, name, value):
50
+ self.__dict__[name] = value
51
+
52
+ def to_xml(self):
53
+ return "<%s>%s</%s>" % (self._nodename, self._xml.getvalue(), self._nodename)
54
+
55
+ #
56
+ # XML Parser functions
57
+ #
58
+ def startElement(self, name, attrs, connection):
59
+ self._xml.write("<%s>" % name)
60
+ self._nodepath.append(name)
61
+ if len(self._nodepath) == 1:
62
+ obj = ResponseGroup(self._connection)
63
+ self.set(name, obj)
64
+ self._curobj = obj
65
+ elif self._curobj:
66
+ self._curobj.startElement(name, attrs, connection)
67
+ return None
68
+
69
+ def endElement(self, name, value, connection):
70
+ self._xml.write("%s</%s>" % (cgi.escape(value).replace("&amp;amp;", "&amp;"), name))
71
+ if len(self._nodepath) == 0:
72
+ return
73
+ obj = None
74
+ curval = self.get(name)
75
+ if len(self._nodepath) == 1:
76
+ if value or not curval:
77
+ self.set(name, value)
78
+ if self._curobj:
79
+ self._curobj = None
80
+ #elif len(self._nodepath) == 2:
81
+ #self._curobj = None
82
+ elif self._curobj:
83
+ self._curobj.endElement(name, value, connection)
84
+ self._nodepath.pop()
85
+ return None
86
+
87
+
88
+ class Item(ResponseGroup):
89
+ """A single Item"""
90
+
91
+ def __init__(self, connection=None):
92
+ """Initialize this Item"""
93
+ ResponseGroup.__init__(self, connection, "Item")
94
+
95
+ class ItemSet(ResponseGroup):
96
+ """A special ResponseGroup that has built-in paging, and
97
+ only creates new Items on the "Item" tag"""
98
+
99
+ def __init__(self, connection, action, params, page=0):
100
+ ResponseGroup.__init__(self, connection, "Items")
101
+ self.objs = []
102
+ self.iter = None
103
+ self.page = page
104
+ self.action = action
105
+ self.params = params
106
+ self.curItem = None
107
+ self.total_results = 0
108
+ self.total_pages = 0
109
+
110
+ def startElement(self, name, attrs, connection):
111
+ if name == "Item":
112
+ self.curItem = Item(self._connection)
113
+ elif self.curItem != None:
114
+ self.curItem.startElement(name, attrs, connection)
115
+ return None
116
+
117
+ def endElement(self, name, value, connection):
118
+ if name == 'TotalResults':
119
+ self.total_results = value
120
+ elif name == 'TotalPages':
121
+ self.total_pages = value
122
+ elif name == "Item":
123
+ self.objs.append(self.curItem)
124
+ self._xml.write(self.curItem.to_xml())
125
+ self.curItem = None
126
+ elif self.curItem != None:
127
+ self.curItem.endElement(name, value, connection)
128
+ return None
129
+
130
+ def next(self):
131
+ """Special paging functionality"""
132
+ if self.iter == None:
133
+ self.iter = iter(self.objs)
134
+ try:
135
+ return self.iter.next()
136
+ except StopIteration:
137
+ self.iter = None
138
+ self.objs = []
139
+ if int(self.page) < int(self.total_pages):
140
+ self.page += 1
141
+ self._connection.get_response(self.action, self.params, self.page, self)
142
+ return self.next()
143
+ else:
144
+ raise
145
+
146
+ def __iter__(self):
147
+ return self
148
+
149
+ def to_xml(self):
150
+ """Override to first fetch everything"""
151
+ for item in self:
152
+ pass
153
+ return ResponseGroup.to_xml(self)
@@ -0,0 +1,62 @@
1
+ # Copyright (c) 2013 Amazon.com, Inc. or its affiliates.
2
+ # All Rights Reserved
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a
5
+ # copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish, dis-
8
+ # tribute, sublicense, and/or sell copies of the Software, and to permit
9
+ # persons to whom the Software is furnished to do so, subject to the fol-
10
+ # lowing conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included
13
+ # in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
17
+ # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
18
+ # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
19
+ # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21
+ # IN THE SOFTWARE.
22
+ #
23
+ from boto.regioninfo import RegionInfo
24
+
25
+
26
+ def regions():
27
+ """
28
+ Get all available regions for the AWS Elastic Beanstalk service.
29
+
30
+ :rtype: list
31
+ :return: A list of :class:`boto.regioninfo.RegionInfo`
32
+ """
33
+ from boto.elasticache.layer1 import ElastiCacheConnection
34
+ return [RegionInfo(name='us-east-1',
35
+ endpoint='elasticache.us-east-1.amazonaws.com',
36
+ connection_cls=ElastiCacheConnection),
37
+ RegionInfo(name='us-west-1',
38
+ endpoint='elasticache.us-west-1.amazonaws.com',
39
+ connection_cls=ElastiCacheConnection),
40
+ RegionInfo(name='us-west-2',
41
+ endpoint='elasticache.us-west-2.amazonaws.com',
42
+ connection_cls=ElastiCacheConnection),
43
+ RegionInfo(name='eu-west-1',
44
+ endpoint='elasticache.eu-west-1.amazonaws.com',
45
+ connection_cls=ElastiCacheConnection),
46
+ RegionInfo(name='ap-northeast-1',
47
+ endpoint='elasticache.ap-northeast-1.amazonaws.com',
48
+ connection_cls=ElastiCacheConnection),
49
+ RegionInfo(name='ap-southeast-1',
50
+ endpoint='elasticache.ap-southeast-1.amazonaws.com',
51
+ connection_cls=ElastiCacheConnection),
52
+ RegionInfo(name='sa-east-1',
53
+ endpoint='elasticache.sa-east-1.amazonaws.com',
54
+ connection_cls=ElastiCacheConnection),
55
+ ]
56
+
57
+
58
+ def connect_to_region(region_name, **kw_params):
59
+ for region in regions():
60
+ if region.name == region_name:
61
+ return region.connect(**kw_params)
62
+ return None
@@ -0,0 +1,1252 @@
1
+ # Copyright (c) 2013 Amazon.com, Inc. or its affiliates. All Rights Reserved
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a
4
+ # copy of this software and associated documentation files (the
5
+ # "Software"), to deal in the Software without restriction, including
6
+ # without limitation the rights to use, copy, modify, merge, publish, dis-
7
+ # tribute, sublicense, and/or sell copies of the Software, and to permit
8
+ # persons to whom the Software is furnished to do so, subject to the fol-
9
+ # lowing conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included
12
+ # in all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
16
+ # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
17
+ # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
18
+ # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20
+ # IN THE SOFTWARE.
21
+ #
22
+
23
+ import json
24
+ import boto
25
+ from boto.connection import AWSQueryConnection
26
+ from boto.regioninfo import RegionInfo
27
+
28
+
29
+ class ElastiCacheConnection(AWSQueryConnection):
30
+ """
31
+ Amazon ElastiCache
32
+ Amazon ElastiCache is a web service that makes it easier to set
33
+ up, operate, and scale a distributed cache in the cloud.
34
+
35
+ With Amazon ElastiCache, customers gain all of the benefits of a
36
+ high-performance, in-memory cache with far less of the
37
+ administrative burden of launching and managing a distributed
38
+ cache. The service makes set-up, scaling, and cluster failure
39
+ handling much simpler than in a self-managed cache deployment.
40
+
41
+ In addition, through integration with Amazon CloudWatch, customers
42
+ get enhanced visibility into the key performance statistics
43
+ associated with their cache and can receive alarms if a part of
44
+ their cache runs hot.
45
+ """
46
+ APIVersion = "2012-11-15"
47
+ DefaultRegionName = "us-east-1"
48
+ DefaultRegionEndpoint = "elasticache.us-east-1.amazonaws.com"
49
+
50
+ def __init__(self, **kwargs):
51
+ region = kwargs.get('region')
52
+ if not region:
53
+ region = RegionInfo(self, self.DefaultRegionName,
54
+ self.DefaultRegionEndpoint)
55
+ else:
56
+ del kwargs['region']
57
+ kwargs['host'] = region.endpoint
58
+ AWSQueryConnection.__init__(self, **kwargs)
59
+ self.region = region
60
+
61
+
62
+ def _required_auth_capability(self):
63
+ return ['sign-v2']
64
+
65
+ def authorize_cache_security_group_ingress(self,
66
+ cache_security_group_name,
67
+ ec2_security_group_name,
68
+ ec2_security_group_owner_id):
69
+ """
70
+ Authorizes ingress to a CacheSecurityGroup using EC2 Security
71
+ Groups as authorization (therefore the application using the
72
+ cache must be running on EC2 clusters). This API requires the
73
+ following parameters: EC2SecurityGroupName and
74
+ EC2SecurityGroupOwnerId.
75
+ You cannot authorize ingress from an EC2 security group in one
76
+ Region to an Amazon Cache Cluster in another.
77
+
78
+ :type cache_security_group_name: string
79
+ :param cache_security_group_name: The name of the Cache Security Group
80
+ to authorize.
81
+
82
+ :type ec2_security_group_name: string
83
+ :param ec2_security_group_name: Name of the EC2 Security Group to
84
+ include in the authorization.
85
+
86
+ :type ec2_security_group_owner_id: string
87
+ :param ec2_security_group_owner_id: AWS Account Number of the owner of
88
+ the security group specified in the EC2SecurityGroupName parameter.
89
+ The AWS Access Key ID is not an acceptable value.
90
+
91
+ """
92
+ params = {
93
+ 'CacheSecurityGroupName': cache_security_group_name,
94
+ 'EC2SecurityGroupName': ec2_security_group_name,
95
+ 'EC2SecurityGroupOwnerId': ec2_security_group_owner_id,
96
+ }
97
+ return self._make_request(
98
+ action='AuthorizeCacheSecurityGroupIngress',
99
+ verb='POST',
100
+ path='/', params=params)
101
+
102
+ def create_cache_cluster(self, cache_cluster_id, num_cache_nodes,
103
+ cache_node_type, engine, engine_version=None,
104
+ cache_parameter_group_name=None,
105
+ cache_subnet_group_name=None,
106
+ cache_security_group_names=None,
107
+ security_group_ids=None,
108
+ preferred_availability_zone=None,
109
+ preferred_maintenance_window=None, port=None,
110
+ notification_topic_arn=None,
111
+ auto_minor_version_upgrade=None):
112
+ """
113
+ Creates a new Cache Cluster.
114
+
115
+ :type cache_cluster_id: string
116
+ :param cache_cluster_id: The Cache Cluster identifier. This parameter
117
+ is stored as a lowercase string.
118
+
119
+ :type num_cache_nodes: integer
120
+ :param num_cache_nodes: The number of Cache Nodes the Cache Cluster
121
+ should have.
122
+
123
+ :type cache_node_type: string
124
+ :param cache_node_type: The compute and memory capacity of nodes in a
125
+ Cache Cluster.
126
+
127
+ :type engine: string
128
+ :param engine: The name of the cache engine to be used for this Cache
129
+ Cluster. Currently, memcached is the only cache engine supported
130
+ by the service.
131
+
132
+ :type engine_version: string
133
+ :param engine_version: The version of the cache engine to be used for
134
+ this cluster.
135
+
136
+ :type cache_parameter_group_name: string
137
+ :param cache_parameter_group_name: The name of the cache parameter
138
+ group to associate with this Cache cluster. If this argument is
139
+ omitted, the default CacheParameterGroup for the specified engine
140
+ will be used.
141
+
142
+ :type cache_subnet_group_name: string
143
+ :param cache_subnet_group_name: The name of the Cache Subnet Group to
144
+ be used for the Cache Cluster. Use this parameter only when you
145
+ are creating a cluster in an Amazon Virtual Private Cloud (VPC).
146
+
147
+ :type cache_security_group_names: list
148
+ :param cache_security_group_names: A list of Cache Security Group Names
149
+ to associate with this Cache Cluster. Use this parameter only when
150
+ you are creating a cluster outside of an Amazon Virtual Private
151
+ Cloud (VPC).
152
+
153
+ :type security_group_ids: list
154
+ :param security_group_ids: Specifies the VPC Security Groups associated
155
+ with the Cache Cluster. Use this parameter only when you are
156
+ creating a cluster in an Amazon Virtual Private Cloud (VPC).
157
+
158
+ :type preferred_availability_zone: string
159
+ :param preferred_availability_zone: The EC2 Availability Zone that the
160
+ Cache Cluster will be created in. All cache nodes belonging to a
161
+ cache cluster are placed in the preferred availability zone.
162
+ Default: System chosen (random) availability zone.
163
+
164
+ :type preferred_maintenance_window: string
165
+ :param preferred_maintenance_window: The weekly time range (in UTC)
166
+ during which system maintenance can occur. Example:
167
+ `sun:05:00-sun:09:00`
168
+
169
+ :type port: integer
170
+ :param port: The port number on which each of the Cache Nodes will
171
+ accept connections.
172
+
173
+ :type notification_topic_arn: string
174
+ :param notification_topic_arn: The Amazon Resource Name (ARN) of the
175
+ Amazon Simple Notification Service (SNS) topic to which
176
+ notifications will be sent. The Amazon SNS topic owner must be the
177
+ same as the Cache Cluster owner.
178
+
179
+ :type auto_minor_version_upgrade: boolean
180
+ :param auto_minor_version_upgrade: Indicates that minor engine upgrades
181
+ will be applied automatically to the Cache Cluster during the
182
+ maintenance window. Default: `True`
183
+
184
+ """
185
+ params = {
186
+ 'CacheClusterId': cache_cluster_id,
187
+ 'NumCacheNodes': num_cache_nodes,
188
+ 'CacheNodeType': cache_node_type,
189
+ 'Engine': engine,
190
+ }
191
+ if engine_version is not None:
192
+ params['EngineVersion'] = engine_version
193
+ if cache_parameter_group_name is not None:
194
+ params['CacheParameterGroupName'] = cache_parameter_group_name
195
+ if cache_subnet_group_name is not None:
196
+ params['CacheSubnetGroupName'] = cache_subnet_group_name
197
+ if cache_security_group_names is not None:
198
+ self.build_list_params(params,
199
+ cache_security_group_names,
200
+ 'CacheSecurityGroupNames.member')
201
+ if security_group_ids is not None:
202
+ self.build_list_params(params,
203
+ security_group_ids,
204
+ 'SecurityGroupIds.member')
205
+ if preferred_availability_zone is not None:
206
+ params['PreferredAvailabilityZone'] = preferred_availability_zone
207
+ if preferred_maintenance_window is not None:
208
+ params['PreferredMaintenanceWindow'] = preferred_maintenance_window
209
+ if port is not None:
210
+ params['Port'] = port
211
+ if notification_topic_arn is not None:
212
+ params['NotificationTopicArn'] = notification_topic_arn
213
+ if auto_minor_version_upgrade is not None:
214
+ params['AutoMinorVersionUpgrade'] = str(
215
+ auto_minor_version_upgrade).lower()
216
+ return self._make_request(
217
+ action='CreateCacheCluster',
218
+ verb='POST',
219
+ path='/', params=params)
220
+
221
+ def create_cache_parameter_group(self, cache_parameter_group_name,
222
+ cache_parameter_group_family,
223
+ description):
224
+ """
225
+ Creates a new Cache Parameter Group. Cache Parameter groups
226
+ control the parameters for a Cache Cluster.
227
+
228
+ :type cache_parameter_group_name: string
229
+ :param cache_parameter_group_name: The name of the Cache Parameter
230
+ Group.
231
+
232
+ :type cache_parameter_group_family: string
233
+ :param cache_parameter_group_family: The name of the Cache Parameter
234
+ Group Family the Cache Parameter Group can be used with.
235
+ Currently, memcached1.4 is the only cache parameter group family
236
+ supported by the service.
237
+
238
+ :type description: string
239
+ :param description: The description for the Cache Parameter Group.
240
+
241
+ """
242
+ params = {
243
+ 'CacheParameterGroupName': cache_parameter_group_name,
244
+ 'CacheParameterGroupFamily': cache_parameter_group_family,
245
+ 'Description': description,
246
+ }
247
+ return self._make_request(
248
+ action='CreateCacheParameterGroup',
249
+ verb='POST',
250
+ path='/', params=params)
251
+
252
+ def create_cache_security_group(self, cache_security_group_name,
253
+ description):
254
+ """
255
+ Creates a new Cache Security Group. Cache Security groups
256
+ control access to one or more Cache Clusters.
257
+
258
+ Only use cache security groups when you are creating a cluster
259
+ outside of an Amazon Virtual Private Cloud (VPC). Inside of a
260
+ VPC, use VPC security groups.
261
+
262
+ :type cache_security_group_name: string
263
+ :param cache_security_group_name: The name for the Cache Security
264
+ Group. This value is stored as a lowercase string. Constraints:
265
+ Must contain no more than 255 alphanumeric characters. Must not be
266
+ "Default". Example: `mysecuritygroup`
267
+
268
+ :type description: string
269
+ :param description: The description for the Cache Security Group.
270
+
271
+ """
272
+ params = {
273
+ 'CacheSecurityGroupName': cache_security_group_name,
274
+ 'Description': description,
275
+ }
276
+ return self._make_request(
277
+ action='CreateCacheSecurityGroup',
278
+ verb='POST',
279
+ path='/', params=params)
280
+
281
+ def create_cache_subnet_group(self, cache_subnet_group_name,
282
+ cache_subnet_group_description, subnet_ids):
283
+ """
284
+ Creates a new Cache Subnet Group.
285
+
286
+ :type cache_subnet_group_name: string
287
+ :param cache_subnet_group_name: The name for the Cache Subnet Group.
288
+ This value is stored as a lowercase string. Constraints: Must
289
+ contain no more than 255 alphanumeric characters or hyphens.
290
+ Example: `mysubnetgroup`
291
+
292
+ :type cache_subnet_group_description: string
293
+ :param cache_subnet_group_description: The description for the Cache
294
+ Subnet Group.
295
+
296
+ :type subnet_ids: list
297
+ :param subnet_ids: The EC2 Subnet IDs for the Cache Subnet Group.
298
+
299
+ """
300
+ params = {
301
+ 'CacheSubnetGroupName': cache_subnet_group_name,
302
+ 'CacheSubnetGroupDescription': cache_subnet_group_description,
303
+ }
304
+ self.build_list_params(params,
305
+ subnet_ids,
306
+ 'SubnetIds.member')
307
+ return self._make_request(
308
+ action='CreateCacheSubnetGroup',
309
+ verb='POST',
310
+ path='/', params=params)
311
+
312
+ def delete_cache_cluster(self, cache_cluster_id):
313
+ """
314
+ Deletes a previously provisioned Cache Cluster. A successful
315
+ response from the web service indicates the request was
316
+ received correctly. This action cannot be canceled or
317
+ reverted. DeleteCacheCluster deletes all associated Cache
318
+ Nodes, node endpoints and the Cache Cluster itself.
319
+
320
+ :type cache_cluster_id: string
321
+ :param cache_cluster_id: The Cache Cluster identifier for the Cache
322
+ Cluster to be deleted. This parameter isn't case sensitive.
323
+
324
+ """
325
+ params = {'CacheClusterId': cache_cluster_id, }
326
+ return self._make_request(
327
+ action='DeleteCacheCluster',
328
+ verb='POST',
329
+ path='/', params=params)
330
+
331
+ def delete_cache_parameter_group(self, cache_parameter_group_name):
332
+ """
333
+ Deletes the specified CacheParameterGroup. The
334
+ CacheParameterGroup cannot be deleted if it is associated with
335
+ any cache clusters.
336
+
337
+ :type cache_parameter_group_name: string
338
+ :param cache_parameter_group_name: The name of the Cache Parameter
339
+ Group to delete. The specified cache security group must not be
340
+ associated with any Cache clusters.
341
+
342
+ """
343
+ params = {
344
+ 'CacheParameterGroupName': cache_parameter_group_name,
345
+ }
346
+ return self._make_request(
347
+ action='DeleteCacheParameterGroup',
348
+ verb='POST',
349
+ path='/', params=params)
350
+
351
+ def delete_cache_security_group(self, cache_security_group_name):
352
+ """
353
+ Deletes a Cache Security Group.
354
+ The specified Cache Security Group must not be associated with
355
+ any Cache Clusters.
356
+
357
+ :type cache_security_group_name: string
358
+ :param cache_security_group_name: The name of the Cache Security Group
359
+ to delete. You cannot delete the default security group.
360
+
361
+ """
362
+ params = {
363
+ 'CacheSecurityGroupName': cache_security_group_name,
364
+ }
365
+ return self._make_request(
366
+ action='DeleteCacheSecurityGroup',
367
+ verb='POST',
368
+ path='/', params=params)
369
+
370
+ def delete_cache_subnet_group(self, cache_subnet_group_name):
371
+ """
372
+ Deletes a Cache Subnet Group.
373
+ The specified Cache Subnet Group must not be associated with
374
+ any Cache Clusters.
375
+
376
+ :type cache_subnet_group_name: string
377
+ :param cache_subnet_group_name: The name of the Cache Subnet Group to
378
+ delete. Constraints: Must contain no more than 255 alphanumeric
379
+ characters or hyphens.
380
+
381
+ """
382
+ params = {'CacheSubnetGroupName': cache_subnet_group_name, }
383
+ return self._make_request(
384
+ action='DeleteCacheSubnetGroup',
385
+ verb='POST',
386
+ path='/', params=params)
387
+
388
+ def describe_cache_clusters(self, cache_cluster_id=None,
389
+ max_records=None, marker=None,
390
+ show_cache_node_info=None):
391
+ """
392
+ Returns information about all provisioned Cache Clusters if no
393
+ Cache Cluster identifier is specified, or about a specific
394
+ Cache Cluster if a Cache Cluster identifier is supplied.
395
+
396
+ Cluster information will be returned by default. An optional
397
+ ShowDetails flag can be used to retrieve detailed information
398
+ about the Cache Nodes associated with the Cache Cluster.
399
+ Details include the DNS address and port for the Cache Node
400
+ endpoint.
401
+
402
+ If the cluster is in the CREATING state, only cluster level
403
+ information will be displayed until all of the nodes are
404
+ successfully provisioned.
405
+
406
+ If the cluster is in the DELETING state, only cluster level
407
+ information will be displayed.
408
+
409
+ While adding Cache Nodes, node endpoint information and
410
+ creation time for the additional nodes will not be displayed
411
+ until they are completely provisioned. The cluster lifecycle
412
+ tells the customer when new nodes are AVAILABLE.
413
+
414
+ While removing existing Cache Nodes from an cluster, endpoint
415
+ information for the removed nodes will not be displayed.
416
+
417
+ DescribeCacheClusters supports pagination.
418
+
419
+ :type cache_cluster_id: string
420
+ :param cache_cluster_id: The user-supplied cluster identifier. If this
421
+ parameter is specified, only information about that specific Cache
422
+ Cluster is returned. This parameter isn't case sensitive.
423
+
424
+ :type max_records: integer
425
+ :param max_records: The maximum number of records to include in the
426
+ response. If more records exist than the specified MaxRecords
427
+ value, a marker is included in the response so that the remaining
428
+ results may be retrieved.
429
+
430
+ :type marker: string
431
+ :param marker: An optional marker provided in the previous
432
+ DescribeCacheClusters request. If this parameter is specified, the
433
+ response includes only records beyond the marker, up to the value
434
+ specified by MaxRecords .
435
+
436
+ :type show_cache_node_info: boolean
437
+ :param show_cache_node_info: An optional flag that can be included in
438
+ the DescribeCacheCluster request to retrieve Cache Nodes
439
+ information.
440
+
441
+ """
442
+ params = {}
443
+ if cache_cluster_id is not None:
444
+ params['CacheClusterId'] = cache_cluster_id
445
+ if max_records is not None:
446
+ params['MaxRecords'] = max_records
447
+ if marker is not None:
448
+ params['Marker'] = marker
449
+ if show_cache_node_info is not None:
450
+ params['ShowCacheNodeInfo'] = str(
451
+ show_cache_node_info).lower()
452
+ return self._make_request(
453
+ action='DescribeCacheClusters',
454
+ verb='POST',
455
+ path='/', params=params)
456
+
457
+ def describe_cache_engine_versions(self, engine=None,
458
+ engine_version=None,
459
+ cache_parameter_group_family=None,
460
+ max_records=None, marker=None,
461
+ default_only=None):
462
+ """
463
+ Returns a list of the available cache engines and their
464
+ versions.
465
+
466
+ :type engine: string
467
+ :param engine: The cache engine to return.
468
+
469
+ :type engine_version: string
470
+ :param engine_version: The cache engine version to return. Example:
471
+ `1.4.14`
472
+
473
+ :type cache_parameter_group_family: string
474
+ :param cache_parameter_group_family: The name of a specific Cache
475
+ Parameter Group family to return details for. Constraints: +
476
+ Must be 1 to 255 alphanumeric characters + First character must be
477
+ a letter + Cannot end with a hyphen or contain two consecutive
478
+ hyphens
479
+
480
+ :type max_records: integer
481
+ :param max_records: The maximum number of records to include in the
482
+ response. If more records exist than the specified MaxRecords
483
+ value, a marker is included in the response so that the remaining
484
+ results may be retrieved.
485
+
486
+ :type marker: string
487
+ :param marker: An optional marker provided in the previous
488
+ DescribeCacheParameterGroups request. If this parameter is
489
+ specified, the response includes only records beyond the marker, up
490
+ to the value specified by MaxRecords .
491
+
492
+ :type default_only: boolean
493
+ :param default_only: Indicates that only the default version of the
494
+ specified engine or engine and major version combination is
495
+ returned.
496
+
497
+ """
498
+ params = {}
499
+ if engine is not None:
500
+ params['Engine'] = engine
501
+ if engine_version is not None:
502
+ params['EngineVersion'] = engine_version
503
+ if cache_parameter_group_family is not None:
504
+ params['CacheParameterGroupFamily'] = cache_parameter_group_family
505
+ if max_records is not None:
506
+ params['MaxRecords'] = max_records
507
+ if marker is not None:
508
+ params['Marker'] = marker
509
+ if default_only is not None:
510
+ params['DefaultOnly'] = str(
511
+ default_only).lower()
512
+ return self._make_request(
513
+ action='DescribeCacheEngineVersions',
514
+ verb='POST',
515
+ path='/', params=params)
516
+
517
+ def describe_cache_parameter_groups(self,
518
+ cache_parameter_group_name=None,
519
+ max_records=None, marker=None):
520
+ """
521
+ Returns a list of CacheParameterGroup descriptions. If a
522
+ CacheParameterGroupName is specified, the list will contain
523
+ only the descriptions of the specified CacheParameterGroup.
524
+
525
+ :type cache_parameter_group_name: string
526
+ :param cache_parameter_group_name: The name of a specific cache
527
+ parameter group to return details for.
528
+
529
+ :type max_records: integer
530
+ :param max_records: The maximum number of records to include in the
531
+ response. If more records exist than the specified MaxRecords
532
+ value, a marker is included in the response so that the remaining
533
+ results may be retrieved.
534
+
535
+ :type marker: string
536
+ :param marker: An optional marker provided in the previous
537
+ DescribeCacheParameterGroups request. If this parameter is
538
+ specified, the response includes only records beyond the marker, up
539
+ to the value specified by MaxRecords .
540
+
541
+ """
542
+ params = {}
543
+ if cache_parameter_group_name is not None:
544
+ params['CacheParameterGroupName'] = cache_parameter_group_name
545
+ if max_records is not None:
546
+ params['MaxRecords'] = max_records
547
+ if marker is not None:
548
+ params['Marker'] = marker
549
+ return self._make_request(
550
+ action='DescribeCacheParameterGroups',
551
+ verb='POST',
552
+ path='/', params=params)
553
+
554
+ def describe_cache_parameters(self, cache_parameter_group_name,
555
+ source=None, max_records=None, marker=None):
556
+ """
557
+ Returns the detailed parameter list for a particular
558
+ CacheParameterGroup.
559
+
560
+ :type cache_parameter_group_name: string
561
+ :param cache_parameter_group_name: The name of a specific cache
562
+ parameter group to return details for.
563
+
564
+ :type source: string
565
+ :param source: The parameter types to return. Valid values: `user` |
566
+ `system` | `engine-default`
567
+
568
+ :type max_records: integer
569
+ :param max_records: The maximum number of records to include in the
570
+ response. If more records exist than the specified MaxRecords
571
+ value, a marker is included in the response so that the remaining
572
+ results may be retrieved.
573
+
574
+ :type marker: string
575
+ :param marker: An optional marker provided in the previous
576
+ DescribeCacheClusters request. If this parameter is specified, the
577
+ response includes only records beyond the marker, up to the value
578
+ specified by MaxRecords .
579
+
580
+ """
581
+ params = {
582
+ 'CacheParameterGroupName': cache_parameter_group_name,
583
+ }
584
+ if source is not None:
585
+ params['Source'] = source
586
+ if max_records is not None:
587
+ params['MaxRecords'] = max_records
588
+ if marker is not None:
589
+ params['Marker'] = marker
590
+ return self._make_request(
591
+ action='DescribeCacheParameters',
592
+ verb='POST',
593
+ path='/', params=params)
594
+
595
+ def describe_cache_security_groups(self, cache_security_group_name=None,
596
+ max_records=None, marker=None):
597
+ """
598
+ Returns a list of CacheSecurityGroup descriptions. If a
599
+ CacheSecurityGroupName is specified, the list will contain
600
+ only the description of the specified CacheSecurityGroup.
601
+
602
+ :type cache_security_group_name: string
603
+ :param cache_security_group_name: The name of the Cache Security Group
604
+ to return details for.
605
+
606
+ :type max_records: integer
607
+ :param max_records: The maximum number of records to include in the
608
+ response. If more records exist than the specified MaxRecords
609
+ value, a marker is included in the response so that the remaining
610
+ results may be retrieved.
611
+
612
+ :type marker: string
613
+ :param marker: An optional marker provided in the previous
614
+ DescribeCacheClusters request. If this parameter is specified, the
615
+ response includes only records beyond the marker, up to the value
616
+ specified by MaxRecords .
617
+
618
+ """
619
+ params = {}
620
+ if cache_security_group_name is not None:
621
+ params['CacheSecurityGroupName'] = cache_security_group_name
622
+ if max_records is not None:
623
+ params['MaxRecords'] = max_records
624
+ if marker is not None:
625
+ params['Marker'] = marker
626
+ return self._make_request(
627
+ action='DescribeCacheSecurityGroups',
628
+ verb='POST',
629
+ path='/', params=params)
630
+
631
+ def describe_cache_subnet_groups(self, cache_subnet_group_name=None,
632
+ max_records=None, marker=None):
633
+ """
634
+ Returns a list of CacheSubnetGroup descriptions. If a
635
+ CacheSubnetGroupName is specified, the list will contain only
636
+ the description of the specified Cache Subnet Group.
637
+
638
+ :type cache_subnet_group_name: string
639
+ :param cache_subnet_group_name: The name of the Cache Subnet Group to
640
+ return details for.
641
+
642
+ :type max_records: integer
643
+ :param max_records: The maximum number of records to include in the
644
+ response. If more records exist than the specified `MaxRecords`
645
+ value, a marker is included in the response so that the remaining
646
+ results may be retrieved. Default: 100 Constraints: minimum 20,
647
+ maximum 100
648
+
649
+ :type marker: string
650
+ :param marker: An optional marker provided in the previous
651
+ DescribeCacheSubnetGroups request. If this parameter is specified,
652
+ the response includes only records beyond the marker, up to the
653
+ value specified by `MaxRecords`.
654
+
655
+ """
656
+ params = {}
657
+ if cache_subnet_group_name is not None:
658
+ params['CacheSubnetGroupName'] = cache_subnet_group_name
659
+ if max_records is not None:
660
+ params['MaxRecords'] = max_records
661
+ if marker is not None:
662
+ params['Marker'] = marker
663
+ return self._make_request(
664
+ action='DescribeCacheSubnetGroups',
665
+ verb='POST',
666
+ path='/', params=params)
667
+
668
+ def describe_engine_default_parameters(self,
669
+ cache_parameter_group_family,
670
+ max_records=None, marker=None):
671
+ """
672
+ Returns the default engine and system parameter information
673
+ for the specified cache engine.
674
+
675
+ :type cache_parameter_group_family: string
676
+ :param cache_parameter_group_family: The name of the Cache Parameter
677
+ Group Family. Currently, memcached1.4 is the only cache parameter
678
+ group family supported by the service.
679
+
680
+ :type max_records: integer
681
+ :param max_records: The maximum number of records to include in the
682
+ response. If more records exist than the specified MaxRecords
683
+ value, a marker is included in the response so that the remaining
684
+ results may be retrieved.
685
+
686
+ :type marker: string
687
+ :param marker: An optional marker provided in the previous
688
+ DescribeCacheClusters request. If this parameter is specified, the
689
+ response includes only records beyond the marker, up to the value
690
+ specified by MaxRecords .
691
+
692
+ """
693
+ params = {
694
+ 'CacheParameterGroupFamily': cache_parameter_group_family,
695
+ }
696
+ if max_records is not None:
697
+ params['MaxRecords'] = max_records
698
+ if marker is not None:
699
+ params['Marker'] = marker
700
+ return self._make_request(
701
+ action='DescribeEngineDefaultParameters',
702
+ verb='POST',
703
+ path='/', params=params)
704
+
705
+ def describe_events(self, source_identifier=None, source_type=None,
706
+ start_time=None, end_time=None, duration=None,
707
+ max_records=None, marker=None):
708
+ """
709
+ Returns events related to Cache Clusters, Cache Security
710
+ Groups, and Cache Parameter Groups for the past 14 days.
711
+ Events specific to a particular Cache Cluster, Cache Security
712
+ Group, or Cache Parameter Group can be obtained by providing
713
+ the name as a parameter. By default, the past hour of events
714
+ are returned.
715
+
716
+ :type source_identifier: string
717
+ :param source_identifier: The identifier of the event source for which
718
+ events will be returned. If not specified, then all sources are
719
+ included in the response.
720
+
721
+ :type source_type: string
722
+ :param source_type: The event source to retrieve events for. If no
723
+ value is specified, all events are returned.
724
+
725
+ :type start_time: string
726
+ :param start_time: The beginning of the time interval to retrieve
727
+ events for, specified in ISO 8601 format.
728
+
729
+ :type end_time: string
730
+ :param end_time: The end of the time interval for which to retrieve
731
+ events, specified in ISO 8601 format.
732
+
733
+ :type duration: integer
734
+ :param duration: The number of minutes to retrieve events for.
735
+
736
+ :type max_records: integer
737
+ :param max_records: The maximum number of records to include in the
738
+ response. If more records exist than the specified MaxRecords
739
+ value, a marker is included in the response so that the remaining
740
+ results may be retrieved.
741
+
742
+ :type marker: string
743
+ :param marker: An optional marker provided in the previous
744
+ DescribeCacheClusters request. If this parameter is specified, the
745
+ response includes only records beyond the marker, up to the value
746
+ specified by MaxRecords .
747
+
748
+ """
749
+ params = {}
750
+ if source_identifier is not None:
751
+ params['SourceIdentifier'] = source_identifier
752
+ if source_type is not None:
753
+ params['SourceType'] = source_type
754
+ if start_time is not None:
755
+ params['StartTime'] = start_time
756
+ if end_time is not None:
757
+ params['EndTime'] = end_time
758
+ if duration is not None:
759
+ params['Duration'] = duration
760
+ if max_records is not None:
761
+ params['MaxRecords'] = max_records
762
+ if marker is not None:
763
+ params['Marker'] = marker
764
+ return self._make_request(
765
+ action='DescribeEvents',
766
+ verb='POST',
767
+ path='/', params=params)
768
+
769
+ def describe_reserved_cache_nodes(self, reserved_cache_node_id=None,
770
+ reserved_cache_nodes_offering_id=None,
771
+ cache_node_type=None, duration=None,
772
+ product_description=None,
773
+ offering_type=None, max_records=None,
774
+ marker=None):
775
+ """
776
+ Returns information about reserved Cache Nodes for this
777
+ account, or about a specified reserved Cache Node.
778
+
779
+ :type reserved_cache_node_id: string
780
+ :param reserved_cache_node_id: The reserved Cache Node identifier
781
+ filter value. Specify this parameter to show only the reservation
782
+ that matches the specified reservation ID.
783
+
784
+ :type reserved_cache_nodes_offering_id: string
785
+ :param reserved_cache_nodes_offering_id: The offering identifier filter
786
+ value. Specify this parameter to show only purchased reservations
787
+ matching the specified offering identifier.
788
+
789
+ :type cache_node_type: string
790
+ :param cache_node_type: The Cache Node type filter value. Specify this
791
+ parameter to show only those reservations matching the specified
792
+ Cache Nodes type.
793
+
794
+ :type duration: string
795
+ :param duration: The duration filter value, specified in years or
796
+ seconds. Specify this parameter to show only reservations for this
797
+ duration. Valid Values: `1 | 3 | 31536000 | 94608000`
798
+
799
+ :type product_description: string
800
+ :param product_description: The product description filter value.
801
+ Specify this parameter to show only those reservations matching the
802
+ specified product description.
803
+
804
+ :type offering_type: string
805
+ :param offering_type: The offering type filter value. Specify this
806
+ parameter to show only the available offerings matching the
807
+ specified offering type. Valid Values: `"Light Utilization" |
808
+ "Medium Utilization" | "Heavy Utilization"`
809
+
810
+ :type max_records: integer
811
+ :param max_records: The maximum number of records to include in the
812
+ response. If more than the `MaxRecords` value is available, a
813
+ marker is included in the response so that the following results
814
+ can be retrieved. Default: 100 Constraints: minimum 20, maximum
815
+ 100
816
+
817
+ :type marker: string
818
+ :param marker: The marker provided in the previous request. If this
819
+ parameter is specified, the response includes records beyond the
820
+ marker only, up to `MaxRecords`.
821
+
822
+ """
823
+ params = {}
824
+ if reserved_cache_node_id is not None:
825
+ params['ReservedCacheNodeId'] = reserved_cache_node_id
826
+ if reserved_cache_nodes_offering_id is not None:
827
+ params['ReservedCacheNodesOfferingId'] = reserved_cache_nodes_offering_id
828
+ if cache_node_type is not None:
829
+ params['CacheNodeType'] = cache_node_type
830
+ if duration is not None:
831
+ params['Duration'] = duration
832
+ if product_description is not None:
833
+ params['ProductDescription'] = product_description
834
+ if offering_type is not None:
835
+ params['OfferingType'] = offering_type
836
+ if max_records is not None:
837
+ params['MaxRecords'] = max_records
838
+ if marker is not None:
839
+ params['Marker'] = marker
840
+ return self._make_request(
841
+ action='DescribeReservedCacheNodes',
842
+ verb='POST',
843
+ path='/', params=params)
844
+
845
+ def describe_reserved_cache_nodes_offerings(self,
846
+ reserved_cache_nodes_offering_id=None,
847
+ cache_node_type=None,
848
+ duration=None,
849
+ product_description=None,
850
+ offering_type=None,
851
+ max_records=None,
852
+ marker=None):
853
+ """
854
+ Lists available reserved Cache Node offerings.
855
+
856
+ :type reserved_cache_nodes_offering_id: string
857
+ :param reserved_cache_nodes_offering_id: The offering identifier filter
858
+ value. Specify this parameter to show only the available offering
859
+ that matches the specified reservation identifier. Example:
860
+ `438012d3-4052-4cc7-b2e3-8d3372e0e706`
861
+
862
+ :type cache_node_type: string
863
+ :param cache_node_type: The Cache Node type filter value. Specify this
864
+ parameter to show only the available offerings matching the
865
+ specified Cache Node type.
866
+
867
+ :type duration: string
868
+ :param duration: Duration filter value, specified in years or seconds.
869
+ Specify this parameter to show only reservations for this duration.
870
+ Valid Values: `1 | 3 | 31536000 | 94608000`
871
+
872
+ :type product_description: string
873
+ :param product_description: Product description filter value. Specify
874
+ this parameter to show only the available offerings matching the
875
+ specified product description.
876
+
877
+ :type offering_type: string
878
+ :param offering_type: The offering type filter value. Specify this
879
+ parameter to show only the available offerings matching the
880
+ specified offering type. Valid Values: `"Light Utilization" |
881
+ "Medium Utilization" | "Heavy Utilization"`
882
+
883
+ :type max_records: integer
884
+ :param max_records: The maximum number of records to include in the
885
+ response. If more than the `MaxRecords` value is available, a
886
+ marker is included in the response so that the following results
887
+ can be retrieved. Default: 100 Constraints: minimum 20, maximum
888
+ 100
889
+
890
+ :type marker: string
891
+ :param marker: The marker provided in the previous request. If this
892
+ parameter is specified, the response includes records beyond the
893
+ marker only, up to `MaxRecords`.
894
+
895
+ """
896
+ params = {}
897
+ if reserved_cache_nodes_offering_id is not None:
898
+ params['ReservedCacheNodesOfferingId'] = reserved_cache_nodes_offering_id
899
+ if cache_node_type is not None:
900
+ params['CacheNodeType'] = cache_node_type
901
+ if duration is not None:
902
+ params['Duration'] = duration
903
+ if product_description is not None:
904
+ params['ProductDescription'] = product_description
905
+ if offering_type is not None:
906
+ params['OfferingType'] = offering_type
907
+ if max_records is not None:
908
+ params['MaxRecords'] = max_records
909
+ if marker is not None:
910
+ params['Marker'] = marker
911
+ return self._make_request(
912
+ action='DescribeReservedCacheNodesOfferings',
913
+ verb='POST',
914
+ path='/', params=params)
915
+
916
+ def modify_cache_cluster(self, cache_cluster_id, num_cache_nodes=None,
917
+ cache_node_ids_to_remove=None,
918
+ cache_security_group_names=None,
919
+ security_group_ids=None,
920
+ preferred_maintenance_window=None,
921
+ notification_topic_arn=None,
922
+ cache_parameter_group_name=None,
923
+ notification_topic_status=None,
924
+ apply_immediately=None, engine_version=None,
925
+ auto_minor_version_upgrade=None):
926
+ """
927
+ Modifies the Cache Cluster settings. You can change one or
928
+ more Cache Cluster configuration parameters by specifying the
929
+ parameters and the new values in the request.
930
+
931
+ :type cache_cluster_id: string
932
+ :param cache_cluster_id: The Cache Cluster identifier. This value is
933
+ stored as a lowercase string.
934
+
935
+ :type num_cache_nodes: integer
936
+ :param num_cache_nodes: The number of Cache Nodes the Cache Cluster
937
+ should have. If NumCacheNodes is greater than the existing number
938
+ of Cache Nodes, Cache Nodes will be added. If NumCacheNodes is less
939
+ than the existing number of Cache Nodes, Cache Nodes will be
940
+ removed. When removing Cache Nodes, the Ids of the specific Cache
941
+ Nodes to be removed must be supplied using the CacheNodeIdsToRemove
942
+ parameter.
943
+
944
+ :type cache_node_ids_to_remove: list
945
+ :param cache_node_ids_to_remove: The list of Cache Node IDs to be
946
+ removed. This parameter is only valid when NumCacheNodes is less
947
+ than the existing number of Cache Nodes. The number of Cache Node
948
+ Ids supplied in this parameter must match the difference between
949
+ the existing number of Cache Nodes in the cluster and the new
950
+ NumCacheNodes requested.
951
+
952
+ :type cache_security_group_names: list
953
+ :param cache_security_group_names: A list of Cache Security Group Names
954
+ to authorize on this Cache Cluster. This change is asynchronously
955
+ applied as soon as possible. This parameter can be used only with
956
+ clusters that are created outside of an Amazon Virtual Private
957
+ Cloud (VPC). Constraints: Must contain no more than 255
958
+ alphanumeric characters. Must not be "Default".
959
+
960
+ :type security_group_ids: list
961
+ :param security_group_ids: Specifies the VPC Security Groups associated
962
+ with the Cache Cluster. This parameter can be used only with
963
+ clusters that are created in an Amazon Virtual Private Cloud (VPC).
964
+
965
+ :type preferred_maintenance_window: string
966
+ :param preferred_maintenance_window: The weekly time range (in UTC)
967
+ during which system maintenance can occur, which may result in an
968
+ outage. This change is made immediately. If moving this window to
969
+ the current time, there must be at least 120 minutes between the
970
+ current time and end of the window to ensure pending changes are
971
+ applied.
972
+
973
+ :type notification_topic_arn: string
974
+ :param notification_topic_arn: The Amazon Resource Name (ARN) of the
975
+ SNS topic to which notifications will be sent. The SNS topic owner
976
+ must be same as the Cache Cluster owner.
977
+
978
+ :type cache_parameter_group_name: string
979
+ :param cache_parameter_group_name: The name of the Cache Parameter
980
+ Group to apply to this Cache Cluster. This change is asynchronously
981
+ applied as soon as possible for parameters when the
982
+ ApplyImmediately parameter is specified as true for this request.
983
+
984
+ :type notification_topic_status: string
985
+ :param notification_topic_status: The status of the Amazon SNS
986
+ notification topic. The value can be active or inactive .
987
+ Notifications are sent only if the status is active .
988
+
989
+ :type apply_immediately: boolean
990
+ :param apply_immediately: Specifies whether or not the modifications in
991
+ this request and any pending modifications are asynchronously
992
+ applied as soon as possible, regardless of the
993
+ PreferredMaintenanceWindow setting for the Cache Cluster. If this
994
+ parameter is passed as `False`, changes to the Cache Cluster are
995
+ applied on the next maintenance reboot, or the next failure reboot,
996
+ whichever occurs first. Default: `False`
997
+
998
+ :type engine_version: string
999
+ :param engine_version: The version of the cache engine to upgrade this
1000
+ cluster to.
1001
+
1002
+ :type auto_minor_version_upgrade: boolean
1003
+ :param auto_minor_version_upgrade: Indicates that minor engine upgrades
1004
+ will be applied automatically to the Cache Cluster during the
1005
+ maintenance window. Default: `True`
1006
+
1007
+ """
1008
+ params = {'CacheClusterId': cache_cluster_id, }
1009
+ if num_cache_nodes is not None:
1010
+ params['NumCacheNodes'] = num_cache_nodes
1011
+ if cache_node_ids_to_remove is not None:
1012
+ self.build_list_params(params,
1013
+ cache_node_ids_to_remove,
1014
+ 'CacheNodeIdsToRemove.member')
1015
+ if cache_security_group_names is not None:
1016
+ self.build_list_params(params,
1017
+ cache_security_group_names,
1018
+ 'CacheSecurityGroupNames.member')
1019
+ if security_group_ids is not None:
1020
+ self.build_list_params(params,
1021
+ security_group_ids,
1022
+ 'SecurityGroupIds.member')
1023
+ if preferred_maintenance_window is not None:
1024
+ params['PreferredMaintenanceWindow'] = preferred_maintenance_window
1025
+ if notification_topic_arn is not None:
1026
+ params['NotificationTopicArn'] = notification_topic_arn
1027
+ if cache_parameter_group_name is not None:
1028
+ params['CacheParameterGroupName'] = cache_parameter_group_name
1029
+ if notification_topic_status is not None:
1030
+ params['NotificationTopicStatus'] = notification_topic_status
1031
+ if apply_immediately is not None:
1032
+ params['ApplyImmediately'] = str(
1033
+ apply_immediately).lower()
1034
+ if engine_version is not None:
1035
+ params['EngineVersion'] = engine_version
1036
+ if auto_minor_version_upgrade is not None:
1037
+ params['AutoMinorVersionUpgrade'] = str(
1038
+ auto_minor_version_upgrade).lower()
1039
+ return self._make_request(
1040
+ action='ModifyCacheCluster',
1041
+ verb='POST',
1042
+ path='/', params=params)
1043
+
1044
+ def modify_cache_parameter_group(self, cache_parameter_group_name,
1045
+ parameter_name_values):
1046
+ """
1047
+ Modifies the parameters of a CacheParameterGroup. To modify
1048
+ more than one parameter, submit a list of ParameterName and
1049
+ ParameterValue parameters. A maximum of 20 parameters can be
1050
+ modified in a single request.
1051
+
1052
+ :type cache_parameter_group_name: string
1053
+ :param cache_parameter_group_name: The name of the cache parameter
1054
+ group to modify.
1055
+
1056
+ :type parameter_name_values: list
1057
+ :param parameter_name_values: An array of parameter names and values
1058
+ for the parameter update. At least one parameter name and value
1059
+ must be supplied; subsequent arguments are optional. A maximum of
1060
+ 20 parameters may be modified in a single request.
1061
+
1062
+ """
1063
+ params = {
1064
+ 'CacheParameterGroupName': cache_parameter_group_name,
1065
+ }
1066
+ self.build_complex_list_params(
1067
+ params, parameter_name_values,
1068
+ 'ParameterNameValues.member',
1069
+ ('ParameterName', 'ParameterValue'))
1070
+ return self._make_request(
1071
+ action='ModifyCacheParameterGroup',
1072
+ verb='POST',
1073
+ path='/', params=params)
1074
+
1075
+ def modify_cache_subnet_group(self, cache_subnet_group_name,
1076
+ cache_subnet_group_description=None,
1077
+ subnet_ids=None):
1078
+ """
1079
+ Modifies an existing Cache Subnet Group.
1080
+
1081
+ :type cache_subnet_group_name: string
1082
+ :param cache_subnet_group_name: The name for the Cache Subnet Group.
1083
+ This value is stored as a lowercase string. Constraints: Must
1084
+ contain no more than 255 alphanumeric characters or hyphens.
1085
+ Example: `mysubnetgroup`
1086
+
1087
+ :type cache_subnet_group_description: string
1088
+ :param cache_subnet_group_description: The description for the Cache
1089
+ Subnet Group.
1090
+
1091
+ :type subnet_ids: list
1092
+ :param subnet_ids: The EC2 Subnet IDs for the Cache Subnet Group.
1093
+
1094
+ """
1095
+ params = {'CacheSubnetGroupName': cache_subnet_group_name, }
1096
+ if cache_subnet_group_description is not None:
1097
+ params['CacheSubnetGroupDescription'] = cache_subnet_group_description
1098
+ if subnet_ids is not None:
1099
+ self.build_list_params(params,
1100
+ subnet_ids,
1101
+ 'SubnetIds.member')
1102
+ return self._make_request(
1103
+ action='ModifyCacheSubnetGroup',
1104
+ verb='POST',
1105
+ path='/', params=params)
1106
+
1107
+ def purchase_reserved_cache_nodes_offering(self,
1108
+ reserved_cache_nodes_offering_id,
1109
+ reserved_cache_node_id=None,
1110
+ cache_node_count=None):
1111
+ """
1112
+ Purchases a reserved Cache Node offering.
1113
+
1114
+ :type reserved_cache_nodes_offering_id: string
1115
+ :param reserved_cache_nodes_offering_id: The ID of the Reserved Cache
1116
+ Node offering to purchase. Example:
1117
+ 438012d3-4052-4cc7-b2e3-8d3372e0e706
1118
+
1119
+ :type reserved_cache_node_id: string
1120
+ :param reserved_cache_node_id: Customer-specified identifier to track
1121
+ this reservation. Example: myreservationID
1122
+
1123
+ :type cache_node_count: integer
1124
+ :param cache_node_count: The number of instances to reserve. Default:
1125
+ `1`
1126
+
1127
+ """
1128
+ params = {
1129
+ 'ReservedCacheNodesOfferingId': reserved_cache_nodes_offering_id,
1130
+ }
1131
+ if reserved_cache_node_id is not None:
1132
+ params['ReservedCacheNodeId'] = reserved_cache_node_id
1133
+ if cache_node_count is not None:
1134
+ params['CacheNodeCount'] = cache_node_count
1135
+ return self._make_request(
1136
+ action='PurchaseReservedCacheNodesOffering',
1137
+ verb='POST',
1138
+ path='/', params=params)
1139
+
1140
+ def reboot_cache_cluster(self, cache_cluster_id,
1141
+ cache_node_ids_to_reboot):
1142
+ """
1143
+ Reboots some (or all) of the cache cluster nodes within a
1144
+ previously provisioned ElastiCache cluster. This API results
1145
+ in the application of modified CacheParameterGroup parameters
1146
+ to the cache cluster. This action is taken as soon as
1147
+ possible, and results in a momentary outage to the cache
1148
+ cluster during which the cache cluster status is set to
1149
+ rebooting. During that momentary outage, the contents of the
1150
+ cache (for each cache cluster node being rebooted) are lost. A
1151
+ CacheCluster event is created when the reboot is completed.
1152
+
1153
+ :type cache_cluster_id: string
1154
+ :param cache_cluster_id: The Cache Cluster identifier. This parameter
1155
+ is stored as a lowercase string.
1156
+
1157
+ :type cache_node_ids_to_reboot: list
1158
+ :param cache_node_ids_to_reboot: A list of Cache Cluster Node Ids to
1159
+ reboot. To reboot an entire cache cluster, specify all cache
1160
+ cluster node Ids.
1161
+
1162
+ """
1163
+ params = {'CacheClusterId': cache_cluster_id, }
1164
+ self.build_list_params(params,
1165
+ cache_node_ids_to_reboot,
1166
+ 'CacheNodeIdsToReboot.member')
1167
+ return self._make_request(
1168
+ action='RebootCacheCluster',
1169
+ verb='POST',
1170
+ path='/', params=params)
1171
+
1172
+ def reset_cache_parameter_group(self, cache_parameter_group_name,
1173
+ parameter_name_values,
1174
+ reset_all_parameters=None):
1175
+ """
1176
+ Modifies the parameters of a CacheParameterGroup to the engine
1177
+ or system default value. To reset specific parameters submit a
1178
+ list of the parameter names. To reset the entire
1179
+ CacheParameterGroup, specify the CacheParameterGroup name and
1180
+ ResetAllParameters parameters.
1181
+
1182
+ :type cache_parameter_group_name: string
1183
+ :param cache_parameter_group_name: The name of the Cache Parameter
1184
+ Group.
1185
+
1186
+ :type reset_all_parameters: boolean
1187
+ :param reset_all_parameters: Specifies whether ( true ) or not ( false
1188
+ ) to reset all parameters in the Cache Parameter Group to default
1189
+ values.
1190
+
1191
+ :type parameter_name_values: list
1192
+ :param parameter_name_values: An array of parameter names which should
1193
+ be reset. If not resetting the entire CacheParameterGroup, at least
1194
+ one parameter name must be supplied.
1195
+
1196
+ """
1197
+ params = {
1198
+ 'CacheParameterGroupName': cache_parameter_group_name,
1199
+ }
1200
+ self.build_complex_list_params(
1201
+ params, parameter_name_values,
1202
+ 'ParameterNameValues.member',
1203
+ ('ParameterName', 'ParameterValue'))
1204
+ if reset_all_parameters is not None:
1205
+ params['ResetAllParameters'] = str(
1206
+ reset_all_parameters).lower()
1207
+ return self._make_request(
1208
+ action='ResetCacheParameterGroup',
1209
+ verb='POST',
1210
+ path='/', params=params)
1211
+
1212
+ def revoke_cache_security_group_ingress(self, cache_security_group_name,
1213
+ ec2_security_group_name,
1214
+ ec2_security_group_owner_id):
1215
+ """
1216
+ Revokes ingress from a CacheSecurityGroup for previously
1217
+ authorized EC2 Security Groups.
1218
+
1219
+ :type cache_security_group_name: string
1220
+ :param cache_security_group_name: The name of the Cache Security Group
1221
+ to revoke ingress from.
1222
+
1223
+ :type ec2_security_group_name: string
1224
+ :param ec2_security_group_name: The name of the EC2 Security Group to
1225
+ revoke access from.
1226
+
1227
+ :type ec2_security_group_owner_id: string
1228
+ :param ec2_security_group_owner_id: The AWS Account Number of the owner
1229
+ of the security group specified in the EC2SecurityGroupName
1230
+ parameter. The AWS Access Key ID is not an acceptable value.
1231
+
1232
+ """
1233
+ params = {
1234
+ 'CacheSecurityGroupName': cache_security_group_name,
1235
+ 'EC2SecurityGroupName': ec2_security_group_name,
1236
+ 'EC2SecurityGroupOwnerId': ec2_security_group_owner_id,
1237
+ }
1238
+ return self._make_request(
1239
+ action='RevokeCacheSecurityGroupIngress',
1240
+ verb='POST',
1241
+ path='/', params=params)
1242
+
1243
+ def _make_request(self, action, verb, path, params):
1244
+ params['ContentType'] = 'JSON'
1245
+ response = self.make_request(action=action, verb='POST',
1246
+ path='/', params=params)
1247
+ body = response.read()
1248
+ boto.log.debug(body)
1249
+ if response.status == 200:
1250
+ return json.loads(body)
1251
+ else:
1252
+ raise self.ResponseError(response.status, response.reason, body)