gcloud 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (768) hide show
  1. data.tar.gz.sig +0 -0
  2. data/CHANGELOG +4 -0
  3. data/Makefile +4 -0
  4. data/Manifest +760 -1
  5. data/bin/gcloud +7 -0
  6. data/bin/{gcutil → gcutil.symlink} +0 -0
  7. data/bin/gsutil-symlink +377 -0
  8. data/gcloud.gemspec +5 -5
  9. data/packages/gsutil/CHECKSUM +1 -0
  10. data/packages/gsutil/COPYING +202 -0
  11. data/packages/gsutil/LICENSE.third_party +295 -0
  12. data/packages/gsutil/MANIFEST.in +5 -0
  13. data/packages/gsutil/README +38 -0
  14. data/packages/gsutil/README.pkg +49 -0
  15. data/packages/gsutil/ReleaseNotes.txt +780 -0
  16. data/packages/gsutil/VERSION +1 -0
  17. data/packages/gsutil/boto/Changelog.rst +35 -0
  18. data/packages/gsutil/boto/LICENSE +18 -0
  19. data/packages/gsutil/boto/MANIFEST.in +12 -0
  20. data/packages/gsutil/boto/README.rst +163 -0
  21. data/packages/gsutil/boto/bin/asadmin +290 -0
  22. data/packages/gsutil/boto/bin/bundle_image +27 -0
  23. data/packages/gsutil/boto/bin/cfadmin +108 -0
  24. data/packages/gsutil/boto/bin/cq +89 -0
  25. data/packages/gsutil/boto/bin/cwutil +140 -0
  26. data/packages/gsutil/boto/bin/elbadmin +284 -0
  27. data/packages/gsutil/boto/bin/fetch_file +43 -0
  28. data/packages/gsutil/boto/bin/glacier +154 -0
  29. data/packages/gsutil/boto/bin/instance_events +145 -0
  30. data/packages/gsutil/boto/bin/kill_instance +35 -0
  31. data/packages/gsutil/boto/bin/launch_instance +252 -0
  32. data/packages/gsutil/boto/bin/list_instances +90 -0
  33. data/packages/gsutil/boto/bin/lss3 +77 -0
  34. data/packages/gsutil/boto/bin/mturk +465 -0
  35. data/packages/gsutil/boto/bin/pyami_sendmail +52 -0
  36. data/packages/gsutil/boto/bin/route53 +205 -0
  37. data/packages/gsutil/boto/bin/s3put +374 -0
  38. data/packages/gsutil/boto/bin/sdbadmin +194 -0
  39. data/packages/gsutil/boto/bin/taskadmin +116 -0
  40. data/packages/gsutil/boto/boto/__init__.py +793 -0
  41. data/packages/gsutil/boto/boto/__init__.pyc +0 -0
  42. data/packages/gsutil/boto/boto/auth.py +682 -0
  43. data/packages/gsutil/boto/boto/auth.pyc +0 -0
  44. data/packages/gsutil/boto/boto/auth_handler.py +58 -0
  45. data/packages/gsutil/boto/boto/auth_handler.pyc +0 -0
  46. data/packages/gsutil/boto/boto/beanstalk/__init__.py +65 -0
  47. data/packages/gsutil/boto/boto/beanstalk/exception.py +64 -0
  48. data/packages/gsutil/boto/boto/beanstalk/layer1.py +1153 -0
  49. data/packages/gsutil/boto/boto/beanstalk/response.py +703 -0
  50. data/packages/gsutil/boto/boto/beanstalk/wrapper.py +29 -0
  51. data/packages/gsutil/boto/boto/cacerts/__init__.py +22 -0
  52. data/packages/gsutil/boto/boto/cacerts/__init__.pyc +0 -0
  53. data/packages/gsutil/boto/boto/cacerts/cacerts.txt +633 -0
  54. data/packages/gsutil/boto/boto/cloudformation/__init__.py +68 -0
  55. data/packages/gsutil/boto/boto/cloudformation/connection.py +364 -0
  56. data/packages/gsutil/boto/boto/cloudformation/stack.py +360 -0
  57. data/packages/gsutil/boto/boto/cloudformation/template.py +43 -0
  58. data/packages/gsutil/boto/boto/cloudfront/__init__.py +324 -0
  59. data/packages/gsutil/boto/boto/cloudfront/distribution.py +745 -0
  60. data/packages/gsutil/boto/boto/cloudfront/exception.py +26 -0
  61. data/packages/gsutil/boto/boto/cloudfront/identity.py +122 -0
  62. data/packages/gsutil/boto/boto/cloudfront/invalidation.py +216 -0
  63. data/packages/gsutil/boto/boto/cloudfront/logging.py +38 -0
  64. data/packages/gsutil/boto/boto/cloudfront/object.py +48 -0
  65. data/packages/gsutil/boto/boto/cloudfront/origin.py +150 -0
  66. data/packages/gsutil/boto/boto/cloudfront/signers.py +60 -0
  67. data/packages/gsutil/boto/boto/cloudsearch/__init__.py +45 -0
  68. data/packages/gsutil/boto/boto/cloudsearch/document.py +265 -0
  69. data/packages/gsutil/boto/boto/cloudsearch/domain.py +394 -0
  70. data/packages/gsutil/boto/boto/cloudsearch/layer1.py +738 -0
  71. data/packages/gsutil/boto/boto/cloudsearch/layer2.py +67 -0
  72. data/packages/gsutil/boto/boto/cloudsearch/optionstatus.py +248 -0
  73. data/packages/gsutil/boto/boto/cloudsearch/search.py +365 -0
  74. data/packages/gsutil/boto/boto/cloudsearch/sourceattribute.py +75 -0
  75. data/packages/gsutil/boto/boto/compat.py +28 -0
  76. data/packages/gsutil/boto/boto/compat.pyc +0 -0
  77. data/packages/gsutil/boto/boto/connection.py +1081 -0
  78. data/packages/gsutil/boto/boto/connection.pyc +0 -0
  79. data/packages/gsutil/boto/boto/contrib/__init__.py +22 -0
  80. data/packages/gsutil/boto/boto/contrib/ymlmessage.py +52 -0
  81. data/packages/gsutil/boto/boto/core/README +58 -0
  82. data/packages/gsutil/boto/boto/core/__init__.py +23 -0
  83. data/packages/gsutil/boto/boto/core/auth.py +78 -0
  84. data/packages/gsutil/boto/boto/core/credentials.py +154 -0
  85. data/packages/gsutil/boto/boto/core/dictresponse.py +178 -0
  86. data/packages/gsutil/boto/boto/core/service.py +67 -0
  87. data/packages/gsutil/boto/boto/datapipeline/__init__.py +0 -0
  88. data/packages/gsutil/boto/boto/datapipeline/exceptions.py +42 -0
  89. data/packages/gsutil/boto/boto/datapipeline/layer1.py +546 -0
  90. data/packages/gsutil/boto/boto/dynamodb/__init__.py +66 -0
  91. data/packages/gsutil/boto/boto/dynamodb/batch.py +262 -0
  92. data/packages/gsutil/boto/boto/dynamodb/condition.py +170 -0
  93. data/packages/gsutil/boto/boto/dynamodb/exceptions.py +64 -0
  94. data/packages/gsutil/boto/boto/dynamodb/item.py +196 -0
  95. data/packages/gsutil/boto/boto/dynamodb/layer1.py +575 -0
  96. data/packages/gsutil/boto/boto/dynamodb/layer2.py +798 -0
  97. data/packages/gsutil/boto/boto/dynamodb/schema.py +112 -0
  98. data/packages/gsutil/boto/boto/dynamodb/table.py +540 -0
  99. data/packages/gsutil/boto/boto/dynamodb/types.py +326 -0
  100. data/packages/gsutil/boto/boto/ec2/__init__.py +96 -0
  101. data/packages/gsutil/boto/boto/ec2/address.py +103 -0
  102. data/packages/gsutil/boto/boto/ec2/autoscale/__init__.py +781 -0
  103. data/packages/gsutil/boto/boto/ec2/autoscale/activity.py +74 -0
  104. data/packages/gsutil/boto/boto/ec2/autoscale/group.py +337 -0
  105. data/packages/gsutil/boto/boto/ec2/autoscale/instance.py +60 -0
  106. data/packages/gsutil/boto/boto/ec2/autoscale/launchconfig.py +209 -0
  107. data/packages/gsutil/boto/boto/ec2/autoscale/policy.py +166 -0
  108. data/packages/gsutil/boto/boto/ec2/autoscale/request.py +38 -0
  109. data/packages/gsutil/boto/boto/ec2/autoscale/scheduled.py +60 -0
  110. data/packages/gsutil/boto/boto/ec2/autoscale/tag.py +84 -0
  111. data/packages/gsutil/boto/boto/ec2/blockdevicemapping.py +141 -0
  112. data/packages/gsutil/boto/boto/ec2/bundleinstance.py +78 -0
  113. data/packages/gsutil/boto/boto/ec2/buyreservation.py +84 -0
  114. data/packages/gsutil/boto/boto/ec2/cloudwatch/__init__.py +603 -0
  115. data/packages/gsutil/boto/boto/ec2/cloudwatch/alarm.py +316 -0
  116. data/packages/gsutil/boto/boto/ec2/cloudwatch/datapoint.py +40 -0
  117. data/packages/gsutil/boto/boto/ec2/cloudwatch/dimension.py +38 -0
  118. data/packages/gsutil/boto/boto/ec2/cloudwatch/listelement.py +31 -0
  119. data/packages/gsutil/boto/boto/ec2/cloudwatch/metric.py +175 -0
  120. data/packages/gsutil/boto/boto/ec2/connection.py +3409 -0
  121. data/packages/gsutil/boto/boto/ec2/ec2object.py +107 -0
  122. data/packages/gsutil/boto/boto/ec2/elb/__init__.py +553 -0
  123. data/packages/gsutil/boto/boto/ec2/elb/healthcheck.py +89 -0
  124. data/packages/gsutil/boto/boto/ec2/elb/instancestate.py +62 -0
  125. data/packages/gsutil/boto/boto/ec2/elb/listelement.py +36 -0
  126. data/packages/gsutil/boto/boto/ec2/elb/listener.py +75 -0
  127. data/packages/gsutil/boto/boto/ec2/elb/loadbalancer.py +324 -0
  128. data/packages/gsutil/boto/boto/ec2/elb/policies.py +89 -0
  129. data/packages/gsutil/boto/boto/ec2/elb/securitygroup.py +38 -0
  130. data/packages/gsutil/boto/boto/ec2/group.py +39 -0
  131. data/packages/gsutil/boto/boto/ec2/image.py +350 -0
  132. data/packages/gsutil/boto/boto/ec2/instance.py +661 -0
  133. data/packages/gsutil/boto/boto/ec2/instanceinfo.py +51 -0
  134. data/packages/gsutil/boto/boto/ec2/instancestatus.py +207 -0
  135. data/packages/gsutil/boto/boto/ec2/keypair.py +113 -0
  136. data/packages/gsutil/boto/boto/ec2/launchspecification.py +105 -0
  137. data/packages/gsutil/boto/boto/ec2/networkinterface.py +247 -0
  138. data/packages/gsutil/boto/boto/ec2/placementgroup.py +51 -0
  139. data/packages/gsutil/boto/boto/ec2/regioninfo.py +34 -0
  140. data/packages/gsutil/boto/boto/ec2/reservedinstance.py +227 -0
  141. data/packages/gsutil/boto/boto/ec2/securitygroup.py +357 -0
  142. data/packages/gsutil/boto/boto/ec2/snapshot.py +170 -0
  143. data/packages/gsutil/boto/boto/ec2/spotdatafeedsubscription.py +63 -0
  144. data/packages/gsutil/boto/boto/ec2/spotinstancerequest.py +188 -0
  145. data/packages/gsutil/boto/boto/ec2/spotpricehistory.py +55 -0
  146. data/packages/gsutil/boto/boto/ec2/tag.py +87 -0
  147. data/packages/gsutil/boto/boto/ec2/vmtype.py +58 -0
  148. data/packages/gsutil/boto/boto/ec2/volume.py +293 -0
  149. data/packages/gsutil/boto/boto/ec2/volumestatus.py +200 -0
  150. data/packages/gsutil/boto/boto/ec2/zone.py +80 -0
  151. data/packages/gsutil/boto/boto/ecs/__init__.py +90 -0
  152. data/packages/gsutil/boto/boto/ecs/item.py +153 -0
  153. data/packages/gsutil/boto/boto/elasticache/__init__.py +62 -0
  154. data/packages/gsutil/boto/boto/elasticache/layer1.py +1252 -0
  155. data/packages/gsutil/boto/boto/elastictranscoder/__init__.py +62 -0
  156. data/packages/gsutil/boto/boto/elastictranscoder/exceptions.py +46 -0
  157. data/packages/gsutil/boto/boto/elastictranscoder/layer1.py +509 -0
  158. data/packages/gsutil/boto/boto/emr/__init__.py +73 -0
  159. data/packages/gsutil/boto/boto/emr/bootstrap_action.py +44 -0
  160. data/packages/gsutil/boto/boto/emr/connection.py +531 -0
  161. data/packages/gsutil/boto/boto/emr/emrobject.py +176 -0
  162. data/packages/gsutil/boto/boto/emr/instance_group.py +43 -0
  163. data/packages/gsutil/boto/boto/emr/step.py +281 -0
  164. data/packages/gsutil/boto/boto/exception.py +476 -0
  165. data/packages/gsutil/boto/boto/exception.pyc +0 -0
  166. data/packages/gsutil/boto/boto/file/README +49 -0
  167. data/packages/gsutil/boto/boto/file/__init__.py +28 -0
  168. data/packages/gsutil/boto/boto/file/bucket.py +112 -0
  169. data/packages/gsutil/boto/boto/file/connection.py +33 -0
  170. data/packages/gsutil/boto/boto/file/key.py +199 -0
  171. data/packages/gsutil/boto/boto/file/simpleresultset.py +30 -0
  172. data/packages/gsutil/boto/boto/fps/__init__.py +21 -0
  173. data/packages/gsutil/boto/boto/fps/connection.py +369 -0
  174. data/packages/gsutil/boto/boto/fps/exception.py +344 -0
  175. data/packages/gsutil/boto/boto/fps/response.py +175 -0
  176. data/packages/gsutil/boto/boto/glacier/__init__.py +57 -0
  177. data/packages/gsutil/boto/boto/glacier/concurrent.py +409 -0
  178. data/packages/gsutil/boto/boto/glacier/exceptions.py +58 -0
  179. data/packages/gsutil/boto/boto/glacier/job.py +152 -0
  180. data/packages/gsutil/boto/boto/glacier/layer1.py +637 -0
  181. data/packages/gsutil/boto/boto/glacier/layer2.py +93 -0
  182. data/packages/gsutil/boto/boto/glacier/response.py +48 -0
  183. data/packages/gsutil/boto/boto/glacier/utils.py +163 -0
  184. data/packages/gsutil/boto/boto/glacier/vault.py +387 -0
  185. data/packages/gsutil/boto/boto/glacier/writer.py +242 -0
  186. data/packages/gsutil/boto/boto/gs/__init__.py +22 -0
  187. data/packages/gsutil/boto/boto/gs/__init__.pyc +0 -0
  188. data/packages/gsutil/boto/boto/gs/acl.py +304 -0
  189. data/packages/gsutil/boto/boto/gs/acl.pyc +0 -0
  190. data/packages/gsutil/boto/boto/gs/bucket.py +870 -0
  191. data/packages/gsutil/boto/boto/gs/bucket.pyc +0 -0
  192. data/packages/gsutil/boto/boto/gs/bucketlistresultset.py +64 -0
  193. data/packages/gsutil/boto/boto/gs/bucketlistresultset.pyc +0 -0
  194. data/packages/gsutil/boto/boto/gs/connection.py +103 -0
  195. data/packages/gsutil/boto/boto/gs/connection.pyc +0 -0
  196. data/packages/gsutil/boto/boto/gs/cors.py +169 -0
  197. data/packages/gsutil/boto/boto/gs/cors.pyc +0 -0
  198. data/packages/gsutil/boto/boto/gs/key.py +704 -0
  199. data/packages/gsutil/boto/boto/gs/key.pyc +0 -0
  200. data/packages/gsutil/boto/boto/gs/resumable_upload_handler.py +659 -0
  201. data/packages/gsutil/boto/boto/gs/resumable_upload_handler.pyc +0 -0
  202. data/packages/gsutil/boto/boto/gs/user.py +54 -0
  203. data/packages/gsutil/boto/boto/gs/user.pyc +0 -0
  204. data/packages/gsutil/boto/boto/handler.py +44 -0
  205. data/packages/gsutil/boto/boto/handler.pyc +0 -0
  206. data/packages/gsutil/boto/boto/https_connection.py +124 -0
  207. data/packages/gsutil/boto/boto/https_connection.pyc +0 -0
  208. data/packages/gsutil/boto/boto/iam/__init__.py +74 -0
  209. data/packages/gsutil/boto/boto/iam/connection.py +1317 -0
  210. data/packages/gsutil/boto/boto/iam/summarymap.py +42 -0
  211. data/packages/gsutil/boto/boto/jsonresponse.py +163 -0
  212. data/packages/gsutil/boto/boto/jsonresponse.pyc +0 -0
  213. data/packages/gsutil/boto/boto/manage/__init__.py +23 -0
  214. data/packages/gsutil/boto/boto/manage/cmdshell.py +241 -0
  215. data/packages/gsutil/boto/boto/manage/propget.py +64 -0
  216. data/packages/gsutil/boto/boto/manage/server.py +556 -0
  217. data/packages/gsutil/boto/boto/manage/task.py +175 -0
  218. data/packages/gsutil/boto/boto/manage/test_manage.py +34 -0
  219. data/packages/gsutil/boto/boto/manage/volume.py +420 -0
  220. data/packages/gsutil/boto/boto/mashups/__init__.py +23 -0
  221. data/packages/gsutil/boto/boto/mashups/interactive.py +97 -0
  222. data/packages/gsutil/boto/boto/mashups/iobject.py +115 -0
  223. data/packages/gsutil/boto/boto/mashups/order.py +211 -0
  224. data/packages/gsutil/boto/boto/mashups/server.py +395 -0
  225. data/packages/gsutil/boto/boto/mturk/__init__.py +23 -0
  226. data/packages/gsutil/boto/boto/mturk/connection.py +1027 -0
  227. data/packages/gsutil/boto/boto/mturk/layoutparam.py +55 -0
  228. data/packages/gsutil/boto/boto/mturk/notification.py +103 -0
  229. data/packages/gsutil/boto/boto/mturk/price.py +48 -0
  230. data/packages/gsutil/boto/boto/mturk/qualification.py +137 -0
  231. data/packages/gsutil/boto/boto/mturk/question.py +455 -0
  232. data/packages/gsutil/boto/boto/mws/__init__.py +21 -0
  233. data/packages/gsutil/boto/boto/mws/connection.py +813 -0
  234. data/packages/gsutil/boto/boto/mws/exception.py +75 -0
  235. data/packages/gsutil/boto/boto/mws/response.py +655 -0
  236. data/packages/gsutil/boto/boto/plugin.py +90 -0
  237. data/packages/gsutil/boto/boto/plugin.pyc +0 -0
  238. data/packages/gsutil/boto/boto/provider.py +337 -0
  239. data/packages/gsutil/boto/boto/provider.pyc +0 -0
  240. data/packages/gsutil/boto/boto/pyami/__init__.py +22 -0
  241. data/packages/gsutil/boto/boto/pyami/__init__.pyc +0 -0
  242. data/packages/gsutil/boto/boto/pyami/bootstrap.py +134 -0
  243. data/packages/gsutil/boto/boto/pyami/config.py +229 -0
  244. data/packages/gsutil/boto/boto/pyami/config.pyc +0 -0
  245. data/packages/gsutil/boto/boto/pyami/copybot.cfg +60 -0
  246. data/packages/gsutil/boto/boto/pyami/copybot.py +97 -0
  247. data/packages/gsutil/boto/boto/pyami/helloworld.py +28 -0
  248. data/packages/gsutil/boto/boto/pyami/installers/__init__.py +64 -0
  249. data/packages/gsutil/boto/boto/pyami/installers/ubuntu/__init__.py +22 -0
  250. data/packages/gsutil/boto/boto/pyami/installers/ubuntu/apache.py +43 -0
  251. data/packages/gsutil/boto/boto/pyami/installers/ubuntu/ebs.py +238 -0
  252. data/packages/gsutil/boto/boto/pyami/installers/ubuntu/installer.py +96 -0
  253. data/packages/gsutil/boto/boto/pyami/installers/ubuntu/mysql.py +109 -0
  254. data/packages/gsutil/boto/boto/pyami/installers/ubuntu/trac.py +139 -0
  255. data/packages/gsutil/boto/boto/pyami/launch_ami.py +178 -0
  256. data/packages/gsutil/boto/boto/pyami/scriptbase.py +44 -0
  257. data/packages/gsutil/boto/boto/pyami/startup.py +60 -0
  258. data/packages/gsutil/boto/boto/rds/__init__.py +1194 -0
  259. data/packages/gsutil/boto/boto/rds/dbinstance.py +357 -0
  260. data/packages/gsutil/boto/boto/rds/dbsecuritygroup.py +177 -0
  261. data/packages/gsutil/boto/boto/rds/dbsnapshot.py +108 -0
  262. data/packages/gsutil/boto/boto/rds/event.py +49 -0
  263. data/packages/gsutil/boto/boto/rds/parametergroup.py +201 -0
  264. data/packages/gsutil/boto/boto/rds/regioninfo.py +32 -0
  265. data/packages/gsutil/boto/boto/regioninfo.py +63 -0
  266. data/packages/gsutil/boto/boto/regioninfo.pyc +0 -0
  267. data/packages/gsutil/boto/boto/resultset.py +169 -0
  268. data/packages/gsutil/boto/boto/resultset.pyc +0 -0
  269. data/packages/gsutil/boto/boto/roboto/__init__.py +1 -0
  270. data/packages/gsutil/boto/boto/roboto/awsqueryrequest.py +504 -0
  271. data/packages/gsutil/boto/boto/roboto/awsqueryservice.py +121 -0
  272. data/packages/gsutil/boto/boto/roboto/param.py +147 -0
  273. data/packages/gsutil/boto/boto/route53/__init__.py +75 -0
  274. data/packages/gsutil/boto/boto/route53/connection.py +403 -0
  275. data/packages/gsutil/boto/boto/route53/exception.py +27 -0
  276. data/packages/gsutil/boto/boto/route53/hostedzone.py +56 -0
  277. data/packages/gsutil/boto/boto/route53/record.py +306 -0
  278. data/packages/gsutil/boto/boto/route53/status.py +42 -0
  279. data/packages/gsutil/boto/boto/route53/zone.py +412 -0
  280. data/packages/gsutil/boto/boto/s3/__init__.py +84 -0
  281. data/packages/gsutil/boto/boto/s3/__init__.pyc +0 -0
  282. data/packages/gsutil/boto/boto/s3/acl.py +164 -0
  283. data/packages/gsutil/boto/boto/s3/acl.pyc +0 -0
  284. data/packages/gsutil/boto/boto/s3/bucket.py +1634 -0
  285. data/packages/gsutil/boto/boto/s3/bucket.pyc +0 -0
  286. data/packages/gsutil/boto/boto/s3/bucketlistresultset.py +139 -0
  287. data/packages/gsutil/boto/boto/s3/bucketlistresultset.pyc +0 -0
  288. data/packages/gsutil/boto/boto/s3/bucketlogging.py +83 -0
  289. data/packages/gsutil/boto/boto/s3/bucketlogging.pyc +0 -0
  290. data/packages/gsutil/boto/boto/s3/connection.py +540 -0
  291. data/packages/gsutil/boto/boto/s3/connection.pyc +0 -0
  292. data/packages/gsutil/boto/boto/s3/cors.py +210 -0
  293. data/packages/gsutil/boto/boto/s3/cors.pyc +0 -0
  294. data/packages/gsutil/boto/boto/s3/deletemarker.py +55 -0
  295. data/packages/gsutil/boto/boto/s3/deletemarker.pyc +0 -0
  296. data/packages/gsutil/boto/boto/s3/key.py +1712 -0
  297. data/packages/gsutil/boto/boto/s3/key.pyc +0 -0
  298. data/packages/gsutil/boto/boto/s3/keyfile.py +134 -0
  299. data/packages/gsutil/boto/boto/s3/keyfile.pyc +0 -0
  300. data/packages/gsutil/boto/boto/s3/lifecycle.py +231 -0
  301. data/packages/gsutil/boto/boto/s3/lifecycle.pyc +0 -0
  302. data/packages/gsutil/boto/boto/s3/multidelete.py +138 -0
  303. data/packages/gsutil/boto/boto/s3/multidelete.pyc +0 -0
  304. data/packages/gsutil/boto/boto/s3/multipart.py +315 -0
  305. data/packages/gsutil/boto/boto/s3/multipart.pyc +0 -0
  306. data/packages/gsutil/boto/boto/s3/prefix.py +42 -0
  307. data/packages/gsutil/boto/boto/s3/prefix.pyc +0 -0
  308. data/packages/gsutil/boto/boto/s3/resumable_download_handler.py +339 -0
  309. data/packages/gsutil/boto/boto/s3/resumable_download_handler.pyc +0 -0
  310. data/packages/gsutil/boto/boto/s3/tagging.py +71 -0
  311. data/packages/gsutil/boto/boto/s3/tagging.pyc +0 -0
  312. data/packages/gsutil/boto/boto/s3/user.py +49 -0
  313. data/packages/gsutil/boto/boto/s3/user.pyc +0 -0
  314. data/packages/gsutil/boto/boto/s3/website.py +237 -0
  315. data/packages/gsutil/boto/boto/s3/website.pyc +0 -0
  316. data/packages/gsutil/boto/boto/sdb/__init__.py +67 -0
  317. data/packages/gsutil/boto/boto/sdb/connection.py +617 -0
  318. data/packages/gsutil/boto/boto/sdb/db/__init__.py +20 -0
  319. data/packages/gsutil/boto/boto/sdb/db/blob.py +75 -0
  320. data/packages/gsutil/boto/boto/sdb/db/key.py +59 -0
  321. data/packages/gsutil/boto/boto/sdb/db/manager/__init__.py +85 -0
  322. data/packages/gsutil/boto/boto/sdb/db/manager/sdbmanager.py +732 -0
  323. data/packages/gsutil/boto/boto/sdb/db/manager/xmlmanager.py +517 -0
  324. data/packages/gsutil/boto/boto/sdb/db/model.py +294 -0
  325. data/packages/gsutil/boto/boto/sdb/db/property.py +703 -0
  326. data/packages/gsutil/boto/boto/sdb/db/query.py +85 -0
  327. data/packages/gsutil/boto/boto/sdb/db/sequence.py +226 -0
  328. data/packages/gsutil/boto/boto/sdb/db/test_db.py +231 -0
  329. data/packages/gsutil/boto/boto/sdb/domain.py +377 -0
  330. data/packages/gsutil/boto/boto/sdb/item.py +181 -0
  331. data/packages/gsutil/boto/boto/sdb/queryresultset.py +92 -0
  332. data/packages/gsutil/boto/boto/sdb/regioninfo.py +32 -0
  333. data/packages/gsutil/boto/boto/services/__init__.py +23 -0
  334. data/packages/gsutil/boto/boto/services/bs.py +179 -0
  335. data/packages/gsutil/boto/boto/services/message.py +58 -0
  336. data/packages/gsutil/boto/boto/services/result.py +136 -0
  337. data/packages/gsutil/boto/boto/services/service.py +161 -0
  338. data/packages/gsutil/boto/boto/services/servicedef.py +91 -0
  339. data/packages/gsutil/boto/boto/services/sonofmmm.cfg +43 -0
  340. data/packages/gsutil/boto/boto/services/sonofmmm.py +81 -0
  341. data/packages/gsutil/boto/boto/services/submit.py +88 -0
  342. data/packages/gsutil/boto/boto/ses/__init__.py +54 -0
  343. data/packages/gsutil/boto/boto/ses/connection.py +521 -0
  344. data/packages/gsutil/boto/boto/ses/exceptions.py +77 -0
  345. data/packages/gsutil/boto/boto/sns/__init__.py +78 -0
  346. data/packages/gsutil/boto/boto/sns/connection.py +431 -0
  347. data/packages/gsutil/boto/boto/sqs/__init__.py +56 -0
  348. data/packages/gsutil/boto/boto/sqs/attributes.py +46 -0
  349. data/packages/gsutil/boto/boto/sqs/batchresults.py +95 -0
  350. data/packages/gsutil/boto/boto/sqs/connection.py +417 -0
  351. data/packages/gsutil/boto/boto/sqs/jsonmessage.py +43 -0
  352. data/packages/gsutil/boto/boto/sqs/message.py +253 -0
  353. data/packages/gsutil/boto/boto/sqs/queue.py +478 -0
  354. data/packages/gsutil/boto/boto/sqs/regioninfo.py +32 -0
  355. data/packages/gsutil/boto/boto/storage_uri.py +835 -0
  356. data/packages/gsutil/boto/boto/storage_uri.pyc +0 -0
  357. data/packages/gsutil/boto/boto/sts/__init__.py +55 -0
  358. data/packages/gsutil/boto/boto/sts/connection.py +207 -0
  359. data/packages/gsutil/boto/boto/sts/credentials.py +215 -0
  360. data/packages/gsutil/boto/boto/swf/__init__.py +60 -0
  361. data/packages/gsutil/boto/boto/swf/exceptions.py +44 -0
  362. data/packages/gsutil/boto/boto/swf/layer1.py +1512 -0
  363. data/packages/gsutil/boto/boto/swf/layer1_decisions.py +287 -0
  364. data/packages/gsutil/boto/boto/swf/layer2.py +342 -0
  365. data/packages/gsutil/boto/boto/utils.py +927 -0
  366. data/packages/gsutil/boto/boto/utils.pyc +0 -0
  367. data/packages/gsutil/boto/boto/vpc/__init__.py +910 -0
  368. data/packages/gsutil/boto/boto/vpc/customergateway.py +54 -0
  369. data/packages/gsutil/boto/boto/vpc/dhcpoptions.py +72 -0
  370. data/packages/gsutil/boto/boto/vpc/internetgateway.py +72 -0
  371. data/packages/gsutil/boto/boto/vpc/routetable.py +109 -0
  372. data/packages/gsutil/boto/boto/vpc/subnet.py +57 -0
  373. data/packages/gsutil/boto/boto/vpc/vpc.py +54 -0
  374. data/packages/gsutil/boto/boto/vpc/vpnconnection.py +60 -0
  375. data/packages/gsutil/boto/boto/vpc/vpngateway.py +83 -0
  376. data/packages/gsutil/boto/docs/BotoCheatSheet.pdf +0 -0
  377. data/packages/gsutil/boto/docs/Makefile +89 -0
  378. data/packages/gsutil/boto/docs/make.bat +113 -0
  379. data/packages/gsutil/boto/docs/source/_templates/layout.html +3 -0
  380. data/packages/gsutil/boto/docs/source/autoscale_tut.rst +220 -0
  381. data/packages/gsutil/boto/docs/source/boto_config_tut.rst +125 -0
  382. data/packages/gsutil/boto/docs/source/boto_theme/static/boto.css_t +239 -0
  383. data/packages/gsutil/boto/docs/source/boto_theme/static/pygments.css +61 -0
  384. data/packages/gsutil/boto/docs/source/boto_theme/theme.conf +3 -0
  385. data/packages/gsutil/boto/docs/source/cloudfront_tut.rst +196 -0
  386. data/packages/gsutil/boto/docs/source/cloudsearch_tut.rst +411 -0
  387. data/packages/gsutil/boto/docs/source/cloudwatch_tut.rst +116 -0
  388. data/packages/gsutil/boto/docs/source/conf.py +32 -0
  389. data/packages/gsutil/boto/docs/source/contributing.rst +204 -0
  390. data/packages/gsutil/boto/docs/source/documentation.rst +59 -0
  391. data/packages/gsutil/boto/docs/source/dynamodb_tut.rst +339 -0
  392. data/packages/gsutil/boto/docs/source/ec2_tut.rst +86 -0
  393. data/packages/gsutil/boto/docs/source/elb_tut.rst +257 -0
  394. data/packages/gsutil/boto/docs/source/emr_tut.rst +108 -0
  395. data/packages/gsutil/boto/docs/source/index.rst +146 -0
  396. data/packages/gsutil/boto/docs/source/rds_tut.rst +108 -0
  397. data/packages/gsutil/boto/docs/source/ref/autoscale.rst +62 -0
  398. data/packages/gsutil/boto/docs/source/ref/beanstalk.rst +26 -0
  399. data/packages/gsutil/boto/docs/source/ref/boto.rst +47 -0
  400. data/packages/gsutil/boto/docs/source/ref/cloudformation.rst +34 -0
  401. data/packages/gsutil/boto/docs/source/ref/cloudfront.rst +68 -0
  402. data/packages/gsutil/boto/docs/source/ref/cloudsearch.rst +59 -0
  403. data/packages/gsutil/boto/docs/source/ref/cloudwatch.rst +27 -0
  404. data/packages/gsutil/boto/docs/source/ref/contrib.rst +32 -0
  405. data/packages/gsutil/boto/docs/source/ref/datapipeline.rst +26 -0
  406. data/packages/gsutil/boto/docs/source/ref/dynamodb.rst +61 -0
  407. data/packages/gsutil/boto/docs/source/ref/ec2.rst +140 -0
  408. data/packages/gsutil/boto/docs/source/ref/ecs.rst +19 -0
  409. data/packages/gsutil/boto/docs/source/ref/elasticache.rst +19 -0
  410. data/packages/gsutil/boto/docs/source/ref/elastictranscoder.rst +26 -0
  411. data/packages/gsutil/boto/docs/source/ref/elb.rst +47 -0
  412. data/packages/gsutil/boto/docs/source/ref/emr.rst +34 -0
  413. data/packages/gsutil/boto/docs/source/ref/file.rst +34 -0
  414. data/packages/gsutil/boto/docs/source/ref/fps.rst +19 -0
  415. data/packages/gsutil/boto/docs/source/ref/glacier.rst +63 -0
  416. data/packages/gsutil/boto/docs/source/ref/gs.rst +72 -0
  417. data/packages/gsutil/boto/docs/source/ref/iam.rst +27 -0
  418. data/packages/gsutil/boto/docs/source/ref/index.rst +40 -0
  419. data/packages/gsutil/boto/docs/source/ref/manage.rst +47 -0
  420. data/packages/gsutil/boto/docs/source/ref/mturk.rst +54 -0
  421. data/packages/gsutil/boto/docs/source/ref/mws.rst +33 -0
  422. data/packages/gsutil/boto/docs/source/ref/pyami.rst +103 -0
  423. data/packages/gsutil/boto/docs/source/ref/rds.rst +47 -0
  424. data/packages/gsutil/boto/docs/source/ref/route53.rst +34 -0
  425. data/packages/gsutil/boto/docs/source/ref/s3.rst +111 -0
  426. data/packages/gsutil/boto/docs/source/ref/sdb.rst +45 -0
  427. data/packages/gsutil/boto/docs/source/ref/sdb_db.rst +83 -0
  428. data/packages/gsutil/boto/docs/source/ref/services.rst +61 -0
  429. data/packages/gsutil/boto/docs/source/ref/ses.rst +21 -0
  430. data/packages/gsutil/boto/docs/source/ref/sns.rst +17 -0
  431. data/packages/gsutil/boto/docs/source/ref/sqs.rst +61 -0
  432. data/packages/gsutil/boto/docs/source/ref/sts.rst +25 -0
  433. data/packages/gsutil/boto/docs/source/ref/swf.rst +22 -0
  434. data/packages/gsutil/boto/docs/source/ref/vpc.rst +54 -0
  435. data/packages/gsutil/boto/docs/source/s3_tut.rst +450 -0
  436. data/packages/gsutil/boto/docs/source/security_groups.rst +82 -0
  437. data/packages/gsutil/boto/docs/source/ses_tut.rst +171 -0
  438. data/packages/gsutil/boto/docs/source/simpledb_tut.rst +188 -0
  439. data/packages/gsutil/boto/docs/source/sqs_tut.rst +246 -0
  440. data/packages/gsutil/boto/docs/source/vpc_tut.rst +100 -0
  441. data/packages/gsutil/boto/pylintrc +305 -0
  442. data/packages/gsutil/boto/requirements.txt +10 -0
  443. data/packages/gsutil/boto/setup.py +89 -0
  444. data/packages/gsutil/boto/tests/__init__.py +20 -0
  445. data/packages/gsutil/boto/tests/db/test_lists.py +96 -0
  446. data/packages/gsutil/boto/tests/db/test_password.py +128 -0
  447. data/packages/gsutil/boto/tests/db/test_query.py +152 -0
  448. data/packages/gsutil/boto/tests/db/test_sequence.py +109 -0
  449. data/packages/gsutil/boto/tests/devpay/__init__.py +0 -0
  450. data/packages/gsutil/boto/tests/devpay/test_s3.py +181 -0
  451. data/packages/gsutil/boto/tests/fps/__init__.py +0 -0
  452. data/packages/gsutil/boto/tests/fps/test.py +100 -0
  453. data/packages/gsutil/boto/tests/fps/test_verify_signature.py +12 -0
  454. data/packages/gsutil/boto/tests/integration/__init__.py +0 -0
  455. data/packages/gsutil/boto/tests/integration/beanstalk/test_wrapper.py +209 -0
  456. data/packages/gsutil/boto/tests/integration/cloudformation/__init__.py +21 -0
  457. data/packages/gsutil/boto/tests/integration/cloudformation/test_cert_verification.py +40 -0
  458. data/packages/gsutil/boto/tests/integration/cloudformation/test_connection.py +110 -0
  459. data/packages/gsutil/boto/tests/integration/cloudsearch/__init__.py +21 -0
  460. data/packages/gsutil/boto/tests/integration/cloudsearch/test_cert_verification.py +40 -0
  461. data/packages/gsutil/boto/tests/integration/datapipeline/test_layer1.py +122 -0
  462. data/packages/gsutil/boto/tests/integration/dynamodb/__init__.py +20 -0
  463. data/packages/gsutil/boto/tests/integration/dynamodb/test_cert_verification.py +40 -0
  464. data/packages/gsutil/boto/tests/integration/dynamodb/test_layer1.py +266 -0
  465. data/packages/gsutil/boto/tests/integration/dynamodb/test_layer2.py +484 -0
  466. data/packages/gsutil/boto/tests/integration/dynamodb/test_table.py +84 -0
  467. data/packages/gsutil/boto/tests/integration/ec2/__init__.py +20 -0
  468. data/packages/gsutil/boto/tests/integration/ec2/autoscale/__init__.py +21 -0
  469. data/packages/gsutil/boto/tests/integration/ec2/autoscale/test_cert_verification.py +40 -0
  470. data/packages/gsutil/boto/tests/integration/ec2/autoscale/test_connection.py +167 -0
  471. data/packages/gsutil/boto/tests/integration/ec2/cloudwatch/__init__.py +20 -0
  472. data/packages/gsutil/boto/tests/integration/ec2/cloudwatch/test_cert_verification.py +40 -0
  473. data/packages/gsutil/boto/tests/integration/ec2/cloudwatch/test_connection.py +277 -0
  474. data/packages/gsutil/boto/tests/integration/ec2/elb/__init__.py +20 -0
  475. data/packages/gsutil/boto/tests/integration/ec2/elb/test_cert_verification.py +40 -0
  476. data/packages/gsutil/boto/tests/integration/ec2/elb/test_connection.py +130 -0
  477. data/packages/gsutil/boto/tests/integration/ec2/test_cert_verification.py +40 -0
  478. data/packages/gsutil/boto/tests/integration/ec2/test_connection.py +192 -0
  479. data/packages/gsutil/boto/tests/integration/ec2/vpc/__init__.py +0 -0
  480. data/packages/gsutil/boto/tests/integration/ec2/vpc/test_connection.py +95 -0
  481. data/packages/gsutil/boto/tests/integration/elasticache/__init__.py +0 -0
  482. data/packages/gsutil/boto/tests/integration/elasticache/test_layer1.py +67 -0
  483. data/packages/gsutil/boto/tests/integration/elastictranscoder/__init__.py +0 -0
  484. data/packages/gsutil/boto/tests/integration/elastictranscoder/test_cert_verification.py +35 -0
  485. data/packages/gsutil/boto/tests/integration/elastictranscoder/test_layer1.py +115 -0
  486. data/packages/gsutil/boto/tests/integration/emr/__init__.py +20 -0
  487. data/packages/gsutil/boto/tests/integration/emr/test_cert_verification.py +40 -0
  488. data/packages/gsutil/boto/tests/integration/glacier/__init__.py +22 -0
  489. data/packages/gsutil/boto/tests/integration/glacier/test_cert_verification.py +40 -0
  490. data/packages/gsutil/boto/tests/integration/glacier/test_layer1.py +44 -0
  491. data/packages/gsutil/boto/tests/integration/glacier/test_layer2.py +45 -0
  492. data/packages/gsutil/boto/tests/integration/gs/__init__.py +0 -0
  493. data/packages/gsutil/boto/tests/integration/gs/cb_test_harness.py +71 -0
  494. data/packages/gsutil/boto/tests/integration/gs/test_basic.py +379 -0
  495. data/packages/gsutil/boto/tests/integration/gs/test_generation_conditionals.py +399 -0
  496. data/packages/gsutil/boto/tests/integration/gs/test_resumable_downloads.py +358 -0
  497. data/packages/gsutil/boto/tests/integration/gs/test_resumable_uploads.py +525 -0
  498. data/packages/gsutil/boto/tests/integration/gs/test_storage_uri.py +125 -0
  499. data/packages/gsutil/boto/tests/integration/gs/test_versioning.py +268 -0
  500. data/packages/gsutil/boto/tests/integration/gs/testcase.py +116 -0
  501. data/packages/gsutil/boto/tests/integration/gs/util.py +63 -0
  502. data/packages/gsutil/boto/tests/integration/iam/__init__.py +20 -0
  503. data/packages/gsutil/boto/tests/integration/iam/test_cert_verification.py +40 -0
  504. data/packages/gsutil/boto/tests/integration/mws/__init__.py +0 -0
  505. data/packages/gsutil/boto/tests/integration/mws/test.py +100 -0
  506. data/packages/gsutil/boto/tests/integration/rds/__init__.py +21 -0
  507. data/packages/gsutil/boto/tests/integration/rds/test_cert_verification.py +40 -0
  508. data/packages/gsutil/boto/tests/integration/route53/__init__.py +20 -0
  509. data/packages/gsutil/boto/tests/integration/route53/test_cert_verification.py +40 -0
  510. data/packages/gsutil/boto/tests/integration/route53/test_zone.py +132 -0
  511. data/packages/gsutil/boto/tests/integration/s3/__init__.py +20 -0
  512. data/packages/gsutil/boto/tests/integration/s3/mock_storage_service.py +589 -0
  513. data/packages/gsutil/boto/tests/integration/s3/other_cacerts.txt +70 -0
  514. data/packages/gsutil/boto/tests/integration/s3/test_bucket.py +263 -0
  515. data/packages/gsutil/boto/tests/integration/s3/test_cert_verification.py +40 -0
  516. data/packages/gsutil/boto/tests/integration/s3/test_connection.py +245 -0
  517. data/packages/gsutil/boto/tests/integration/s3/test_cors.py +78 -0
  518. data/packages/gsutil/boto/tests/integration/s3/test_encryption.py +115 -0
  519. data/packages/gsutil/boto/tests/integration/s3/test_https_cert_validation.py +141 -0
  520. data/packages/gsutil/boto/tests/integration/s3/test_key.py +375 -0
  521. data/packages/gsutil/boto/tests/integration/s3/test_mfa.py +95 -0
  522. data/packages/gsutil/boto/tests/integration/s3/test_multidelete.py +181 -0
  523. data/packages/gsutil/boto/tests/integration/s3/test_multipart.py +139 -0
  524. data/packages/gsutil/boto/tests/integration/s3/test_pool.py +246 -0
  525. data/packages/gsutil/boto/tests/integration/s3/test_versioning.py +158 -0
  526. data/packages/gsutil/boto/tests/integration/sdb/__init__.py +20 -0
  527. data/packages/gsutil/boto/tests/integration/sdb/test_cert_verification.py +40 -0
  528. data/packages/gsutil/boto/tests/integration/sdb/test_connection.py +119 -0
  529. data/packages/gsutil/boto/tests/integration/ses/__init__.py +0 -0
  530. data/packages/gsutil/boto/tests/integration/ses/test_cert_verification.py +40 -0
  531. data/packages/gsutil/boto/tests/integration/ses/test_connection.py +38 -0
  532. data/packages/gsutil/boto/tests/integration/sns/__init__.py +20 -0
  533. data/packages/gsutil/boto/tests/integration/sns/test_cert_verification.py +40 -0
  534. data/packages/gsutil/boto/tests/integration/sqs/__init__.py +20 -0
  535. data/packages/gsutil/boto/tests/integration/sqs/test_cert_verification.py +40 -0
  536. data/packages/gsutil/boto/tests/integration/sqs/test_connection.py +217 -0
  537. data/packages/gsutil/boto/tests/integration/sts/__init__.py +20 -0
  538. data/packages/gsutil/boto/tests/integration/sts/test_cert_verification.py +40 -0
  539. data/packages/gsutil/boto/tests/integration/sts/test_session_token.py +65 -0
  540. data/packages/gsutil/boto/tests/integration/swf/__init__.py +0 -0
  541. data/packages/gsutil/boto/tests/integration/swf/test_cert_verification.py +40 -0
  542. data/packages/gsutil/boto/tests/integration/swf/test_layer1.py +246 -0
  543. data/packages/gsutil/boto/tests/integration/swf/test_layer1_workflow_execution.py +173 -0
  544. data/packages/gsutil/boto/tests/mturk/__init__.py +0 -0
  545. data/packages/gsutil/boto/tests/mturk/_init_environment.py +28 -0
  546. data/packages/gsutil/boto/tests/mturk/all_tests.py +24 -0
  547. data/packages/gsutil/boto/tests/mturk/cleanup_tests.py +47 -0
  548. data/packages/gsutil/boto/tests/mturk/common.py +45 -0
  549. data/packages/gsutil/boto/tests/mturk/create_free_text_question_regex.doctest +100 -0
  550. data/packages/gsutil/boto/tests/mturk/create_hit.doctest +92 -0
  551. data/packages/gsutil/boto/tests/mturk/create_hit_binary.doctest +94 -0
  552. data/packages/gsutil/boto/tests/mturk/create_hit_external.py +21 -0
  553. data/packages/gsutil/boto/tests/mturk/create_hit_from_hit_type.doctest +103 -0
  554. data/packages/gsutil/boto/tests/mturk/create_hit_test.py +21 -0
  555. data/packages/gsutil/boto/tests/mturk/create_hit_with_qualifications.py +16 -0
  556. data/packages/gsutil/boto/tests/mturk/hit_persistence.py +27 -0
  557. data/packages/gsutil/boto/tests/mturk/mocks.py +11 -0
  558. data/packages/gsutil/boto/tests/mturk/reviewable_hits.doctest +129 -0
  559. data/packages/gsutil/boto/tests/mturk/run-doctest.py +13 -0
  560. data/packages/gsutil/boto/tests/mturk/search_hits.doctest +16 -0
  561. data/packages/gsutil/boto/tests/mturk/selenium_support.py +61 -0
  562. data/packages/gsutil/boto/tests/mturk/support.py +7 -0
  563. data/packages/gsutil/boto/tests/mturk/test_disable_hit.py +11 -0
  564. data/packages/gsutil/boto/tests/test.py +59 -0
  565. data/packages/gsutil/boto/tests/unit/__init__.py +79 -0
  566. data/packages/gsutil/boto/tests/unit/auth/__init__.py +0 -0
  567. data/packages/gsutil/boto/tests/unit/auth/test_sigv4.py +73 -0
  568. data/packages/gsutil/boto/tests/unit/beanstalk/__init__.py +0 -0
  569. data/packages/gsutil/boto/tests/unit/beanstalk/test_layer1.py +128 -0
  570. data/packages/gsutil/boto/tests/unit/cloudformation/__init__.py +0 -0
  571. data/packages/gsutil/boto/tests/unit/cloudformation/test_connection.py +605 -0
  572. data/packages/gsutil/boto/tests/unit/cloudformation/test_stack.py +63 -0
  573. data/packages/gsutil/boto/tests/unit/cloudfront/__init__.py +0 -0
  574. data/packages/gsutil/boto/tests/unit/cloudfront/test_invalidation_list.py +113 -0
  575. data/packages/gsutil/boto/tests/unit/cloudfront/test_signed_urls.py +354 -0
  576. data/packages/gsutil/boto/tests/unit/cloudsearch/__init__.py +1 -0
  577. data/packages/gsutil/boto/tests/unit/cloudsearch/test_connection.py +241 -0
  578. data/packages/gsutil/boto/tests/unit/cloudsearch/test_document.py +324 -0
  579. data/packages/gsutil/boto/tests/unit/cloudsearch/test_search.py +325 -0
  580. data/packages/gsutil/boto/tests/unit/dynamodb/__init__.py +0 -0
  581. data/packages/gsutil/boto/tests/unit/dynamodb/test_batch.py +103 -0
  582. data/packages/gsutil/boto/tests/unit/dynamodb/test_layer2.py +119 -0
  583. data/packages/gsutil/boto/tests/unit/dynamodb/test_types.py +82 -0
  584. data/packages/gsutil/boto/tests/unit/ec2/__init__.py +0 -0
  585. data/packages/gsutil/boto/tests/unit/ec2/autoscale/__init__.py +0 -0
  586. data/packages/gsutil/boto/tests/unit/ec2/autoscale/test_group.py +162 -0
  587. data/packages/gsutil/boto/tests/unit/ec2/test_address.py +39 -0
  588. data/packages/gsutil/boto/tests/unit/ec2/test_blockdevicemapping.py +79 -0
  589. data/packages/gsutil/boto/tests/unit/ec2/test_connection.py +480 -0
  590. data/packages/gsutil/boto/tests/unit/ec2/test_instance.py +243 -0
  591. data/packages/gsutil/boto/tests/unit/ec2/test_networkinterface.py +140 -0
  592. data/packages/gsutil/boto/tests/unit/ec2/test_volume.py +248 -0
  593. data/packages/gsutil/boto/tests/unit/emr/test_emr_responses.py +373 -0
  594. data/packages/gsutil/boto/tests/unit/glacier/__init__.py +0 -0
  595. data/packages/gsutil/boto/tests/unit/glacier/test_concurrent.py +120 -0
  596. data/packages/gsutil/boto/tests/unit/glacier/test_job.py +60 -0
  597. data/packages/gsutil/boto/tests/unit/glacier/test_layer1.py +98 -0
  598. data/packages/gsutil/boto/tests/unit/glacier/test_layer2.py +266 -0
  599. data/packages/gsutil/boto/tests/unit/glacier/test_utils.py +116 -0
  600. data/packages/gsutil/boto/tests/unit/glacier/test_vault.py +100 -0
  601. data/packages/gsutil/boto/tests/unit/glacier/test_writer.py +185 -0
  602. data/packages/gsutil/boto/tests/unit/provider/__init__.py +0 -0
  603. data/packages/gsutil/boto/tests/unit/provider/test_provider.py +176 -0
  604. data/packages/gsutil/boto/tests/unit/rds/__init__.py +0 -0
  605. data/packages/gsutil/boto/tests/unit/rds/test_connection.py +131 -0
  606. data/packages/gsutil/boto/tests/unit/s3/__init__.py +0 -0
  607. data/packages/gsutil/boto/tests/unit/s3/test_cors_configuration.py +77 -0
  608. data/packages/gsutil/boto/tests/unit/s3/test_key.py +75 -0
  609. data/packages/gsutil/boto/tests/unit/s3/test_keyfile.py +101 -0
  610. data/packages/gsutil/boto/tests/unit/s3/test_lifecycle.py +97 -0
  611. data/packages/gsutil/boto/tests/unit/s3/test_tagging.py +47 -0
  612. data/packages/gsutil/boto/tests/unit/s3/test_uri.py +257 -0
  613. data/packages/gsutil/boto/tests/unit/s3/test_website.py +188 -0
  614. data/packages/gsutil/boto/tests/unit/sns/__init__.py +0 -0
  615. data/packages/gsutil/boto/tests/unit/sns/test_connection.py +99 -0
  616. data/packages/gsutil/boto/tests/unit/sqs/__init__.py +0 -0
  617. data/packages/gsutil/boto/tests/unit/sqs/test_connection.py +98 -0
  618. data/packages/gsutil/boto/tests/unit/sqs/test_queue.py +40 -0
  619. data/packages/gsutil/boto/tests/unit/sts/test_connection.py +74 -0
  620. data/packages/gsutil/boto/tests/unit/test_connection.py +60 -0
  621. data/packages/gsutil/boto/tests/unit/utils/test_utils.py +109 -0
  622. data/packages/gsutil/boto/tox.ini +8 -0
  623. data/packages/gsutil/gslib/README +5 -0
  624. data/packages/gsutil/gslib/__init__.py +22 -0
  625. data/packages/gsutil/gslib/__init__.pyc +0 -0
  626. data/packages/gsutil/gslib/addlhelp/__init__.py +15 -0
  627. data/packages/gsutil/gslib/addlhelp/acls.py +234 -0
  628. data/packages/gsutil/gslib/addlhelp/anon.py +57 -0
  629. data/packages/gsutil/gslib/addlhelp/command_opts.py +116 -0
  630. data/packages/gsutil/gslib/addlhelp/dev.py +139 -0
  631. data/packages/gsutil/gslib/addlhelp/metadata.py +186 -0
  632. data/packages/gsutil/gslib/addlhelp/naming.py +173 -0
  633. data/packages/gsutil/gslib/addlhelp/prod.py +160 -0
  634. data/packages/gsutil/gslib/addlhelp/projects.py +130 -0
  635. data/packages/gsutil/gslib/addlhelp/subdirs.py +110 -0
  636. data/packages/gsutil/gslib/addlhelp/support.py +86 -0
  637. data/packages/gsutil/gslib/addlhelp/versioning.py +242 -0
  638. data/packages/gsutil/gslib/addlhelp/wildcards.py +170 -0
  639. data/packages/gsutil/gslib/bucket_listing_ref.py +175 -0
  640. data/packages/gsutil/gslib/bucket_listing_ref.pyc +0 -0
  641. data/packages/gsutil/gslib/command.py +722 -0
  642. data/packages/gsutil/gslib/command.pyc +0 -0
  643. data/packages/gsutil/gslib/command_runner.py +101 -0
  644. data/packages/gsutil/gslib/command_runner.pyc +0 -0
  645. data/packages/gsutil/gslib/commands/__init__.py +15 -0
  646. data/packages/gsutil/gslib/commands/__init__.pyc +0 -0
  647. data/packages/gsutil/gslib/commands/cat.py +131 -0
  648. data/packages/gsutil/gslib/commands/cat.pyc +0 -0
  649. data/packages/gsutil/gslib/commands/chacl.py +532 -0
  650. data/packages/gsutil/gslib/commands/chacl.pyc +0 -0
  651. data/packages/gsutil/gslib/commands/config.py +694 -0
  652. data/packages/gsutil/gslib/commands/config.pyc +0 -0
  653. data/packages/gsutil/gslib/commands/cp.py +1818 -0
  654. data/packages/gsutil/gslib/commands/cp.pyc +0 -0
  655. data/packages/gsutil/gslib/commands/disablelogging.py +101 -0
  656. data/packages/gsutil/gslib/commands/disablelogging.pyc +0 -0
  657. data/packages/gsutil/gslib/commands/enablelogging.py +149 -0
  658. data/packages/gsutil/gslib/commands/enablelogging.pyc +0 -0
  659. data/packages/gsutil/gslib/commands/getacl.py +82 -0
  660. data/packages/gsutil/gslib/commands/getacl.pyc +0 -0
  661. data/packages/gsutil/gslib/commands/getcors.py +121 -0
  662. data/packages/gsutil/gslib/commands/getcors.pyc +0 -0
  663. data/packages/gsutil/gslib/commands/getdefacl.py +86 -0
  664. data/packages/gsutil/gslib/commands/getdefacl.pyc +0 -0
  665. data/packages/gsutil/gslib/commands/getlogging.py +137 -0
  666. data/packages/gsutil/gslib/commands/getlogging.pyc +0 -0
  667. data/packages/gsutil/gslib/commands/getversioning.py +116 -0
  668. data/packages/gsutil/gslib/commands/getversioning.pyc +0 -0
  669. data/packages/gsutil/gslib/commands/getwebcfg.py +122 -0
  670. data/packages/gsutil/gslib/commands/getwebcfg.pyc +0 -0
  671. data/packages/gsutil/gslib/commands/help.py +218 -0
  672. data/packages/gsutil/gslib/commands/help.pyc +0 -0
  673. data/packages/gsutil/gslib/commands/ls.py +578 -0
  674. data/packages/gsutil/gslib/commands/ls.pyc +0 -0
  675. data/packages/gsutil/gslib/commands/mb.py +172 -0
  676. data/packages/gsutil/gslib/commands/mb.pyc +0 -0
  677. data/packages/gsutil/gslib/commands/mv.py +159 -0
  678. data/packages/gsutil/gslib/commands/mv.pyc +0 -0
  679. data/packages/gsutil/gslib/commands/perfdiag.py +903 -0
  680. data/packages/gsutil/gslib/commands/perfdiag.pyc +0 -0
  681. data/packages/gsutil/gslib/commands/rb.py +113 -0
  682. data/packages/gsutil/gslib/commands/rb.pyc +0 -0
  683. data/packages/gsutil/gslib/commands/rm.py +239 -0
  684. data/packages/gsutil/gslib/commands/rm.pyc +0 -0
  685. data/packages/gsutil/gslib/commands/setacl.py +138 -0
  686. data/packages/gsutil/gslib/commands/setacl.pyc +0 -0
  687. data/packages/gsutil/gslib/commands/setcors.py +145 -0
  688. data/packages/gsutil/gslib/commands/setcors.pyc +0 -0
  689. data/packages/gsutil/gslib/commands/setdefacl.py +105 -0
  690. data/packages/gsutil/gslib/commands/setdefacl.pyc +0 -0
  691. data/packages/gsutil/gslib/commands/setmeta.py +428 -0
  692. data/packages/gsutil/gslib/commands/setmeta.pyc +0 -0
  693. data/packages/gsutil/gslib/commands/setversioning.py +114 -0
  694. data/packages/gsutil/gslib/commands/setversioning.pyc +0 -0
  695. data/packages/gsutil/gslib/commands/setwebcfg.py +190 -0
  696. data/packages/gsutil/gslib/commands/setwebcfg.pyc +0 -0
  697. data/packages/gsutil/gslib/commands/test.py +228 -0
  698. data/packages/gsutil/gslib/commands/test.pyc +0 -0
  699. data/packages/gsutil/gslib/commands/update.py +305 -0
  700. data/packages/gsutil/gslib/commands/update.pyc +0 -0
  701. data/packages/gsutil/gslib/commands/version.py +150 -0
  702. data/packages/gsutil/gslib/commands/version.pyc +0 -0
  703. data/packages/gsutil/gslib/exception.py +76 -0
  704. data/packages/gsutil/gslib/exception.pyc +0 -0
  705. data/packages/gsutil/gslib/help_provider.py +81 -0
  706. data/packages/gsutil/gslib/help_provider.pyc +0 -0
  707. data/packages/gsutil/gslib/name_expansion.py +550 -0
  708. data/packages/gsutil/gslib/name_expansion.pyc +0 -0
  709. data/packages/gsutil/gslib/no_op_auth_plugin.py +30 -0
  710. data/packages/gsutil/gslib/plurality_checkable_iterator.py +56 -0
  711. data/packages/gsutil/gslib/plurality_checkable_iterator.pyc +0 -0
  712. data/packages/gsutil/gslib/project_id.py +67 -0
  713. data/packages/gsutil/gslib/project_id.pyc +0 -0
  714. data/packages/gsutil/gslib/storage_uri_builder.py +56 -0
  715. data/packages/gsutil/gslib/storage_uri_builder.pyc +0 -0
  716. data/packages/gsutil/gslib/tests/__init__.py +15 -0
  717. data/packages/gsutil/gslib/tests/__init__.pyc +0 -0
  718. data/packages/gsutil/gslib/tests/test_chacl.py +236 -0
  719. data/packages/gsutil/gslib/tests/test_cp.py +267 -0
  720. data/packages/gsutil/gslib/tests/test_data/test.gif +0 -0
  721. data/packages/gsutil/gslib/tests/test_data/test.mp3 +0 -0
  722. data/packages/gsutil/gslib/tests/test_ls.py +66 -0
  723. data/packages/gsutil/gslib/tests/test_mv.py +69 -0
  724. data/packages/gsutil/gslib/tests/test_naming.py +989 -0
  725. data/packages/gsutil/gslib/tests/test_perfdiag.py +41 -0
  726. data/packages/gsutil/gslib/tests/test_plurality_checkable_iterator.py +67 -0
  727. data/packages/gsutil/gslib/tests/test_rm.py +143 -0
  728. data/packages/gsutil/gslib/tests/test_setacl.py +152 -0
  729. data/packages/gsutil/gslib/tests/test_setcors.py +168 -0
  730. data/packages/gsutil/gslib/tests/test_setmeta.py +91 -0
  731. data/packages/gsutil/gslib/tests/test_setversioning.py +44 -0
  732. data/packages/gsutil/gslib/tests/test_setwebcfg.py +63 -0
  733. data/packages/gsutil/gslib/tests/test_thread_pool.py +92 -0
  734. data/packages/gsutil/gslib/tests/test_wildcard_iterator.py +364 -0
  735. data/packages/gsutil/gslib/tests/testcase/__init__.py +18 -0
  736. data/packages/gsutil/gslib/tests/testcase/base.py +89 -0
  737. data/packages/gsutil/gslib/tests/testcase/integration_testcase.py +197 -0
  738. data/packages/gsutil/gslib/tests/testcase/unit_testcase.py +230 -0
  739. data/packages/gsutil/gslib/tests/util.py +125 -0
  740. data/packages/gsutil/gslib/tests/util.pyc +0 -0
  741. data/packages/gsutil/gslib/thread_pool.py +79 -0
  742. data/packages/gsutil/gslib/thread_pool.pyc +0 -0
  743. data/packages/gsutil/gslib/util.py +151 -0
  744. data/packages/gsutil/gslib/util.pyc +0 -0
  745. data/packages/gsutil/gslib/wildcard_iterator.py +492 -0
  746. data/packages/gsutil/gslib/wildcard_iterator.pyc +0 -0
  747. data/packages/gsutil/gsutil +377 -0
  748. data/packages/gsutil/gsutil.spec.in +75 -0
  749. data/packages/gsutil/oauth2_plugin/__init__.py +22 -0
  750. data/packages/gsutil/oauth2_plugin/__init__.pyc +0 -0
  751. data/packages/gsutil/oauth2_plugin/oauth2_client.py +642 -0
  752. data/packages/gsutil/oauth2_plugin/oauth2_client.pyc +0 -0
  753. data/packages/gsutil/oauth2_plugin/oauth2_client_test.py +374 -0
  754. data/packages/gsutil/oauth2_plugin/oauth2_helper.py +110 -0
  755. data/packages/gsutil/oauth2_plugin/oauth2_helper.pyc +0 -0
  756. data/packages/gsutil/oauth2_plugin/oauth2_plugin.py +24 -0
  757. data/packages/gsutil/oauth2_plugin/oauth2_plugin.pyc +0 -0
  758. data/packages/gsutil/pkg_gen.sh +54 -0
  759. data/packages/gsutil/pkg_util.py +60 -0
  760. data/packages/gsutil/setup.py +141 -0
  761. data/packages/gsutil/third_party/__init__.py +0 -0
  762. data/packages/gsutil/third_party/__init__.pyc +0 -0
  763. data/packages/gsutil/third_party/fancy_urllib/README +21 -0
  764. data/packages/gsutil/third_party/fancy_urllib/__init__.py +398 -0
  765. data/packages/gsutil/third_party/fancy_urllib/__init__.pyc +0 -0
  766. data/tasks/rubygem.rake +3 -1
  767. metadata +770 -7
  768. metadata.gz.sig +0 -0
@@ -0,0 +1,60 @@
1
+ # Copyright (c) 2006,2007 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
+ import sys
23
+ import boto
24
+ from boto.utils import find_class
25
+ from boto import config
26
+ from boto.pyami.scriptbase import ScriptBase
27
+
28
+
29
+ class Startup(ScriptBase):
30
+
31
+ def run_scripts(self):
32
+ scripts = config.get('Pyami', 'scripts')
33
+ if scripts:
34
+ for script in scripts.split(','):
35
+ script = script.strip(" ")
36
+ try:
37
+ pos = script.rfind('.')
38
+ if pos > 0:
39
+ mod_name = script[0:pos]
40
+ cls_name = script[pos+1:]
41
+ cls = find_class(mod_name, cls_name)
42
+ boto.log.info('Running Script: %s' % script)
43
+ s = cls()
44
+ s.main()
45
+ else:
46
+ boto.log.warning('Trouble parsing script: %s' % script)
47
+ except Exception, e:
48
+ boto.log.exception('Problem Running Script: %s. Startup process halting.' % script)
49
+ raise e
50
+
51
+ def main(self):
52
+ self.run_scripts()
53
+ self.notify('Startup Completed for %s' % config.get('Instance', 'instance-id'))
54
+
55
+ if __name__ == "__main__":
56
+ if not config.has_section('loggers'):
57
+ boto.set_file_logger('startup', '/var/log/boto.log')
58
+ sys.path.append(config.get('Pyami', 'working_dir'))
59
+ su = Startup()
60
+ su.main()
@@ -0,0 +1,1194 @@
1
+ # Copyright (c) 2009-2012 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
+ import urllib
24
+ from boto.connection import AWSQueryConnection
25
+ from boto.rds.dbinstance import DBInstance
26
+ from boto.rds.dbsecuritygroup import DBSecurityGroup
27
+ from boto.rds.parametergroup import ParameterGroup
28
+ from boto.rds.dbsnapshot import DBSnapshot
29
+ from boto.rds.event import Event
30
+ from boto.rds.regioninfo import RDSRegionInfo
31
+
32
+
33
+ def regions():
34
+ """
35
+ Get all available regions for the RDS service.
36
+
37
+ :rtype: list
38
+ :return: A list of :class:`boto.rds.regioninfo.RDSRegionInfo`
39
+ """
40
+ return [RDSRegionInfo(name='us-east-1',
41
+ endpoint='rds.amazonaws.com'),
42
+ RDSRegionInfo(name='eu-west-1',
43
+ endpoint='rds.eu-west-1.amazonaws.com'),
44
+ RDSRegionInfo(name='us-west-1',
45
+ endpoint='rds.us-west-1.amazonaws.com'),
46
+ RDSRegionInfo(name='us-west-2',
47
+ endpoint='rds.us-west-2.amazonaws.com'),
48
+ RDSRegionInfo(name='sa-east-1',
49
+ endpoint='rds.sa-east-1.amazonaws.com'),
50
+ RDSRegionInfo(name='ap-northeast-1',
51
+ endpoint='rds.ap-northeast-1.amazonaws.com'),
52
+ RDSRegionInfo(name='ap-southeast-1',
53
+ endpoint='rds.ap-southeast-1.amazonaws.com'),
54
+ RDSRegionInfo(name='ap-southeast-2',
55
+ endpoint='rds.ap-southeast-2.amazonaws.com'),
56
+ ]
57
+
58
+
59
+ def connect_to_region(region_name, **kw_params):
60
+ """
61
+ Given a valid region name, return a
62
+ :class:`boto.rds.RDSConnection`.
63
+ Any additional parameters after the region_name are passed on to
64
+ the connect method of the region object.
65
+
66
+ :type: str
67
+ :param region_name: The name of the region to connect to.
68
+
69
+ :rtype: :class:`boto.rds.RDSConnection` or ``None``
70
+ :return: A connection to the given region, or None if an invalid region
71
+ name is given
72
+ """
73
+ for region in regions():
74
+ if region.name == region_name:
75
+ return region.connect(**kw_params)
76
+ return None
77
+
78
+ #boto.set_stream_logger('rds')
79
+
80
+
81
+ class RDSConnection(AWSQueryConnection):
82
+
83
+ DefaultRegionName = 'us-east-1'
84
+ DefaultRegionEndpoint = 'rds.amazonaws.com'
85
+ APIVersion = '2012-09-17'
86
+
87
+ def __init__(self, aws_access_key_id=None, aws_secret_access_key=None,
88
+ is_secure=True, port=None, proxy=None, proxy_port=None,
89
+ proxy_user=None, proxy_pass=None, debug=0,
90
+ https_connection_factory=None, region=None, path='/',
91
+ security_token=None, validate_certs=True):
92
+ if not region:
93
+ region = RDSRegionInfo(self, self.DefaultRegionName,
94
+ self.DefaultRegionEndpoint)
95
+ self.region = region
96
+ AWSQueryConnection.__init__(self, aws_access_key_id,
97
+ aws_secret_access_key,
98
+ is_secure, port, proxy, proxy_port,
99
+ proxy_user, proxy_pass,
100
+ self.region.endpoint, debug,
101
+ https_connection_factory, path,
102
+ security_token,
103
+ validate_certs=validate_certs)
104
+
105
+ def _required_auth_capability(self):
106
+ return ['rds']
107
+
108
+ # DB Instance methods
109
+
110
+ def get_all_dbinstances(self, instance_id=None, max_records=None,
111
+ marker=None):
112
+ """
113
+ Retrieve all the DBInstances in your account.
114
+
115
+ :type instance_id: str
116
+ :param instance_id: DB Instance identifier. If supplied, only
117
+ information this instance will be returned.
118
+ Otherwise, info about all DB Instances will
119
+ be returned.
120
+
121
+ :type max_records: int
122
+ :param max_records: The maximum number of records to be returned.
123
+ If more results are available, a MoreToken will
124
+ be returned in the response that can be used to
125
+ retrieve additional records. Default is 100.
126
+
127
+ :type marker: str
128
+ :param marker: The marker provided by a previous request.
129
+
130
+ :rtype: list
131
+ :return: A list of :class:`boto.rds.dbinstance.DBInstance`
132
+ """
133
+ params = {}
134
+ if instance_id:
135
+ params['DBInstanceIdentifier'] = instance_id
136
+ if max_records:
137
+ params['MaxRecords'] = max_records
138
+ if marker:
139
+ params['Marker'] = marker
140
+ return self.get_list('DescribeDBInstances', params,
141
+ [('DBInstance', DBInstance)])
142
+
143
+ def create_dbinstance(self,
144
+ id,
145
+ allocated_storage,
146
+ instance_class,
147
+ master_username,
148
+ master_password,
149
+ port=3306,
150
+ engine='MySQL5.1',
151
+ db_name=None,
152
+ param_group=None,
153
+ security_groups=None,
154
+ availability_zone=None,
155
+ preferred_maintenance_window=None,
156
+ backup_retention_period=None,
157
+ preferred_backup_window=None,
158
+ multi_az=False,
159
+ engine_version=None,
160
+ auto_minor_version_upgrade=True,
161
+ character_set_name = None,
162
+ db_subnet_group_name = None,
163
+ license_model = None,
164
+ option_group_name = None,
165
+ iops=None,
166
+ ):
167
+ # API version: 2012-09-17
168
+ # Parameter notes:
169
+ # =================
170
+ # id should be db_instance_identifier according to API docs but has been left
171
+ # id for backwards compatibility
172
+ #
173
+ # security_groups should be db_security_groups according to API docs but has been left
174
+ # security_groups for backwards compatibility
175
+ #
176
+ # master_password should be master_user_password according to API docs but has been left
177
+ # master_password for backwards compatibility
178
+ #
179
+ # instance_class should be db_instance_class according to API docs but has been left
180
+ # instance_class for backwards compatibility
181
+ """
182
+ Create a new DBInstance.
183
+
184
+ :type id: str
185
+ :param id: Unique identifier for the new instance.
186
+ Must contain 1-63 alphanumeric characters.
187
+ First character must be a letter.
188
+ May not end with a hyphen or contain two consecutive hyphens
189
+
190
+ :type allocated_storage: int
191
+ :param allocated_storage: Initially allocated storage size, in GBs.
192
+ Valid values are depending on the engine value.
193
+
194
+ * MySQL = 5--1024
195
+ * oracle-se1 = 10--1024
196
+ * oracle-se = 10--1024
197
+ * oracle-ee = 10--1024
198
+ * sqlserver-ee = 200--1024
199
+ * sqlserver-se = 200--1024
200
+ * sqlserver-ex = 30--1024
201
+ * sqlserver-web = 30--1024
202
+
203
+ :type instance_class: str
204
+ :param instance_class: The compute and memory capacity of
205
+ the DBInstance. Valid values are:
206
+
207
+ * db.m1.small
208
+ * db.m1.large
209
+ * db.m1.xlarge
210
+ * db.m2.xlarge
211
+ * db.m2.2xlarge
212
+ * db.m2.4xlarge
213
+
214
+ :type engine: str
215
+ :param engine: Name of database engine. Defaults to MySQL but can be;
216
+
217
+ * MySQL
218
+ * oracle-se1
219
+ * oracle-se
220
+ * oracle-ee
221
+ * sqlserver-ee
222
+ * sqlserver-se
223
+ * sqlserver-ex
224
+ * sqlserver-web
225
+
226
+ :type master_username: str
227
+ :param master_username: Name of master user for the DBInstance.
228
+
229
+ * MySQL must be;
230
+ - 1--16 alphanumeric characters
231
+ - first character must be a letter
232
+ - cannot be a reserved MySQL word
233
+
234
+ * Oracle must be:
235
+ - 1--30 alphanumeric characters
236
+ - first character must be a letter
237
+ - cannot be a reserved Oracle word
238
+
239
+ * SQL Server must be:
240
+ - 1--128 alphanumeric characters
241
+ - first character must be a letter
242
+ - cannot be a reserver SQL Server word
243
+
244
+ :type master_password: str
245
+ :param master_password: Password of master user for the DBInstance.
246
+
247
+ * MySQL must be 8--41 alphanumeric characters
248
+
249
+ * Oracle must be 8--30 alphanumeric characters
250
+
251
+ * SQL Server must be 8--128 alphanumeric characters.
252
+
253
+ :type port: int
254
+ :param port: Port number on which database accepts connections.
255
+ Valid values [1115-65535].
256
+
257
+ * MySQL defaults to 3306
258
+
259
+ * Oracle defaults to 1521
260
+
261
+ * SQL Server defaults to 1433 and _cannot_ be 1434 or 3389
262
+
263
+ :type db_name: str
264
+ :param db_name: * MySQL:
265
+ Name of a database to create when the DBInstance
266
+ is created. Default is to create no databases.
267
+
268
+ Must contain 1--64 alphanumeric characters and cannot
269
+ be a reserved MySQL word.
270
+
271
+ * Oracle:
272
+ The Oracle System ID (SID) of the created DB instances.
273
+ Default is ORCL. Cannot be longer than 8 characters.
274
+
275
+ * SQL Server:
276
+ Not applicable and must be None.
277
+
278
+ :type param_group: str
279
+ :param param_group: Name of DBParameterGroup to associate with
280
+ this DBInstance. If no groups are specified
281
+ no parameter groups will be used.
282
+
283
+ :type security_groups: list of str or list of DBSecurityGroup objects
284
+ :param security_groups: List of names of DBSecurityGroup to
285
+ authorize on this DBInstance.
286
+
287
+ :type availability_zone: str
288
+ :param availability_zone: Name of the availability zone to place
289
+ DBInstance into.
290
+
291
+ :type preferred_maintenance_window: str
292
+ :param preferred_maintenance_window: The weekly time range (in UTC)
293
+ during which maintenance can occur.
294
+ Default is Sun:05:00-Sun:09:00
295
+
296
+ :type backup_retention_period: int
297
+ :param backup_retention_period: The number of days for which automated
298
+ backups are retained. Setting this to
299
+ zero disables automated backups.
300
+
301
+ :type preferred_backup_window: str
302
+ :param preferred_backup_window: The daily time range during which
303
+ automated backups are created (if
304
+ enabled). Must be in h24:mi-hh24:mi
305
+ format (UTC).
306
+
307
+ :type multi_az: bool
308
+ :param multi_az: If True, specifies the DB Instance will be
309
+ deployed in multiple availability zones.
310
+
311
+ For Microsoft SQL Server, must be set to false. You cannot set
312
+ the AvailabilityZone parameter if the MultiAZ parameter is
313
+ set to true.
314
+
315
+ :type engine_version: str
316
+ :param engine_version: The version number of the database engine to use.
317
+
318
+ * MySQL format example: 5.1.42
319
+
320
+ * Oracle format example: 11.2.0.2.v2
321
+
322
+ * SQL Server format example: 10.50.2789.0.v1
323
+
324
+ :type auto_minor_version_upgrade: bool
325
+ :param auto_minor_version_upgrade: Indicates that minor engine
326
+ upgrades will be applied
327
+ automatically to the Read Replica
328
+ during the maintenance window.
329
+ Default is True.
330
+ :type character_set_name: str
331
+ :param character_set_name: For supported engines, indicates that the DB Instance
332
+ should be associated with the specified CharacterSet.
333
+
334
+ :type db_subnet_group_name: str
335
+ :param db_subnet_group_name: A DB Subnet Group to associate with this DB Instance.
336
+ If there is no DB Subnet Group, then it is a non-VPC DB
337
+ instance.
338
+
339
+ :type license_model: str
340
+ :param license_model: License model information for this DB Instance.
341
+
342
+ Valid values are;
343
+ - license-included
344
+ - bring-your-own-license
345
+ - general-public-license
346
+
347
+ All license types are not supported on all engines.
348
+
349
+ :type option_group_name: str
350
+ :param option_group_name: Indicates that the DB Instance should be associated
351
+ with the specified option group.
352
+
353
+ :type iops: int
354
+ :param iops: The amount of IOPS (input/output operations per second) to Provisioned
355
+ for the DB Instance. Can be modified at a later date.
356
+
357
+ Must scale linearly. For every 1000 IOPS provision, you must allocated
358
+ 100 GB of storage space. This scales up to 1 TB / 10 000 IOPS for MySQL
359
+ and Oracle. MSSQL is limited to 700 GB / 7 000 IOPS.
360
+
361
+ If you specify a value, it must be at least 1000 IOPS and you must
362
+ allocate 100 GB of storage.
363
+
364
+ :rtype: :class:`boto.rds.dbinstance.DBInstance`
365
+ :return: The new db instance.
366
+ """
367
+ # boto argument alignment with AWS API parameter names:
368
+ # =====================================================
369
+ # arg => AWS parameter
370
+ # allocated_storage => AllocatedStorage
371
+ # auto_minor_version_update => AutoMinorVersionUpgrade
372
+ # availability_zone => AvailabilityZone
373
+ # backup_retention_period => BackupRetentionPeriod
374
+ # character_set_name => CharacterSetName
375
+ # db_instance_class => DBInstanceClass
376
+ # db_instance_identifier => DBInstanceIdentifier
377
+ # db_name => DBName
378
+ # db_parameter_group_name => DBParameterGroupName
379
+ # db_security_groups => DBSecurityGroups.member.N
380
+ # db_subnet_group_name => DBSubnetGroupName
381
+ # engine => Engine
382
+ # engine_version => EngineVersion
383
+ # license_model => LicenseModel
384
+ # master_username => MasterUsername
385
+ # master_user_password => MasterUserPassword
386
+ # multi_az => MultiAZ
387
+ # option_group_name => OptionGroupName
388
+ # port => Port
389
+ # preferred_backup_window => PreferredBackupWindow
390
+ # preferred_maintenance_window => PreferredMaintenanceWindow
391
+ params = {
392
+ 'AllocatedStorage': allocated_storage,
393
+ 'AutoMinorVersionUpgrade': str(auto_minor_version_upgrade).lower() if auto_minor_version_upgrade else None,
394
+ 'AvailabilityZone': availability_zone,
395
+ 'BackupRetentionPeriod': backup_retention_period,
396
+ 'CharacterSetName': character_set_name,
397
+ 'DBInstanceClass': instance_class,
398
+ 'DBInstanceIdentifier': id,
399
+ 'DBName': db_name,
400
+ 'DBParameterGroupName': param_group,
401
+ 'DBSubnetGroupName': db_subnet_group_name,
402
+ 'Engine': engine,
403
+ 'EngineVersion': engine_version,
404
+ 'Iops': iops,
405
+ 'LicenseModel': license_model,
406
+ 'MasterUsername': master_username,
407
+ 'MasterUserPassword': master_password,
408
+ 'MultiAZ': str(multi_az).lower() if multi_az else None,
409
+ 'OptionGroupName': option_group_name,
410
+ 'Port': port,
411
+ 'PreferredBackupWindow': preferred_backup_window,
412
+ 'PreferredMaintenanceWindow': preferred_maintenance_window,
413
+ }
414
+ if security_groups:
415
+ l = []
416
+ for group in security_groups:
417
+ if isinstance(group, DBSecurityGroup):
418
+ l.append(group.name)
419
+ else:
420
+ l.append(group)
421
+ self.build_list_params(params, l, 'DBSecurityGroups.member')
422
+
423
+ # Remove any params set to None
424
+ for k, v in params.items():
425
+ if not v: del(params[k])
426
+
427
+ return self.get_object('CreateDBInstance', params, DBInstance)
428
+
429
+ def create_dbinstance_read_replica(self, id, source_id,
430
+ instance_class=None,
431
+ port=3306,
432
+ availability_zone=None,
433
+ auto_minor_version_upgrade=None):
434
+ """
435
+ Create a new DBInstance Read Replica.
436
+
437
+ :type id: str
438
+ :param id: Unique identifier for the new instance.
439
+ Must contain 1-63 alphanumeric characters.
440
+ First character must be a letter.
441
+ May not end with a hyphen or contain two consecutive hyphens
442
+
443
+ :type source_id: str
444
+ :param source_id: Unique identifier for the DB Instance for which this
445
+ DB Instance will act as a Read Replica.
446
+
447
+ :type instance_class: str
448
+ :param instance_class: The compute and memory capacity of the
449
+ DBInstance. Default is to inherit from
450
+ the source DB Instance.
451
+
452
+ Valid values are:
453
+
454
+ * db.m1.small
455
+ * db.m1.large
456
+ * db.m1.xlarge
457
+ * db.m2.xlarge
458
+ * db.m2.2xlarge
459
+ * db.m2.4xlarge
460
+
461
+ :type port: int
462
+ :param port: Port number on which database accepts connections.
463
+ Default is to inherit from source DB Instance.
464
+ Valid values [1115-65535]. Defaults to 3306.
465
+
466
+ :type availability_zone: str
467
+ :param availability_zone: Name of the availability zone to place
468
+ DBInstance into.
469
+
470
+ :type auto_minor_version_upgrade: bool
471
+ :param auto_minor_version_upgrade: Indicates that minor engine
472
+ upgrades will be applied
473
+ automatically to the Read Replica
474
+ during the maintenance window.
475
+ Default is to inherit this value
476
+ from the source DB Instance.
477
+
478
+ :rtype: :class:`boto.rds.dbinstance.DBInstance`
479
+ :return: The new db instance.
480
+ """
481
+ params = {'DBInstanceIdentifier': id,
482
+ 'SourceDBInstanceIdentifier': source_id}
483
+ if instance_class:
484
+ params['DBInstanceClass'] = instance_class
485
+ if port:
486
+ params['Port'] = port
487
+ if availability_zone:
488
+ params['AvailabilityZone'] = availability_zone
489
+ if auto_minor_version_upgrade is not None:
490
+ if auto_minor_version_upgrade is True:
491
+ params['AutoMinorVersionUpgrade'] = 'true'
492
+ else:
493
+ params['AutoMinorVersionUpgrade'] = 'false'
494
+
495
+ return self.get_object('CreateDBInstanceReadReplica',
496
+ params, DBInstance)
497
+
498
+ def modify_dbinstance(self, id, param_group=None, security_groups=None,
499
+ preferred_maintenance_window=None,
500
+ master_password=None, allocated_storage=None,
501
+ instance_class=None,
502
+ backup_retention_period=None,
503
+ preferred_backup_window=None,
504
+ multi_az=False,
505
+ apply_immediately=False,
506
+ iops=None):
507
+ """
508
+ Modify an existing DBInstance.
509
+
510
+ :type id: str
511
+ :param id: Unique identifier for the new instance.
512
+
513
+ :type security_groups: list of str or list of DBSecurityGroup objects
514
+ :param security_groups: List of names of DBSecurityGroup to authorize on
515
+ this DBInstance.
516
+
517
+ :type preferred_maintenance_window: str
518
+ :param preferred_maintenance_window: The weekly time range (in UTC)
519
+ during which maintenance can
520
+ occur.
521
+ Default is Sun:05:00-Sun:09:00
522
+
523
+ :type master_password: str
524
+ :param master_password: Password of master user for the DBInstance.
525
+ Must be 4-15 alphanumeric characters.
526
+
527
+ :type allocated_storage: int
528
+ :param allocated_storage: The new allocated storage size, in GBs.
529
+ Valid values are [5-1024]
530
+
531
+ :type instance_class: str
532
+ :param instance_class: The compute and memory capacity of the
533
+ DBInstance. Changes will be applied at
534
+ next maintenance window unless
535
+ apply_immediately is True.
536
+
537
+ Valid values are:
538
+
539
+ * db.m1.small
540
+ * db.m1.large
541
+ * db.m1.xlarge
542
+ * db.m2.xlarge
543
+ * db.m2.2xlarge
544
+ * db.m2.4xlarge
545
+
546
+ :type apply_immediately: bool
547
+ :param apply_immediately: If true, the modifications will be applied
548
+ as soon as possible rather than waiting for
549
+ the next preferred maintenance window.
550
+
551
+ :type backup_retention_period: int
552
+ :param backup_retention_period: The number of days for which automated
553
+ backups are retained. Setting this to
554
+ zero disables automated backups.
555
+
556
+ :type preferred_backup_window: str
557
+ :param preferred_backup_window: The daily time range during which
558
+ automated backups are created (if
559
+ enabled). Must be in h24:mi-hh24:mi
560
+ format (UTC).
561
+
562
+ :type multi_az: bool
563
+ :param multi_az: If True, specifies the DB Instance will be
564
+ deployed in multiple availability zones.
565
+
566
+ :type iops: int
567
+ :param iops: The amount of IOPS (input/output operations per second) to Provisioned
568
+ for the DB Instance. Can be modified at a later date.
569
+
570
+ Must scale linearly. For every 1000 IOPS provision, you must allocated
571
+ 100 GB of storage space. This scales up to 1 TB / 10 000 IOPS for MySQL
572
+ and Oracle. MSSQL is limited to 700 GB / 7 000 IOPS.
573
+
574
+ If you specify a value, it must be at least 1000 IOPS and you must
575
+ allocate 100 GB of storage.
576
+
577
+ :rtype: :class:`boto.rds.dbinstance.DBInstance`
578
+ :return: The modified db instance.
579
+ """
580
+ params = {'DBInstanceIdentifier': id}
581
+ if param_group:
582
+ params['DBParameterGroupName'] = param_group
583
+ if security_groups:
584
+ l = []
585
+ for group in security_groups:
586
+ if isinstance(group, DBSecurityGroup):
587
+ l.append(group.name)
588
+ else:
589
+ l.append(group)
590
+ self.build_list_params(params, l, 'DBSecurityGroups.member')
591
+ if preferred_maintenance_window:
592
+ params['PreferredMaintenanceWindow'] = preferred_maintenance_window
593
+ if master_password:
594
+ params['MasterUserPassword'] = master_password
595
+ if allocated_storage:
596
+ params['AllocatedStorage'] = allocated_storage
597
+ if instance_class:
598
+ params['DBInstanceClass'] = instance_class
599
+ if backup_retention_period is not None:
600
+ params['BackupRetentionPeriod'] = backup_retention_period
601
+ if preferred_backup_window:
602
+ params['PreferredBackupWindow'] = preferred_backup_window
603
+ if multi_az:
604
+ params['MultiAZ'] = 'true'
605
+ if apply_immediately:
606
+ params['ApplyImmediately'] = 'true'
607
+ if iops:
608
+ params['Iops'] = iops
609
+
610
+ return self.get_object('ModifyDBInstance', params, DBInstance)
611
+
612
+ def delete_dbinstance(self, id, skip_final_snapshot=False,
613
+ final_snapshot_id=''):
614
+ """
615
+ Delete an existing DBInstance.
616
+
617
+ :type id: str
618
+ :param id: Unique identifier for the new instance.
619
+
620
+ :type skip_final_snapshot: bool
621
+ :param skip_final_snapshot: This parameter determines whether a final
622
+ db snapshot is created before the instance
623
+ is deleted. If True, no snapshot
624
+ is created. If False, a snapshot
625
+ is created before deleting the instance.
626
+
627
+ :type final_snapshot_id: str
628
+ :param final_snapshot_id: If a final snapshot is requested, this
629
+ is the identifier used for that snapshot.
630
+
631
+ :rtype: :class:`boto.rds.dbinstance.DBInstance`
632
+ :return: The deleted db instance.
633
+ """
634
+ params = {'DBInstanceIdentifier': id}
635
+ if skip_final_snapshot:
636
+ params['SkipFinalSnapshot'] = 'true'
637
+ else:
638
+ params['SkipFinalSnapshot'] = 'false'
639
+ params['FinalDBSnapshotIdentifier'] = final_snapshot_id
640
+ return self.get_object('DeleteDBInstance', params, DBInstance)
641
+
642
+ def reboot_dbinstance(self, id):
643
+ """
644
+ Reboot DBInstance.
645
+
646
+ :type id: str
647
+ :param id: Unique identifier of the instance.
648
+
649
+ :rtype: :class:`boto.rds.dbinstance.DBInstance`
650
+ :return: The rebooting db instance.
651
+ """
652
+ params = {'DBInstanceIdentifier': id}
653
+ return self.get_object('RebootDBInstance', params, DBInstance)
654
+
655
+ # DBParameterGroup methods
656
+
657
+ def get_all_dbparameter_groups(self, groupname=None, max_records=None,
658
+ marker=None):
659
+ """
660
+ Get all parameter groups associated with your account in a region.
661
+
662
+ :type groupname: str
663
+ :param groupname: The name of the DBParameter group to retrieve.
664
+ If not provided, all DBParameter groups will be returned.
665
+
666
+ :type max_records: int
667
+ :param max_records: The maximum number of records to be returned.
668
+ If more results are available, a MoreToken will
669
+ be returned in the response that can be used to
670
+ retrieve additional records. Default is 100.
671
+
672
+ :type marker: str
673
+ :param marker: The marker provided by a previous request.
674
+
675
+ :rtype: list
676
+ :return: A list of :class:`boto.ec2.parametergroup.ParameterGroup`
677
+ """
678
+ params = {}
679
+ if groupname:
680
+ params['DBParameterGroupName'] = groupname
681
+ if max_records:
682
+ params['MaxRecords'] = max_records
683
+ if marker:
684
+ params['Marker'] = marker
685
+ return self.get_list('DescribeDBParameterGroups', params,
686
+ [('DBParameterGroup', ParameterGroup)])
687
+
688
+ def get_all_dbparameters(self, groupname, source=None,
689
+ max_records=None, marker=None):
690
+ """
691
+ Get all parameters associated with a ParameterGroup
692
+
693
+ :type groupname: str
694
+ :param groupname: The name of the DBParameter group to retrieve.
695
+
696
+ :type source: str
697
+ :param source: Specifies which parameters to return.
698
+ If not specified, all parameters will be returned.
699
+ Valid values are: user|system|engine-default
700
+
701
+ :type max_records: int
702
+ :param max_records: The maximum number of records to be returned.
703
+ If more results are available, a MoreToken will
704
+ be returned in the response that can be used to
705
+ retrieve additional records. Default is 100.
706
+
707
+ :type marker: str
708
+ :param marker: The marker provided by a previous request.
709
+
710
+ :rtype: :class:`boto.ec2.parametergroup.ParameterGroup`
711
+ :return: The ParameterGroup
712
+ """
713
+ params = {'DBParameterGroupName': groupname}
714
+ if source:
715
+ params['Source'] = source
716
+ if max_records:
717
+ params['MaxRecords'] = max_records
718
+ if marker:
719
+ params['Marker'] = marker
720
+ pg = self.get_object('DescribeDBParameters', params, ParameterGroup)
721
+ pg.name = groupname
722
+ return pg
723
+
724
+ def create_parameter_group(self, name, engine='MySQL5.1', description=''):
725
+ """
726
+ Create a new dbparameter group for your account.
727
+
728
+ :type name: string
729
+ :param name: The name of the new dbparameter group
730
+
731
+ :type engine: str
732
+ :param engine: Name of database engine.
733
+
734
+ :type description: string
735
+ :param description: The description of the new security group
736
+
737
+ :rtype: :class:`boto.rds.dbsecuritygroup.DBSecurityGroup`
738
+ :return: The newly created DBSecurityGroup
739
+ """
740
+ params = {'DBParameterGroupName': name,
741
+ 'DBParameterGroupFamily': engine,
742
+ 'Description': description}
743
+ return self.get_object('CreateDBParameterGroup', params, ParameterGroup)
744
+
745
+ def modify_parameter_group(self, name, parameters=None):
746
+ """
747
+ Modify a parameter group for your account.
748
+
749
+ :type name: string
750
+ :param name: The name of the new parameter group
751
+
752
+ :type parameters: list of :class:`boto.rds.parametergroup.Parameter`
753
+ :param parameters: The new parameters
754
+
755
+ :rtype: :class:`boto.rds.parametergroup.ParameterGroup`
756
+ :return: The newly created ParameterGroup
757
+ """
758
+ params = {'DBParameterGroupName': name}
759
+ for i in range(0, len(parameters)):
760
+ parameter = parameters[i]
761
+ parameter.merge(params, i+1)
762
+ return self.get_list('ModifyDBParameterGroup', params,
763
+ ParameterGroup, verb='POST')
764
+
765
+ def reset_parameter_group(self, name, reset_all_params=False,
766
+ parameters=None):
767
+ """
768
+ Resets some or all of the parameters of a ParameterGroup to the
769
+ default value
770
+
771
+ :type key_name: string
772
+ :param key_name: The name of the ParameterGroup to reset
773
+
774
+ :type parameters: list of :class:`boto.rds.parametergroup.Parameter`
775
+ :param parameters: The parameters to reset. If not supplied,
776
+ all parameters will be reset.
777
+ """
778
+ params = {'DBParameterGroupName': name}
779
+ if reset_all_params:
780
+ params['ResetAllParameters'] = 'true'
781
+ else:
782
+ params['ResetAllParameters'] = 'false'
783
+ for i in range(0, len(parameters)):
784
+ parameter = parameters[i]
785
+ parameter.merge(params, i+1)
786
+ return self.get_status('ResetDBParameterGroup', params)
787
+
788
+ def delete_parameter_group(self, name):
789
+ """
790
+ Delete a DBSecurityGroup from your account.
791
+
792
+ :type key_name: string
793
+ :param key_name: The name of the DBSecurityGroup to delete
794
+ """
795
+ params = {'DBParameterGroupName': name}
796
+ return self.get_status('DeleteDBParameterGroup', params)
797
+
798
+ # DBSecurityGroup methods
799
+
800
+ def get_all_dbsecurity_groups(self, groupname=None, max_records=None,
801
+ marker=None):
802
+ """
803
+ Get all security groups associated with your account in a region.
804
+
805
+ :type groupnames: list
806
+ :param groupnames: A list of the names of security groups to retrieve.
807
+ If not provided, all security groups will
808
+ be returned.
809
+
810
+ :type max_records: int
811
+ :param max_records: The maximum number of records to be returned.
812
+ If more results are available, a MoreToken will
813
+ be returned in the response that can be used to
814
+ retrieve additional records. Default is 100.
815
+
816
+ :type marker: str
817
+ :param marker: The marker provided by a previous request.
818
+
819
+ :rtype: list
820
+ :return: A list of :class:`boto.rds.dbsecuritygroup.DBSecurityGroup`
821
+ """
822
+ params = {}
823
+ if groupname:
824
+ params['DBSecurityGroupName'] = groupname
825
+ if max_records:
826
+ params['MaxRecords'] = max_records
827
+ if marker:
828
+ params['Marker'] = marker
829
+ return self.get_list('DescribeDBSecurityGroups', params,
830
+ [('DBSecurityGroup', DBSecurityGroup)])
831
+
832
+ def create_dbsecurity_group(self, name, description=None):
833
+ """
834
+ Create a new security group for your account.
835
+ This will create the security group within the region you
836
+ are currently connected to.
837
+
838
+ :type name: string
839
+ :param name: The name of the new security group
840
+
841
+ :type description: string
842
+ :param description: The description of the new security group
843
+
844
+ :rtype: :class:`boto.rds.dbsecuritygroup.DBSecurityGroup`
845
+ :return: The newly created DBSecurityGroup
846
+ """
847
+ params = {'DBSecurityGroupName': name}
848
+ if description:
849
+ params['DBSecurityGroupDescription'] = description
850
+ group = self.get_object('CreateDBSecurityGroup', params,
851
+ DBSecurityGroup)
852
+ group.name = name
853
+ group.description = description
854
+ return group
855
+
856
+ def delete_dbsecurity_group(self, name):
857
+ """
858
+ Delete a DBSecurityGroup from your account.
859
+
860
+ :type key_name: string
861
+ :param key_name: The name of the DBSecurityGroup to delete
862
+ """
863
+ params = {'DBSecurityGroupName': name}
864
+ return self.get_status('DeleteDBSecurityGroup', params)
865
+
866
+ def authorize_dbsecurity_group(self, group_name, cidr_ip=None,
867
+ ec2_security_group_name=None,
868
+ ec2_security_group_owner_id=None):
869
+ """
870
+ Add a new rule to an existing security group.
871
+ You need to pass in either src_security_group_name and
872
+ src_security_group_owner_id OR a CIDR block but not both.
873
+
874
+ :type group_name: string
875
+ :param group_name: The name of the security group you are adding
876
+ the rule to.
877
+
878
+ :type ec2_security_group_name: string
879
+ :param ec2_security_group_name: The name of the EC2 security group
880
+ you are granting access to.
881
+
882
+ :type ec2_security_group_owner_id: string
883
+ :param ec2_security_group_owner_id: The ID of the owner of the EC2
884
+ security group you are granting
885
+ access to.
886
+
887
+ :type cidr_ip: string
888
+ :param cidr_ip: The CIDR block you are providing access to.
889
+ See http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing
890
+
891
+ :rtype: bool
892
+ :return: True if successful.
893
+ """
894
+ params = {'DBSecurityGroupName': group_name}
895
+ if ec2_security_group_name:
896
+ params['EC2SecurityGroupName'] = ec2_security_group_name
897
+ if ec2_security_group_owner_id:
898
+ params['EC2SecurityGroupOwnerId'] = ec2_security_group_owner_id
899
+ if cidr_ip:
900
+ params['CIDRIP'] = urllib.quote(cidr_ip)
901
+ return self.get_object('AuthorizeDBSecurityGroupIngress', params,
902
+ DBSecurityGroup)
903
+
904
+ def revoke_dbsecurity_group(self, group_name, ec2_security_group_name=None,
905
+ ec2_security_group_owner_id=None, cidr_ip=None):
906
+ """
907
+ Remove an existing rule from an existing security group.
908
+ You need to pass in either ec2_security_group_name and
909
+ ec2_security_group_owner_id OR a CIDR block.
910
+
911
+ :type group_name: string
912
+ :param group_name: The name of the security group you are removing
913
+ the rule from.
914
+
915
+ :type ec2_security_group_name: string
916
+ :param ec2_security_group_name: The name of the EC2 security group
917
+ from which you are removing access.
918
+
919
+ :type ec2_security_group_owner_id: string
920
+ :param ec2_security_group_owner_id: The ID of the owner of the EC2
921
+ security from which you are
922
+ removing access.
923
+
924
+ :type cidr_ip: string
925
+ :param cidr_ip: The CIDR block from which you are removing access.
926
+ See http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing
927
+
928
+ :rtype: bool
929
+ :return: True if successful.
930
+ """
931
+ params = {'DBSecurityGroupName': group_name}
932
+ if ec2_security_group_name:
933
+ params['EC2SecurityGroupName'] = ec2_security_group_name
934
+ if ec2_security_group_owner_id:
935
+ params['EC2SecurityGroupOwnerId'] = ec2_security_group_owner_id
936
+ if cidr_ip:
937
+ params['CIDRIP'] = cidr_ip
938
+ return self.get_object('RevokeDBSecurityGroupIngress', params,
939
+ DBSecurityGroup)
940
+
941
+ # For backwards compatibility. This method was improperly named
942
+ # in previous versions. I have renamed it to match the others.
943
+ revoke_security_group = revoke_dbsecurity_group
944
+
945
+ # DBSnapshot methods
946
+
947
+ def get_all_dbsnapshots(self, snapshot_id=None, instance_id=None,
948
+ max_records=None, marker=None):
949
+ """
950
+ Get information about DB Snapshots.
951
+
952
+ :type snapshot_id: str
953
+ :param snapshot_id: The unique identifier of an RDS snapshot.
954
+ If not provided, all RDS snapshots will be returned.
955
+
956
+ :type instance_id: str
957
+ :param instance_id: The identifier of a DBInstance. If provided,
958
+ only the DBSnapshots related to that instance will
959
+ be returned.
960
+ If not provided, all RDS snapshots will be returned.
961
+
962
+ :type max_records: int
963
+ :param max_records: The maximum number of records to be returned.
964
+ If more results are available, a MoreToken will
965
+ be returned in the response that can be used to
966
+ retrieve additional records. Default is 100.
967
+
968
+ :type marker: str
969
+ :param marker: The marker provided by a previous request.
970
+
971
+ :rtype: list
972
+ :return: A list of :class:`boto.rds.dbsnapshot.DBSnapshot`
973
+ """
974
+ params = {}
975
+ if snapshot_id:
976
+ params['DBSnapshotIdentifier'] = snapshot_id
977
+ if instance_id:
978
+ params['DBInstanceIdentifier'] = instance_id
979
+ if max_records:
980
+ params['MaxRecords'] = max_records
981
+ if marker:
982
+ params['Marker'] = marker
983
+ return self.get_list('DescribeDBSnapshots', params,
984
+ [('DBSnapshot', DBSnapshot)])
985
+
986
+ def create_dbsnapshot(self, snapshot_id, dbinstance_id):
987
+ """
988
+ Create a new DB snapshot.
989
+
990
+ :type snapshot_id: string
991
+ :param snapshot_id: The identifier for the DBSnapshot
992
+
993
+ :type dbinstance_id: string
994
+ :param dbinstance_id: The source identifier for the RDS instance from
995
+ which the snapshot is created.
996
+
997
+ :rtype: :class:`boto.rds.dbsnapshot.DBSnapshot`
998
+ :return: The newly created DBSnapshot
999
+ """
1000
+ params = {'DBSnapshotIdentifier': snapshot_id,
1001
+ 'DBInstanceIdentifier': dbinstance_id}
1002
+ return self.get_object('CreateDBSnapshot', params, DBSnapshot)
1003
+
1004
+ def delete_dbsnapshot(self, identifier):
1005
+ """
1006
+ Delete a DBSnapshot
1007
+
1008
+ :type identifier: string
1009
+ :param identifier: The identifier of the DBSnapshot to delete
1010
+ """
1011
+ params = {'DBSnapshotIdentifier': identifier}
1012
+ return self.get_object('DeleteDBSnapshot', params, DBSnapshot)
1013
+
1014
+ def restore_dbinstance_from_dbsnapshot(self, identifier, instance_id,
1015
+ instance_class, port=None,
1016
+ availability_zone=None,
1017
+ multi_az=None,
1018
+ auto_minor_version_upgrade=None,
1019
+ db_subnet_group_name=None):
1020
+ """
1021
+ Create a new DBInstance from a DB snapshot.
1022
+
1023
+ :type identifier: string
1024
+ :param identifier: The identifier for the DBSnapshot
1025
+
1026
+ :type instance_id: string
1027
+ :param instance_id: The source identifier for the RDS instance from
1028
+ which the snapshot is created.
1029
+
1030
+ :type instance_class: str
1031
+ :param instance_class: The compute and memory capacity of the
1032
+ DBInstance. Valid values are:
1033
+ db.m1.small | db.m1.large | db.m1.xlarge |
1034
+ db.m2.2xlarge | db.m2.4xlarge
1035
+
1036
+ :type port: int
1037
+ :param port: Port number on which database accepts connections.
1038
+ Valid values [1115-65535]. Defaults to 3306.
1039
+
1040
+ :type availability_zone: str
1041
+ :param availability_zone: Name of the availability zone to place
1042
+ DBInstance into.
1043
+
1044
+ :type multi_az: bool
1045
+ :param multi_az: If True, specifies the DB Instance will be
1046
+ deployed in multiple availability zones.
1047
+ Default is the API default.
1048
+
1049
+ :type auto_minor_version_upgrade: bool
1050
+ :param auto_minor_version_upgrade: Indicates that minor engine
1051
+ upgrades will be applied
1052
+ automatically to the Read Replica
1053
+ during the maintenance window.
1054
+ Default is the API default.
1055
+
1056
+ :type db_subnet_group_name: str
1057
+ :param db_subnet_group_name: A DB Subnet Group to associate with this DB Instance.
1058
+ If there is no DB Subnet Group, then it is a non-VPC DB
1059
+ instance.
1060
+
1061
+ :rtype: :class:`boto.rds.dbinstance.DBInstance`
1062
+ :return: The newly created DBInstance
1063
+ """
1064
+ params = {'DBSnapshotIdentifier': identifier,
1065
+ 'DBInstanceIdentifier': instance_id,
1066
+ 'DBInstanceClass': instance_class}
1067
+ if port:
1068
+ params['Port'] = port
1069
+ if availability_zone:
1070
+ params['AvailabilityZone'] = availability_zone
1071
+ if multi_az is not None:
1072
+ params['MultiAZ'] = str(multi_az).lower()
1073
+ if auto_minor_version_upgrade is not None:
1074
+ params['AutoMinorVersionUpgrade'] = str(auto_minor_version_upgrade).lower()
1075
+ if db_subnet_group_name is not None:
1076
+ params['DBSubnetGroupName'] = db_subnet_group_name
1077
+ return self.get_object('RestoreDBInstanceFromDBSnapshot',
1078
+ params, DBInstance)
1079
+
1080
+ def restore_dbinstance_from_point_in_time(self, source_instance_id,
1081
+ target_instance_id,
1082
+ use_latest=False,
1083
+ restore_time=None,
1084
+ dbinstance_class=None,
1085
+ port=None,
1086
+ availability_zone=None):
1087
+
1088
+ """
1089
+ Create a new DBInstance from a point in time.
1090
+
1091
+ :type source_instance_id: string
1092
+ :param source_instance_id: The identifier for the source DBInstance.
1093
+
1094
+ :type target_instance_id: string
1095
+ :param target_instance_id: The identifier of the new DBInstance.
1096
+
1097
+ :type use_latest: bool
1098
+ :param use_latest: If True, the latest snapshot availabile will
1099
+ be used.
1100
+
1101
+ :type restore_time: datetime
1102
+ :param restore_time: The date and time to restore from. Only
1103
+ used if use_latest is False.
1104
+
1105
+ :type instance_class: str
1106
+ :param instance_class: The compute and memory capacity of the
1107
+ DBInstance. Valid values are:
1108
+ db.m1.small | db.m1.large | db.m1.xlarge |
1109
+ db.m2.2xlarge | db.m2.4xlarge
1110
+
1111
+ :type port: int
1112
+ :param port: Port number on which database accepts connections.
1113
+ Valid values [1115-65535]. Defaults to 3306.
1114
+
1115
+ :type availability_zone: str
1116
+ :param availability_zone: Name of the availability zone to place
1117
+ DBInstance into.
1118
+
1119
+ :rtype: :class:`boto.rds.dbinstance.DBInstance`
1120
+ :return: The newly created DBInstance
1121
+ """
1122
+ params = {'SourceDBInstanceIdentifier': source_instance_id,
1123
+ 'TargetDBInstanceIdentifier': target_instance_id}
1124
+ if use_latest:
1125
+ params['UseLatestRestorableTime'] = 'true'
1126
+ elif restore_time:
1127
+ params['RestoreTime'] = restore_time.isoformat()
1128
+ if dbinstance_class:
1129
+ params['DBInstanceClass'] = dbinstance_class
1130
+ if port:
1131
+ params['Port'] = port
1132
+ if availability_zone:
1133
+ params['AvailabilityZone'] = availability_zone
1134
+ return self.get_object('RestoreDBInstanceToPointInTime',
1135
+ params, DBInstance)
1136
+
1137
+ # Events
1138
+
1139
+ def get_all_events(self, source_identifier=None, source_type=None,
1140
+ start_time=None, end_time=None,
1141
+ max_records=None, marker=None):
1142
+ """
1143
+ Get information about events related to your DBInstances,
1144
+ DBSecurityGroups and DBParameterGroups.
1145
+
1146
+ :type source_identifier: str
1147
+ :param source_identifier: If supplied, the events returned will be
1148
+ limited to those that apply to the identified
1149
+ source. The value of this parameter depends
1150
+ on the value of source_type. If neither
1151
+ parameter is specified, all events in the time
1152
+ span will be returned.
1153
+
1154
+ :type source_type: str
1155
+ :param source_type: Specifies how the source_identifier should
1156
+ be interpreted. Valid values are:
1157
+ b-instance | db-security-group |
1158
+ db-parameter-group | db-snapshot
1159
+
1160
+ :type start_time: datetime
1161
+ :param start_time: The beginning of the time interval for events.
1162
+ If not supplied, all available events will
1163
+ be returned.
1164
+
1165
+ :type end_time: datetime
1166
+ :param end_time: The ending of the time interval for events.
1167
+ If not supplied, all available events will
1168
+ be returned.
1169
+
1170
+ :type max_records: int
1171
+ :param max_records: The maximum number of records to be returned.
1172
+ If more results are available, a MoreToken will
1173
+ be returned in the response that can be used to
1174
+ retrieve additional records. Default is 100.
1175
+
1176
+ :type marker: str
1177
+ :param marker: The marker provided by a previous request.
1178
+
1179
+ :rtype: list
1180
+ :return: A list of class:`boto.rds.event.Event`
1181
+ """
1182
+ params = {}
1183
+ if source_identifier and source_type:
1184
+ params['SourceIdentifier'] = source_identifier
1185
+ params['SourceType'] = source_type
1186
+ if start_time:
1187
+ params['StartTime'] = start_time.isoformat()
1188
+ if end_time:
1189
+ params['EndTime'] = end_time.isoformat()
1190
+ if max_records:
1191
+ params['MaxRecords'] = max_records
1192
+ if marker:
1193
+ params['Marker'] = marker
1194
+ return self.get_list('DescribeEvents', params, [('Event', Event)])