poolparty 1.3.15 → 1.4.0

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 (1171) hide show
  1. data/README.rdoc +2 -87
  2. data/Rakefile +85 -45
  3. data/VERSION.yml +2 -2
  4. data/bin/cloud +6 -10
  5. data/bin/cloud-bootstrap +2 -4
  6. data/bin/cloud-compile +1 -7
  7. data/bin/cloud-configure +1 -9
  8. data/bin/cloud-console +3 -6
  9. data/bin/cloud-contract +3 -7
  10. data/bin/cloud-list +4 -3
  11. data/bin/cloud-reboot +25 -0
  12. data/bin/cloud-show +13 -5
  13. data/bin/cloud-start +1 -26
  14. data/bin/cloud-terminate +3 -3
  15. data/examples/README.md +57 -0
  16. data/examples/chef_cloud/chef-repo/README +3 -0
  17. data/examples/chef_cloud/chef-repo/Rakefile +35 -0
  18. data/examples/chef_cloud/chef-repo/certificates/README +1 -0
  19. data/examples/chef_cloud/chef-repo/config/client.rb.example +22 -0
  20. data/examples/chef_cloud/chef-repo/config/rake.rb +60 -0
  21. data/examples/chef_cloud/chef-repo/config/server.rb.example +33 -0
  22. data/examples/chef_cloud/chef-repo/config/solo.rb.example +9 -0
  23. data/examples/chef_cloud/chef-repo/cookbooks/README +1 -0
  24. data/examples/chef_cloud/chef-repo/cookbooks/apache2/README.rdoc +68 -0
  25. data/examples/chef_cloud/chef-repo/cookbooks/apache2/attributes/apache.rb +74 -0
  26. data/examples/chef_cloud/chef-repo/cookbooks/apache2/definitions/apache_conf.rb +25 -0
  27. data/examples/chef_cloud/chef-repo/cookbooks/apache2/definitions/apache_module.rb +43 -0
  28. data/examples/chef_cloud/chef-repo/cookbooks/apache2/definitions/apache_site.rb +40 -0
  29. data/examples/chef_cloud/chef-repo/cookbooks/apache2/definitions/web_app.rb +49 -0
  30. data/examples/chef_cloud/chef-repo/cookbooks/apache2/files/default/apache2_module_conf_generate.pl +41 -0
  31. data/examples/chef_cloud/chef-repo/cookbooks/apache2/metadata.json +508 -0
  32. data/examples/chef_cloud/chef-repo/cookbooks/apache2/metadata.rb +191 -0
  33. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/default.rb +191 -0
  34. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/god_monitor.rb +33 -0
  35. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_alias.rb +22 -0
  36. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_auth_basic.rb +20 -0
  37. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_auth_digest.rb +20 -0
  38. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_authn_file.rb +20 -0
  39. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_authnz_ldap.rb +20 -0
  40. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_authz_default.rb +20 -0
  41. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_authz_groupfile.rb +20 -0
  42. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_authz_host.rb +20 -0
  43. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_authz_user.rb +20 -0
  44. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_autoindex.rb +22 -0
  45. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_cgi.rb +20 -0
  46. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_dav.rb +20 -0
  47. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_dav_svn.rb +22 -0
  48. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_deflate.rb +22 -0
  49. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_dir.rb +22 -0
  50. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_env.rb +20 -0
  51. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_expires.rb +20 -0
  52. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_fcgid.rb +46 -0
  53. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_headers.rb +20 -0
  54. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_ldap.rb +20 -0
  55. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_log_config.rb +24 -0
  56. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_mime.rb +22 -0
  57. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_negotiation.rb +22 -0
  58. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_php5.rb +32 -0
  59. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_proxy.rb +22 -0
  60. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_proxy_ajp.rb +20 -0
  61. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_proxy_balancer.rb +20 -0
  62. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_proxy_connect.rb +20 -0
  63. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_proxy_http.rb +20 -0
  64. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_python.rb +22 -0
  65. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_rails.rb +43 -0
  66. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_rewrite.rb +20 -0
  67. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_setenvif.rb +22 -0
  68. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_ssl.rb +42 -0
  69. data/examples/chef_cloud/chef-repo/cookbooks/apache2/recipes/mod_status.rb +22 -0
  70. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/a2enmod.erb +37 -0
  71. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/apache2.conf.erb +230 -0
  72. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/apache2.god.erb +19 -0
  73. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/charset.erb +6 -0
  74. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/default-site.erb +57 -0
  75. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/mods/README +2 -0
  76. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/mods/alias.conf.erb +24 -0
  77. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/mods/autoindex.conf.erb +101 -0
  78. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/mods/deflate.conf.erb +3 -0
  79. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/mods/dir.conf.erb +5 -0
  80. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/mods/fcgid.conf.erb +10 -0
  81. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/mods/mime.conf.erb +191 -0
  82. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/mods/negotiation.conf.erb +18 -0
  83. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/mods/proxy.conf.erb +19 -0
  84. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/mods/setenvif.conf.erb +28 -0
  85. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/mods/ssl.conf.erb +72 -0
  86. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/mods/status.conf.erb +16 -0
  87. data/examples/chef_cloud/chef-repo/cookbooks/apache2/templates/default/security.erb +50 -0
  88. data/examples/chef_cloud/chef-repo/cookbooks/apt/files/default/apt-cacher +9 -0
  89. data/examples/chef_cloud/chef-repo/cookbooks/apt/files/default/apt-cacher.conf +144 -0
  90. data/examples/chef_cloud/chef-repo/cookbooks/apt/files/default/apt-proxy-v2.conf +50 -0
  91. data/examples/chef_cloud/chef-repo/cookbooks/apt/metadata.json +51 -0
  92. data/examples/chef_cloud/chef-repo/cookbooks/apt/metadata.rb +11 -0
  93. data/examples/chef_cloud/chef-repo/cookbooks/apt/recipes/cacher.rb +42 -0
  94. data/examples/chef_cloud/chef-repo/cookbooks/apt/recipes/default.rb +31 -0
  95. data/examples/chef_cloud/chef-repo/cookbooks/apt/recipes/proxy.rb +34 -0
  96. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/README.rdoc +165 -0
  97. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/attributes/bootstrap.rb +49 -0
  98. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/metadata.json +57 -0
  99. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/metadata.rb +10 -0
  100. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/recipes/client.rb +94 -0
  101. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/recipes/default.rb +18 -0
  102. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/recipes/server.rb +120 -0
  103. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/templates/default/client.rb.erb +30 -0
  104. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/templates/default/server.rb.erb +32 -0
  105. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/templates/default/sv-chef-client-log-run.erb +2 -0
  106. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/templates/default/sv-chef-client-run.erb +4 -0
  107. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/templates/default/sv-chef-indexer-log-run.erb +2 -0
  108. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/templates/default/sv-chef-indexer-run.erb +4 -0
  109. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/templates/default/sv-chef-server-log-run.erb +2 -0
  110. data/examples/chef_cloud/chef-repo/cookbooks/bootstrap/templates/default/sv-chef-server-run.erb +4 -0
  111. data/examples/chef_cloud/chef-repo/cookbooks/chef/README.rdoc +221 -0
  112. data/examples/chef_cloud/chef-repo/cookbooks/chef/attributes/chef.rb +60 -0
  113. data/examples/chef_cloud/chef-repo/cookbooks/chef/metadata.json +231 -0
  114. data/examples/chef_cloud/chef-repo/cookbooks/chef/metadata.rb +87 -0
  115. data/examples/chef_cloud/chef-repo/cookbooks/chef/recipes/client.rb +76 -0
  116. data/examples/chef_cloud/chef-repo/cookbooks/chef/recipes/server.rb +75 -0
  117. data/examples/chef_cloud/chef-repo/cookbooks/chef/recipes/server_proxy.rb +59 -0
  118. data/examples/chef_cloud/chef-repo/cookbooks/chef/templates/default/chef_server.conf.erb +49 -0
  119. data/examples/chef_cloud/chef-repo/cookbooks/chef/templates/default/client.rb.erb +30 -0
  120. data/examples/chef_cloud/chef-repo/cookbooks/chef/templates/default/server.rb.erb +32 -0
  121. data/examples/chef_cloud/chef-repo/cookbooks/ec2/attributes/ec2_metadata.rb +44 -0
  122. data/examples/chef_cloud/chef-repo/cookbooks/ec2/attributes/ec2_recipe_options.rb +30 -0
  123. data/examples/chef_cloud/chef-repo/cookbooks/ec2/metadata.rb +9 -0
  124. data/examples/chef_cloud/chef-repo/cookbooks/ec2/recipes/default.rb +19 -0
  125. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/README.rdoc +8 -0
  126. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/attributes/default.rb +14 -0
  127. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/metadata.rb +12 -0
  128. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/recipes/default.rb +141 -0
  129. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/recipes/gmetad.rb +44 -0
  130. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/recipes/monitor_sshd.rb +14 -0
  131. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/recipes/monitor_watson.rb +14 -0
  132. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/recipes/web.rb +17 -0
  133. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/templates/default/bin/gmetad.erb +38 -0
  134. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/templates/default/bin/gmond.erb +38 -0
  135. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/templates/default/bin/monitors/sshd_ganglia.sh.erb +13 -0
  136. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/templates/default/bin/monitors/watson_channels.sh.erb +13 -0
  137. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/templates/default/ganglia-web-conf.php.erb +191 -0
  138. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/templates/default/gmetad.conf.erb +117 -0
  139. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/templates/default/gmond.conf.erb +426 -0
  140. data/examples/chef_cloud/chef-repo/cookbooks/ganglia/templates/default/jaunty.sources.list.erb +6 -0
  141. data/examples/chef_cloud/chef-repo/cookbooks/ntp/attributes/ntp.rb +11 -0
  142. data/examples/chef_cloud/chef-repo/cookbooks/ntp/metadata.json +97 -0
  143. data/examples/chef_cloud/chef-repo/cookbooks/ntp/metadata.rb +31 -0
  144. data/examples/chef_cloud/chef-repo/cookbooks/ntp/recipes/default.rb +41 -0
  145. data/examples/chef_cloud/chef-repo/cookbooks/ntp/templates/default/ntp.conf.erb +21 -0
  146. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/README.rdoc +55 -0
  147. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/attributes/rsyslog.rb +24 -0
  148. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/files/default/rsyslog.default +9 -0
  149. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/files/ubuntu-8.04/rsyslog.default +13 -0
  150. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/files/ubuntu-9.10/rsyslog.default +9 -0
  151. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/metadata.json +88 -0
  152. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/metadata.rb +29 -0
  153. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/recipes/client.rb +40 -0
  154. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/recipes/default.rb +61 -0
  155. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/recipes/server.rb +48 -0
  156. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/templates/default/remote.conf.erb +6 -0
  157. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/templates/default/rsyslog.conf.erb +121 -0
  158. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/templates/default/server.conf.erb +58 -0
  159. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/templates/ubuntu-9.10/50-default.conf.erb +69 -0
  160. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/templates/ubuntu-9.10/remote.conf.erb +6 -0
  161. data/examples/chef_cloud/chef-repo/cookbooks/rsyslog/templates/ubuntu-9.10/server.conf.erb +58 -0
  162. data/examples/chef_cloud/chef-repo/cookbooks/runit/attributes/sv_bin.rb +27 -0
  163. data/examples/chef_cloud/chef-repo/cookbooks/runit/definitions/runit_service.rb +75 -0
  164. data/examples/chef_cloud/chef-repo/cookbooks/runit/files/ubuntu-6.10/runsvdir +6 -0
  165. data/examples/chef_cloud/chef-repo/cookbooks/runit/files/ubuntu-7.04/runsvdir +7 -0
  166. data/examples/chef_cloud/chef-repo/cookbooks/runit/files/ubuntu-7.10/runsvdir +7 -0
  167. data/examples/chef_cloud/chef-repo/cookbooks/runit/files/ubuntu-8.04/runsvdir +7 -0
  168. data/examples/chef_cloud/chef-repo/cookbooks/runit/metadata.json +85 -0
  169. data/examples/chef_cloud/chef-repo/cookbooks/runit/metadata.rb +30 -0
  170. data/examples/chef_cloud/chef-repo/cookbooks/runit/recipes/default.rb +46 -0
  171. data/examples/chef_cloud/chef-repo/roles/README +1 -0
  172. data/examples/chef_cloud/chef-repo/roles/chef-upgrade.rb +14 -0
  173. data/examples/chef_cloud/chef-repo/site-cookbooks/README +1 -0
  174. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/README.rdoc +9 -0
  175. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/attributes/collectd.rb +3 -0
  176. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/files/ubuntu/collectd.default +17 -0
  177. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/metadata.rb +6 -0
  178. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/recipes/default.rb +62 -0
  179. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/templates/default/collectd.conf.erb +107 -0
  180. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/templates/default/collection.conf.erb +2 -0
  181. data/examples/chef_cloud/chef-repo/site-cookbooks/collectd/templates/default/collection3.conf.erb +4 -0
  182. data/examples/chef_cloud/chef-repo/site-cookbooks/hosts/attributes/hosts.rb +1 -0
  183. data/examples/chef_cloud/chef-repo/site-cookbooks/hosts/metadata.rb +4 -0
  184. data/examples/chef_cloud/chef-repo/site-cookbooks/hosts/recipes/default.rb +3 -0
  185. data/examples/chef_cloud/chef-repo/site-cookbooks/hosts/templates/default/hosts.erb +18 -0
  186. data/examples/chef_cloud/chef-repo/site-cookbooks/sysadmin/recipes/default.rb +22 -0
  187. data/examples/chef_cloud/chef-repo/site-cookbooks/ubuntu/metadata.json +42 -0
  188. data/examples/chef_cloud/chef-repo/site-cookbooks/ubuntu/metadata.rb +7 -0
  189. data/examples/chef_cloud/chef-repo/site-cookbooks/ubuntu/recipes/default.rb +31 -0
  190. data/examples/chef_cloud/chef-repo/site-cookbooks/ubuntu/templates/default/sources.list.erb +16 -0
  191. data/examples/chef_cloud/sample +2 -0
  192. data/examples/chef_cloud.rb +24 -0
  193. data/examples/ec2_infrastructure_only.rb +80 -0
  194. data/examples/simple.rb +22 -10
  195. data/lib/cloud_providers/cloud_provider.rb +43 -63
  196. data/lib/cloud_providers/connections.rb +29 -11
  197. data/lib/cloud_providers/default/base.rb +4 -0
  198. data/lib/cloud_providers/ec2/ec2.rb +258 -143
  199. data/lib/cloud_providers/ec2/ec2_instance.rb +87 -82
  200. data/lib/cloud_providers/ec2/helpers/authorize.rb +33 -0
  201. data/lib/cloud_providers/ec2/helpers/ec2_helper.rb +30 -0
  202. data/lib/cloud_providers/ec2/helpers/elastic_auto_scaler.rb +300 -0
  203. data/lib/cloud_providers/ec2/helpers/elastic_block_store.rb +9 -0
  204. data/lib/cloud_providers/ec2/helpers/elastic_ip.rb +33 -0
  205. data/lib/cloud_providers/ec2/helpers/elastic_load_balancer.rb +200 -0
  206. data/lib/cloud_providers/ec2/helpers/revoke.rb +24 -0
  207. data/lib/cloud_providers/ec2/helpers/security_group.rb +98 -0
  208. data/lib/cloud_providers/remote_instance.rb +139 -0
  209. data/lib/cloud_providers.rb +4 -4
  210. data/lib/core/array.rb +0 -37
  211. data/lib/core/hash.rb +11 -37
  212. data/lib/core/object.rb +5 -86
  213. data/lib/core/string.rb +1 -103
  214. data/lib/keypair.rb +22 -11
  215. data/lib/poolparty/base.rb +15 -216
  216. data/lib/poolparty/chef_attribute.rb +36 -0
  217. data/lib/poolparty/cloud.rb +222 -260
  218. data/lib/poolparty/pool.rb +18 -171
  219. data/lib/poolparty.rb +6 -25
  220. data/test/fixtures/clouds/simple_cloud.rb +4 -6
  221. data/test/fixtures/ec2/ec2-describe-instances_response_body.xml +2 -2
  222. data/test/fixtures/ec2/elb-describe-load-balancers.xml +75 -0
  223. data/test/fixtures/resources/fake_plugin.rb +5 -0
  224. data/test/lib/core/array_test.rb +1 -34
  225. data/test/lib/core/hash_test.rb +12 -20
  226. data/test/lib/core/object_test.rb +6 -34
  227. data/test/lib/core/string_test.rb +2 -35
  228. data/test/lib/core/symbol_test.rb +0 -4
  229. data/test/lib/poolparty/cloud_test.rb +14 -133
  230. data/test/lib/poolparty/keypair_test.rb +1 -3
  231. data/test/lib/poolparty/pool_test.rb +5 -19
  232. data/test/test_methods.rb +6 -11
  233. data/vendor/gems/amazon-ec2/ChangeLog +289 -0
  234. data/vendor/gems/amazon-ec2/LICENSE +66 -0
  235. data/vendor/gems/amazon-ec2/README.rdoc +356 -0
  236. data/vendor/gems/amazon-ec2/README_dev.rdoc +12 -0
  237. data/vendor/gems/amazon-ec2/Rakefile +101 -0
  238. data/vendor/gems/amazon-ec2/VERSION +1 -0
  239. data/vendor/gems/amazon-ec2/amazon-ec2.gemspec +134 -0
  240. data/vendor/gems/amazon-ec2/bin/ec2-gem-example.rb +137 -0
  241. data/vendor/gems/amazon-ec2/bin/ec2-gem-profile.rb +10 -0
  242. data/vendor/gems/amazon-ec2/bin/ec2sh +62 -0
  243. data/vendor/gems/amazon-ec2/bin/setup.rb +28 -0
  244. data/vendor/gems/amazon-ec2/deps.rip +1 -0
  245. data/vendor/gems/amazon-ec2/lib/AWS/Autoscaling/autoscaling.rb +283 -0
  246. data/vendor/gems/amazon-ec2/lib/AWS/Autoscaling.rb +70 -0
  247. data/vendor/gems/amazon-ec2/lib/AWS/Cloudwatch/monitoring.rb +80 -0
  248. data/vendor/gems/amazon-ec2/lib/AWS/Cloudwatch.rb +32 -0
  249. data/vendor/gems/amazon-ec2/lib/AWS/EC2/availability_zones.rb +21 -0
  250. data/vendor/gems/amazon-ec2/lib/AWS/EC2/console.rb +23 -0
  251. data/vendor/gems/amazon-ec2/lib/AWS/EC2/elastic_ips.rb +81 -0
  252. data/vendor/gems/amazon-ec2/lib/AWS/EC2/image_attributes.rb +133 -0
  253. data/vendor/gems/amazon-ec2/lib/AWS/EC2/images.rb +101 -0
  254. data/vendor/gems/amazon-ec2/lib/AWS/EC2/instances.rb +212 -0
  255. data/vendor/gems/amazon-ec2/lib/AWS/EC2/keypairs.rb +61 -0
  256. data/vendor/gems/amazon-ec2/lib/AWS/EC2/products.rb +21 -0
  257. data/vendor/gems/amazon-ec2/lib/AWS/EC2/security_groups.rb +183 -0
  258. data/vendor/gems/amazon-ec2/lib/AWS/EC2/snapshots.rb +59 -0
  259. data/vendor/gems/amazon-ec2/lib/AWS/EC2/volumes.rb +115 -0
  260. data/vendor/gems/amazon-ec2/lib/AWS/EC2.rb +33 -0
  261. data/vendor/gems/amazon-ec2/lib/AWS/ELB/load_balancers.rb +205 -0
  262. data/vendor/gems/amazon-ec2/lib/AWS/ELB.rb +71 -0
  263. data/vendor/gems/amazon-ec2/lib/AWS/exceptions.rb +122 -0
  264. data/vendor/gems/amazon-ec2/lib/AWS/responses.rb +21 -0
  265. data/vendor/gems/amazon-ec2/lib/AWS.rb +294 -0
  266. data/vendor/gems/amazon-ec2/perftools/ec2prof +0 -0
  267. data/vendor/gems/amazon-ec2/perftools/ec2prof-results.dot +193 -0
  268. data/vendor/gems/amazon-ec2/perftools/ec2prof-results.txt +126 -0
  269. data/vendor/gems/amazon-ec2/perftools/ec2prof.symbols +129 -0
  270. data/vendor/gems/amazon-ec2/test/test_Autoscaling_groups.rb +336 -0
  271. data/vendor/gems/amazon-ec2/test/test_EC2.rb +68 -0
  272. data/vendor/gems/amazon-ec2/test/test_EC2_availability_zones.rb +49 -0
  273. data/vendor/gems/amazon-ec2/test/test_EC2_console.rb +54 -0
  274. data/vendor/gems/amazon-ec2/test/test_EC2_elastic_ips.rb +144 -0
  275. data/vendor/gems/amazon-ec2/test/test_EC2_image_attributes.rb +238 -0
  276. data/vendor/gems/amazon-ec2/test/test_EC2_images.rb +197 -0
  277. data/vendor/gems/amazon-ec2/test/test_EC2_instances.rb +429 -0
  278. data/vendor/gems/amazon-ec2/test/test_EC2_keypairs.rb +123 -0
  279. data/vendor/gems/amazon-ec2/test/test_EC2_products.rb +48 -0
  280. data/vendor/gems/amazon-ec2/test/test_EC2_responses.rb +53 -0
  281. data/vendor/gems/amazon-ec2/test/test_EC2_s3_xmlsimple.rb +80 -0
  282. data/vendor/gems/amazon-ec2/test/test_EC2_security_groups.rb +205 -0
  283. data/vendor/gems/amazon-ec2/test/test_EC2_snapshots.rb +83 -0
  284. data/vendor/gems/amazon-ec2/test/test_EC2_volumes.rb +142 -0
  285. data/vendor/gems/amazon-ec2/test/test_ELB_load_balancers.rb +239 -0
  286. data/vendor/gems/amazon-ec2/test/test_helper.rb +23 -0
  287. data/vendor/gems/amazon-ec2/wsdl/2007-08-29.ec2.wsdl +1269 -0
  288. data/vendor/gems/amazon-ec2/wsdl/2008-02-01.ec2.wsdl +1614 -0
  289. data/vendor/gems/amazon-ec2/wsdl/2008-05-05.ec2.wsdl +2052 -0
  290. data/vendor/gems/amazon-ec2/wsdl/2008-12-01.ec2.wsdl +2354 -0
  291. data/vendor/gems/searchable_paths/README.rdoc +18 -0
  292. data/vendor/gems/searchable_paths/Rakefile +56 -0
  293. data/vendor/gems/searchable_paths/lib/searchable_paths.rb +81 -0
  294. data/vendor/gems/searchable_paths/test/searchable_paths_test.rb +74 -0
  295. data/vendor/gems/searchable_paths/test/test_helper.rb +16 -0
  296. metadata +269 -886
  297. data/bin/cloud-misc +0 -34
  298. data/bin/cloud-osxcopy +0 -26
  299. data/bin/cloud-setup +0 -36
  300. data/bin/cloud-thrift +0 -91
  301. data/bin/cloud-verify +0 -40
  302. data/examples/basic.rb +0 -30
  303. data/examples/custom_bootstrap.sh +0 -7
  304. data/examples/deploy.rb +0 -5
  305. data/examples/eucalyptus.rb +0 -63
  306. data/examples/eucalyptus_test_run.sh +0 -31
  307. data/examples/monitored_cloud.rb +0 -22
  308. data/examples/ssh_garden.rb +0 -21
  309. data/examples/thrift/erlang/Emakefile +0 -5
  310. data/examples/thrift/erlang/Makefile +0 -26
  311. data/examples/thrift/erlang/deps/thrift/COPYING +0 -24
  312. data/examples/thrift/erlang/deps/thrift/LICENSE +0 -24
  313. data/examples/thrift/erlang/deps/thrift/Makefile +0 -18
  314. data/examples/thrift/erlang/deps/thrift/README +0 -31
  315. data/examples/thrift/erlang/deps/thrift/build/beamver +0 -59
  316. data/examples/thrift/erlang/deps/thrift/build/buildtargets.mk +0 -14
  317. data/examples/thrift/erlang/deps/thrift/build/colors.mk +0 -24
  318. data/examples/thrift/erlang/deps/thrift/build/docs.mk +0 -12
  319. data/examples/thrift/erlang/deps/thrift/build/mime.types +0 -98
  320. data/examples/thrift/erlang/deps/thrift/build/otp.mk +0 -146
  321. data/examples/thrift/erlang/deps/thrift/build/otp_subdir.mk +0 -85
  322. data/examples/thrift/erlang/deps/thrift/build/raw_test.mk +0 -29
  323. data/examples/thrift/erlang/deps/thrift/ebin/thrift.app +0 -44
  324. data/examples/thrift/erlang/deps/thrift/ebin/thrift.appup +0 -1
  325. data/examples/thrift/erlang/deps/thrift/include/thrift_constants.hrl +0 -40
  326. data/examples/thrift/erlang/deps/thrift/include/thrift_protocol.hrl +0 -12
  327. data/examples/thrift/erlang/deps/thrift/src/Makefile +0 -116
  328. data/examples/thrift/erlang/deps/thrift/src/test_handler.erl +0 -7
  329. data/examples/thrift/erlang/deps/thrift/src/test_service.erl +0 -10
  330. data/examples/thrift/erlang/deps/thrift/src/thrift.app.src +0 -44
  331. data/examples/thrift/erlang/deps/thrift/src/thrift.appup.src +0 -1
  332. data/examples/thrift/erlang/deps/thrift/src/thrift_app.erl +0 -55
  333. data/examples/thrift/erlang/deps/thrift/src/thrift_base64_transport.erl +0 -45
  334. data/examples/thrift/erlang/deps/thrift/src/thrift_binary_protocol.erl +0 -318
  335. data/examples/thrift/erlang/deps/thrift/src/thrift_buffered_transport.erl +0 -168
  336. data/examples/thrift/erlang/deps/thrift/src/thrift_client.erl +0 -328
  337. data/examples/thrift/erlang/deps/thrift/src/thrift_disk_log_transport.erl +0 -106
  338. data/examples/thrift/erlang/deps/thrift/src/thrift_file_transport.erl +0 -69
  339. data/examples/thrift/erlang/deps/thrift/src/thrift_framed_transport.erl +0 -196
  340. data/examples/thrift/erlang/deps/thrift/src/thrift_http_transport.erl +0 -169
  341. data/examples/thrift/erlang/deps/thrift/src/thrift_processor.erl +0 -174
  342. data/examples/thrift/erlang/deps/thrift/src/thrift_protocol.erl +0 -326
  343. data/examples/thrift/erlang/deps/thrift/src/thrift_server.erl +0 -171
  344. data/examples/thrift/erlang/deps/thrift/src/thrift_service.erl +0 -6
  345. data/examples/thrift/erlang/deps/thrift/src/thrift_socket_server.erl +0 -245
  346. data/examples/thrift/erlang/deps/thrift/src/thrift_socket_transport.erl +0 -100
  347. data/examples/thrift/erlang/deps/thrift/src/thrift_sup.erl +0 -53
  348. data/examples/thrift/erlang/deps/thrift/src/thrift_transport.erl +0 -38
  349. data/examples/thrift/erlang/deps/thrift/vsn.mk +0 -1
  350. data/examples/thrift/erlang/include/commandInterface_thrift.hrl +0 -5
  351. data/examples/thrift/erlang/include/poolparty_constants.hrl +0 -9
  352. data/examples/thrift/erlang/include/poolparty_types.hrl +0 -8
  353. data/examples/thrift/erlang/src/commandInterface_thrift.erl +0 -29
  354. data/examples/thrift/erlang/src/poolparty_types.erl +0 -30
  355. data/examples/thrift/erlang/src/thrift_example.erl +0 -32
  356. data/examples/thrift/thrift_example.py +0 -28
  357. data/examples/thrift/thrift_example.rb +0 -40
  358. data/examples/vmware.rb +0 -28
  359. data/lib/cloud_providers/cloud_provider_instance.rb +0 -288
  360. data/lib/cloud_providers/ec2/ec2_helpers.rb +0 -100
  361. data/lib/cloud_providers/ec2/ec2_response.rb +0 -79
  362. data/lib/cloud_providers/ssh/ssh.rb +0 -68
  363. data/lib/cloud_providers/ssh/ssh_instance.rb +0 -41
  364. data/lib/cloud_providers/vmware/vmware.rb +0 -130
  365. data/lib/cloud_providers/vmware/vmware_instance.rb +0 -56
  366. data/lib/core/file.rb +0 -12
  367. data/lib/core/integer.rb +0 -11
  368. data/lib/core/module.rb +0 -14
  369. data/lib/core/proc.rb +0 -55
  370. data/lib/core/time.rb +0 -62
  371. data/lib/dependency_resolver.rb +0 -11
  372. data/lib/dependency_resolvers/base.rb +0 -115
  373. data/lib/dependency_resolvers/chef/resources/chef_attributes_file.rb +0 -51
  374. data/lib/dependency_resolvers/chef/resources/chef_recipe.rb +0 -51
  375. data/lib/dependency_resolvers/chef/resources/http_request.rb +0 -39
  376. data/lib/dependency_resolvers/chef/resources/remote_directory.rb +0 -54
  377. data/lib/dependency_resolvers/chef/resources/remote_file.rb +0 -69
  378. data/lib/dependency_resolvers/chef/resources/route.rb +0 -52
  379. data/lib/dependency_resolvers/chef/resources/script.rb +0 -62
  380. data/lib/dependency_resolvers/chef.rb +0 -239
  381. data/lib/dependency_resolvers/proxy_object.rb +0 -98
  382. data/lib/mixins/askable.rb +0 -163
  383. data/lib/mixins/callbacks.rb +0 -56
  384. data/lib/mixins/delayed.rb +0 -65
  385. data/lib/mixins/pinger.rb +0 -31
  386. data/lib/mixins/printing.rb +0 -35
  387. data/lib/mixins/searchable_paths.rb +0 -87
  388. data/lib/poolparty/default.rb +0 -33
  389. data/lib/poolparty/dsl_base.rb +0 -36
  390. data/lib/poolparty/installer.rb +0 -111
  391. data/lib/poolparty/installers/ec2.rb +0 -88
  392. data/lib/poolparty/installers/vmware.rb +0 -161
  393. data/lib/poolparty/monitor.rb +0 -83
  394. data/lib/poolparty/plugin.rb +0 -8
  395. data/lib/poolparty/plugins/apache.rb +0 -228
  396. data/lib/poolparty/plugins/apache2/apache2.conf.erb +0 -630
  397. data/lib/poolparty/plugins/apache2/base.conf.erb +0 -171
  398. data/lib/poolparty/plugins/apache2/browser_fixes.conf.erb +0 -26
  399. data/lib/poolparty/plugins/apache2/default-site.conf.erb +0 -41
  400. data/lib/poolparty/plugins/apache2/mime-minimal.conf.erb +0 -15
  401. data/lib/poolparty/plugins/apache2/passenger_site.rb +0 -83
  402. data/lib/poolparty/plugins/apache2/php5.rb +0 -41
  403. data/lib/poolparty/plugins/apache2/virtual_host.rb +0 -59
  404. data/lib/poolparty/plugins/collectd/templates/collectd.conf.erb +0 -369
  405. data/lib/poolparty/plugins/collectd.rb +0 -24
  406. data/lib/poolparty/plugins/git/git_repository.rb +0 -83
  407. data/lib/poolparty/plugins/git.rb +0 -20
  408. data/lib/poolparty/plugins/hermes.rb +0 -102
  409. data/lib/poolparty/plugins/rails/app.rb +0 -29
  410. data/lib/poolparty/plugins/rails.rb +0 -25
  411. data/lib/poolparty/pool_party_log.rb +0 -47
  412. data/lib/poolparty/resource.rb +0 -296
  413. data/lib/poolparty/resources/conditional.rb +0 -65
  414. data/lib/poolparty/resources/cron.rb +0 -64
  415. data/lib/poolparty/resources/directory.rb +0 -54
  416. data/lib/poolparty/resources/exec.rb +0 -61
  417. data/lib/poolparty/resources/file.rb +0 -87
  418. data/lib/poolparty/resources/gem_package.rb +0 -55
  419. data/lib/poolparty/resources/group.rb +0 -46
  420. data/lib/poolparty/resources/line.rb +0 -67
  421. data/lib/poolparty/resources/link.rb +0 -50
  422. data/lib/poolparty/resources/mount.rb +0 -57
  423. data/lib/poolparty/resources/package.rb +0 -55
  424. data/lib/poolparty/resources/service.rb +0 -58
  425. data/lib/poolparty/resources/user.rb +0 -63
  426. data/lib/poolparty/resources/variable.rb +0 -61
  427. data/lib/proto/command_interface_handler.rb +0 -66
  428. data/lib/proto/command_query_handler.rb +0 -19
  429. data/lib/proto/gen-erl/commandInterface_thrift.erl +0 -29
  430. data/lib/proto/gen-erl/commandInterface_thrift.hrl +0 -5
  431. data/lib/proto/gen-erl/poolparty_constants.hrl +0 -9
  432. data/lib/proto/gen-erl/poolparty_types.erl +0 -30
  433. data/lib/proto/gen-erl/poolparty_types.hrl +0 -8
  434. data/lib/proto/gen-py/cloudthrift/CommandInterface-remote +0 -79
  435. data/lib/proto/gen-py/cloudthrift/CommandInterface.py +0 -251
  436. data/lib/proto/gen-py/cloudthrift/CommandInterface.pyc +0 -0
  437. data/lib/proto/gen-py/cloudthrift/__init__.py +0 -1
  438. data/lib/proto/gen-py/cloudthrift/__init__.pyc +0 -0
  439. data/lib/proto/gen-py/cloudthrift/constants.py +0 -9
  440. data/lib/proto/gen-py/cloudthrift/constants.pyc +0 -0
  441. data/lib/proto/gen-py/cloudthrift/ttypes.py +0 -160
  442. data/lib/proto/gen-py/cloudthrift/ttypes.pyc +0 -0
  443. data/lib/proto/gen-py/thrift/TSCons.py +0 -33
  444. data/lib/proto/gen-py/thrift/Thrift.py +0 -123
  445. data/lib/proto/gen-py/thrift/Thrift.pyc +0 -0
  446. data/lib/proto/gen-py/thrift/__init__.py +0 -20
  447. data/lib/proto/gen-py/thrift/__init__.pyc +0 -0
  448. data/lib/proto/gen-py/thrift/protocol/TBinaryProtocol.py +0 -259
  449. data/lib/proto/gen-py/thrift/protocol/TBinaryProtocol.pyc +0 -0
  450. data/lib/proto/gen-py/thrift/protocol/TProtocol.py +0 -205
  451. data/lib/proto/gen-py/thrift/protocol/TProtocol.pyc +0 -0
  452. data/lib/proto/gen-py/thrift/protocol/__init__.py +0 -20
  453. data/lib/proto/gen-py/thrift/protocol/__init__.pyc +0 -0
  454. data/lib/proto/gen-py/thrift/protocol/fastbinary.c +0 -1203
  455. data/lib/proto/gen-py/thrift/server/THttpServer.py +0 -63
  456. data/lib/proto/gen-py/thrift/server/TNonblockingServer.py +0 -309
  457. data/lib/proto/gen-py/thrift/server/TServer.py +0 -270
  458. data/lib/proto/gen-py/thrift/server/__init__.py +0 -20
  459. data/lib/proto/gen-py/thrift/transport/THttpClient.py +0 -100
  460. data/lib/proto/gen-py/thrift/transport/TSocket.py +0 -149
  461. data/lib/proto/gen-py/thrift/transport/TSocket.pyc +0 -0
  462. data/lib/proto/gen-py/thrift/transport/TTransport.py +0 -326
  463. data/lib/proto/gen-py/thrift/transport/TTransport.pyc +0 -0
  464. data/lib/proto/gen-py/thrift/transport/TTwisted.py +0 -181
  465. data/lib/proto/gen-py/thrift/transport/__init__.py +0 -20
  466. data/lib/proto/gen-py/thrift/transport/__init__.pyc +0 -0
  467. data/lib/proto/gen-rb/command_interface.rb +0 -84
  468. data/lib/proto/gen-rb/poolparty_constants.rb +0 -10
  469. data/lib/proto/gen-rb/poolparty_types.rb +0 -45
  470. data/lib/proto/poolparty.thrift +0 -18
  471. data/lib/provision/bootstrap_scripts/build_centos.sh +0 -72
  472. data/lib/provision/bootstrap_scripts/build_ubuntu.sh +0 -76
  473. data/lib/provision/bootstrap_scripts/determine_os.sh +0 -21
  474. data/lib/provision/bootstrapper.rb +0 -44
  475. data/lib/provision/configure_scripts/configure_centos.erb +0 -7
  476. data/lib/provision/configure_scripts/configure_ubuntu.erb +0 -7
  477. data/tasks/development.rake +0 -91
  478. data/tasks/poolparty.rake +0 -118
  479. data/tasks/test.rake +0 -40
  480. data/test/fixtures/clouds/fake_clouds.rb +0 -9
  481. data/test/lib/cloud_providers/cloud_provider_instance_test.rb +0 -68
  482. data/test/lib/cloud_providers/cloud_provider_test.rb +0 -25
  483. data/test/lib/cloud_providers/connections_test.rb +0 -71
  484. data/test/lib/cloud_providers/ec2/ec2_helpers_test.rb +0 -29
  485. data/test/lib/cloud_providers/ec2/ec2_instance_test.rb +0 -68
  486. data/test/lib/cloud_providers/ec2/ec2_response_test.rb +0 -41
  487. data/test/lib/cloud_providers/ec2/ec2_test.rb +0 -120
  488. data/test/lib/cloud_providers/ssh/ssh_test.rb +0 -61
  489. data/test/lib/cloud_providers/vmware/vmware_test.rb +0 -46
  490. data/test/lib/core/integer_test.rb +0 -19
  491. data/test/lib/core/module_test.rb +0 -38
  492. data/test/lib/core/proc_test.rb +0 -26
  493. data/test/lib/core/time_test.rb +0 -51
  494. data/test/lib/dependency_resolvers/base_test.rb +0 -42
  495. data/test/lib/dependency_resolvers/chef/resources/chef_recipe_test.rb +0 -21
  496. data/test/lib/dependency_resolvers/chef/resources/http_request_test.rb +0 -29
  497. data/test/lib/dependency_resolvers/chef/resources/remote_directory_test.rb +0 -45
  498. data/test/lib/dependency_resolvers/chef/resources/remote_file_test.rb +0 -36
  499. data/test/lib/dependency_resolvers/chef/resources/route_test.rb +0 -37
  500. data/test/lib/dependency_resolvers/chef/resources/script_test.rb +0 -49
  501. data/test/lib/dependency_resolvers/chef_test.rb +0 -136
  502. data/test/lib/dependency_resolvers/proxy_object_test.rb +0 -75
  503. data/test/lib/mixins/callbacks_test.rb +0 -48
  504. data/test/lib/mixins/delayed_test.rb +0 -50
  505. data/test/lib/mixins/searchable_paths_test.rb +0 -83
  506. data/test/lib/poolparty/base_test.rb +0 -47
  507. data/test/lib/poolparty/default_test.rb +0 -17
  508. data/test/lib/poolparty/dsl_base_test.rb +0 -30
  509. data/test/lib/poolparty/installers/vmware_installer_test.rb +0 -16
  510. data/test/lib/poolparty/monitor_test.rb +0 -57
  511. data/test/lib/poolparty/plugins/apache2/php5_test.rb +0 -26
  512. data/test/lib/poolparty/plugins/apache2/virtual_host_test.rb +0 -28
  513. data/test/lib/poolparty/plugins/apache_test.rb +0 -35
  514. data/test/lib/poolparty/pool_party_log_test.rb +0 -17
  515. data/test/lib/poolparty/resource_test.rb +0 -162
  516. data/test/lib/poolparty/resources/conditional_test.rb +0 -50
  517. data/test/lib/poolparty/resources/cron_test.rb +0 -31
  518. data/test/lib/poolparty/resources/directory_test.rb +0 -21
  519. data/test/lib/poolparty/resources/exec_test.rb +0 -62
  520. data/test/lib/poolparty/resources/file_test.rb +0 -38
  521. data/test/lib/poolparty/resources/group_test.rb +0 -21
  522. data/test/lib/poolparty/resources/line_test.rb +0 -20
  523. data/test/lib/poolparty/resources/link_test.rb +0 -27
  524. data/test/lib/poolparty/resources/mount_test.rb +0 -32
  525. data/test/lib/poolparty/resources/package_test.rb +0 -28
  526. data/test/lib/poolparty/resources/service_test.rb +0 -31
  527. data/test/lib/poolparty/resources/user_test.rb +0 -33
  528. data/test/lib/poolparty/resources/variable_test.rb +0 -43
  529. data/test/lib/proto/command_query_handler_test.rb +0 -11
  530. data/test/lib/provision/base_test.rb +0 -16
  531. data/test/lib/provision/bootstrapper_test.rb +0 -19
  532. data/vendor/chef/apache2/README.rdoc +0 -59
  533. data/vendor/chef/apache2/attributes/apache.rb +0 -72
  534. data/vendor/chef/apache2/definitions/apache_module.rb +0 -36
  535. data/vendor/chef/apache2/definitions/apache_site.rb +0 -36
  536. data/vendor/chef/apache2/definitions/web_app.rb +0 -45
  537. data/vendor/chef/apache2/files/default/apache2_module_conf_generate.pl +0 -41
  538. data/vendor/chef/apache2/recipes/default.rb +0 -132
  539. data/vendor/chef/apache2/recipes/mod_alias.rb +0 -20
  540. data/vendor/chef/apache2/recipes/mod_auth_basic.rb +0 -20
  541. data/vendor/chef/apache2/recipes/mod_auth_digest.rb +0 -20
  542. data/vendor/chef/apache2/recipes/mod_authn_file.rb +0 -20
  543. data/vendor/chef/apache2/recipes/mod_authnz_ldap.rb +0 -20
  544. data/vendor/chef/apache2/recipes/mod_authz_default.rb +0 -20
  545. data/vendor/chef/apache2/recipes/mod_authz_groupfile.rb +0 -20
  546. data/vendor/chef/apache2/recipes/mod_authz_host.rb +0 -20
  547. data/vendor/chef/apache2/recipes/mod_authz_user.rb +0 -20
  548. data/vendor/chef/apache2/recipes/mod_autoindex.rb +0 -20
  549. data/vendor/chef/apache2/recipes/mod_cgi.rb +0 -20
  550. data/vendor/chef/apache2/recipes/mod_dav.rb +0 -20
  551. data/vendor/chef/apache2/recipes/mod_dav_svn.rb +0 -20
  552. data/vendor/chef/apache2/recipes/mod_deflate.rb +0 -20
  553. data/vendor/chef/apache2/recipes/mod_dir.rb +0 -20
  554. data/vendor/chef/apache2/recipes/mod_env.rb +0 -20
  555. data/vendor/chef/apache2/recipes/mod_expires.rb +0 -20
  556. data/vendor/chef/apache2/recipes/mod_fcgid.rb +0 -35
  557. data/vendor/chef/apache2/recipes/mod_headers.rb +0 -20
  558. data/vendor/chef/apache2/recipes/mod_ldap.rb +0 -20
  559. data/vendor/chef/apache2/recipes/mod_log_config.rb +0 -20
  560. data/vendor/chef/apache2/recipes/mod_mime.rb +0 -20
  561. data/vendor/chef/apache2/recipes/mod_negotiation.rb +0 -20
  562. data/vendor/chef/apache2/recipes/mod_php5.rb +0 -27
  563. data/vendor/chef/apache2/recipes/mod_proxy.rb +0 -20
  564. data/vendor/chef/apache2/recipes/mod_proxy_http.rb +0 -20
  565. data/vendor/chef/apache2/recipes/mod_python.rb +0 -22
  566. data/vendor/chef/apache2/recipes/mod_rewrite.rb +0 -20
  567. data/vendor/chef/apache2/recipes/mod_setenvif.rb +0 -20
  568. data/vendor/chef/apache2/recipes/mod_ssl.rb +0 -20
  569. data/vendor/chef/apache2/recipes/mod_status.rb +0 -20
  570. data/vendor/chef/apache2/templates/default/a2enmod.erb +0 -37
  571. data/vendor/chef/apache2/templates/default/apache2.conf.erb +0 -630
  572. data/vendor/chef/apache2/templates/default/default-site.erb +0 -45
  573. data/vendor/chef/chef-deploy/LICENSE +0 -201
  574. data/vendor/chef/chef-deploy/README.rdoc +0 -24
  575. data/vendor/chef/chef-deploy/Rakefile +0 -57
  576. data/vendor/chef/chef-deploy/TODO +0 -4
  577. data/vendor/chef/chef-deploy/lib/chef-deploy/cached_deploy.rb +0 -230
  578. data/vendor/chef/chef-deploy/lib/chef-deploy/git.rb +0 -132
  579. data/vendor/chef/chef-deploy/lib/chef-deploy/subversion.rb +0 -98
  580. data/vendor/chef/chef-deploy/lib/chef-deploy.rb +0 -183
  581. data/vendor/gems/colors/README.rdoc +0 -52
  582. data/vendor/gems/colors/Rakefile +0 -56
  583. data/vendor/gems/colors/VERSION.yml +0 -4
  584. data/vendor/gems/colors/colors.gemspec +0 -29
  585. data/vendor/gems/colors/lib/colors.rb +0 -45
  586. data/vendor/gems/colors/test/colors_test.rb +0 -26
  587. data/vendor/gems/colors/test/test_helper.rb +0 -10
  588. data/vendor/gems/context/History.txt +0 -10
  589. data/vendor/gems/context/License.txt +0 -20
  590. data/vendor/gems/context/Manifest.txt +0 -26
  591. data/vendor/gems/context/README.rdoc +0 -158
  592. data/vendor/gems/context/Rakefile +0 -4
  593. data/vendor/gems/context/config/hoe.rb +0 -73
  594. data/vendor/gems/context/config/requirements.rb +0 -15
  595. data/vendor/gems/context/context.gemspec +0 -44
  596. data/vendor/gems/context/countloc.rb +0 -65
  597. data/vendor/gems/context/coverage/-Library-Ruby-Gems-1_8-gems-rcov-0_8_1_2_0-lib-rcov_rb.html +0 -1598
  598. data/vendor/gems/context/coverage/index.html +0 -441
  599. data/vendor/gems/context/coverage/lib-context-context_rb.html +0 -669
  600. data/vendor/gems/context/coverage/lib-context-core_ext-string_rb.html +0 -627
  601. data/vendor/gems/context/coverage/lib-context-lifecycle_rb.html +0 -683
  602. data/vendor/gems/context/coverage/lib-context-shared_behavior_rb.html +0 -708
  603. data/vendor/gems/context/coverage/lib-context-suite_rb.html +0 -649
  604. data/vendor/gems/context/coverage/lib-context-test_rb.html +0 -637
  605. data/vendor/gems/context/coverage/lib-context-version_rb.html +0 -619
  606. data/vendor/gems/context/coverage/lib-context_rb.html +0 -623
  607. data/vendor/gems/context/lib/context/context.rb +0 -64
  608. data/vendor/gems/context/lib/context/core_ext/rails_hacks.rb +0 -10
  609. data/vendor/gems/context/lib/context/core_ext/string.rb +0 -17
  610. data/vendor/gems/context/lib/context/lifecycle.rb +0 -103
  611. data/vendor/gems/context/lib/context/shared_behavior.rb +0 -98
  612. data/vendor/gems/context/lib/context/suite.rb +0 -39
  613. data/vendor/gems/context/lib/context/test.rb +0 -37
  614. data/vendor/gems/context/lib/context/version.rb +0 -9
  615. data/vendor/gems/context/lib/context.rb +0 -19
  616. data/vendor/gems/context/setup.rb +0 -1585
  617. data/vendor/gems/context/tasks/deployment.rake +0 -34
  618. data/vendor/gems/context/tasks/environment.rake +0 -7
  619. data/vendor/gems/context/test/test_context.rb +0 -57
  620. data/vendor/gems/context/test/test_core_ext.rb +0 -21
  621. data/vendor/gems/context/test/test_helper.rb +0 -2
  622. data/vendor/gems/context/test/test_lifecycle.rb +0 -224
  623. data/vendor/gems/context/test/test_nested_lifecycle.rb +0 -44
  624. data/vendor/gems/context/test/test_shared.rb +0 -116
  625. data/vendor/gems/context/test/test_test.rb +0 -23
  626. data/vendor/gems/daemons/LICENSE +0 -29
  627. data/vendor/gems/daemons/README +0 -223
  628. data/vendor/gems/daemons/Rakefile +0 -84
  629. data/vendor/gems/daemons/Releases +0 -126
  630. data/vendor/gems/daemons/TODO +0 -6
  631. data/vendor/gems/daemons/examples/call/call.rb +0 -56
  632. data/vendor/gems/daemons/examples/call/call_monitor.rb +0 -55
  633. data/vendor/gems/daemons/examples/daemonize/daemonize.rb +0 -20
  634. data/vendor/gems/daemons/examples/run/ctrl_crash.rb +0 -17
  635. data/vendor/gems/daemons/examples/run/ctrl_exec.rb +0 -16
  636. data/vendor/gems/daemons/examples/run/ctrl_exit.rb +0 -15
  637. data/vendor/gems/daemons/examples/run/ctrl_keep_pid_files.rb +0 -17
  638. data/vendor/gems/daemons/examples/run/ctrl_monitor.rb +0 -16
  639. data/vendor/gems/daemons/examples/run/ctrl_multiple.rb +0 -16
  640. data/vendor/gems/daemons/examples/run/ctrl_normal.rb +0 -12
  641. data/vendor/gems/daemons/examples/run/ctrl_ontop.rb +0 -16
  642. data/vendor/gems/daemons/examples/run/ctrl_optionparser.rb +0 -43
  643. data/vendor/gems/daemons/examples/run/ctrl_proc.rb +0 -25
  644. data/vendor/gems/daemons/examples/run/ctrl_proc.rb.output +0 -101
  645. data/vendor/gems/daemons/examples/run/ctrl_proc_multiple.rb +0 -22
  646. data/vendor/gems/daemons/examples/run/ctrl_proc_multiple.rb.output +0 -2
  647. data/vendor/gems/daemons/examples/run/ctrl_proc_simple.rb +0 -17
  648. data/vendor/gems/daemons/examples/run/myserver.rb +0 -12
  649. data/vendor/gems/daemons/examples/run/myserver_crashing.rb +0 -14
  650. data/vendor/gems/daemons/examples/run/myserver_crashing.rb.output +0 -30
  651. data/vendor/gems/daemons/examples/run/myserver_exiting.rb +0 -8
  652. data/vendor/gems/daemons/lib/daemons/application.rb +0 -372
  653. data/vendor/gems/daemons/lib/daemons/application_group.rb +0 -152
  654. data/vendor/gems/daemons/lib/daemons/cmdline.rb +0 -117
  655. data/vendor/gems/daemons/lib/daemons/controller.rb +0 -134
  656. data/vendor/gems/daemons/lib/daemons/daemonize.rb +0 -263
  657. data/vendor/gems/daemons/lib/daemons/exceptions.rb +0 -28
  658. data/vendor/gems/daemons/lib/daemons/monitor.rb +0 -127
  659. data/vendor/gems/daemons/lib/daemons/pid.rb +0 -101
  660. data/vendor/gems/daemons/lib/daemons/pidfile.rb +0 -111
  661. data/vendor/gems/daemons/lib/daemons/pidmem.rb +0 -10
  662. data/vendor/gems/daemons/lib/daemons.rb +0 -283
  663. data/vendor/gems/daemons/setup.rb +0 -1360
  664. data/vendor/gems/fakeweb/CHANGELOG +0 -163
  665. data/vendor/gems/fakeweb/LICENSE.txt +0 -281
  666. data/vendor/gems/fakeweb/README.rdoc +0 -193
  667. data/vendor/gems/fakeweb/Rakefile +0 -76
  668. data/vendor/gems/fakeweb/fakeweb.gemspec +0 -21
  669. data/vendor/gems/fakeweb/lib/fake_web/ext/net_http.rb +0 -71
  670. data/vendor/gems/fakeweb/lib/fake_web/registry.rb +0 -103
  671. data/vendor/gems/fakeweb/lib/fake_web/responder.rb +0 -113
  672. data/vendor/gems/fakeweb/lib/fake_web/response.rb +0 -10
  673. data/vendor/gems/fakeweb/lib/fake_web/stub_socket.rb +0 -15
  674. data/vendor/gems/fakeweb/lib/fake_web/utility.rb +0 -22
  675. data/vendor/gems/fakeweb/lib/fake_web.rb +0 -172
  676. data/vendor/gems/fakeweb/lib/fakeweb.rb +0 -2
  677. data/vendor/gems/fakeweb/test/fixtures/google_response_from_curl +0 -12
  678. data/vendor/gems/fakeweb/test/fixtures/google_response_with_transfer_encoding +0 -17
  679. data/vendor/gems/fakeweb/test/fixtures/google_response_without_transfer_encoding +0 -11
  680. data/vendor/gems/fakeweb/test/fixtures/test_example.txt +0 -1
  681. data/vendor/gems/fakeweb/test/fixtures/test_txt_file +0 -3
  682. data/vendor/gems/fakeweb/test/test_allow_net_connect.rb +0 -85
  683. data/vendor/gems/fakeweb/test/test_deprecations.rb +0 -54
  684. data/vendor/gems/fakeweb/test/test_fake_authentication.rb +0 -92
  685. data/vendor/gems/fakeweb/test/test_fake_web.rb +0 -518
  686. data/vendor/gems/fakeweb/test/test_fake_web_open_uri.rb +0 -58
  687. data/vendor/gems/fakeweb/test/test_helper.rb +0 -74
  688. data/vendor/gems/fakeweb/test/test_missing_open_uri.rb +0 -25
  689. data/vendor/gems/fakeweb/test/test_precedence.rb +0 -51
  690. data/vendor/gems/fakeweb/test/test_query_string.rb +0 -45
  691. data/vendor/gems/fakeweb/test/test_regexes.rb +0 -103
  692. data/vendor/gems/fakeweb/test/test_response_headers.rb +0 -73
  693. data/vendor/gems/fakeweb/test/test_trailing_slashes.rb +0 -53
  694. data/vendor/gems/fakeweb/test/test_utility.rb +0 -70
  695. data/vendor/gems/gratr/Grater.xcf +0 -0
  696. data/vendor/gems/gratr/README +0 -335
  697. data/vendor/gems/gratr/Rakefile +0 -220
  698. data/vendor/gems/gratr/examples/graph_self.rb +0 -54
  699. data/vendor/gems/gratr/examples/module_graph.jpg +0 -0
  700. data/vendor/gems/gratr/examples/module_graph.rb +0 -12
  701. data/vendor/gems/gratr/examples/self_graph.dot +0 -117
  702. data/vendor/gems/gratr/examples/self_graph.jpg +0 -0
  703. data/vendor/gems/gratr/examples/visualize.dot +0 -58
  704. data/vendor/gems/gratr/examples/visualize.jpg +0 -0
  705. data/vendor/gems/gratr/examples/visualize.rb +0 -11
  706. data/vendor/gems/gratr/install.rb +0 -49
  707. data/vendor/gems/gratr/lib/gratr/adjacency_graph.rb +0 -230
  708. data/vendor/gems/gratr/lib/gratr/base.rb +0 -34
  709. data/vendor/gems/gratr/lib/gratr/biconnected.rb +0 -116
  710. data/vendor/gems/gratr/lib/gratr/chinese_postman.rb +0 -123
  711. data/vendor/gems/gratr/lib/gratr/common.rb +0 -73
  712. data/vendor/gems/gratr/lib/gratr/comparability.rb +0 -92
  713. data/vendor/gems/gratr/lib/gratr/digraph.rb +0 -115
  714. data/vendor/gems/gratr/lib/gratr/digraph_distance.rb +0 -185
  715. data/vendor/gems/gratr/lib/gratr/dot.rb +0 -95
  716. data/vendor/gems/gratr/lib/gratr/edge.rb +0 -145
  717. data/vendor/gems/gratr/lib/gratr/graph.rb +0 -315
  718. data/vendor/gems/gratr/lib/gratr/graph_api.rb +0 -82
  719. data/vendor/gems/gratr/lib/gratr/import.rb +0 -44
  720. data/vendor/gems/gratr/lib/gratr/labels.rb +0 -103
  721. data/vendor/gems/gratr/lib/gratr/maximum_flow.rb +0 -107
  722. data/vendor/gems/gratr/lib/gratr/rdot.rb +0 -332
  723. data/vendor/gems/gratr/lib/gratr/search.rb +0 -422
  724. data/vendor/gems/gratr/lib/gratr/strong_components.rb +0 -127
  725. data/vendor/gems/gratr/lib/gratr/undirected_graph.rb +0 -153
  726. data/vendor/gems/gratr/lib/gratr.rb +0 -42
  727. data/vendor/gems/gratr/lib/priority-queue/benchmark/dijkstra.rb +0 -171
  728. data/vendor/gems/gratr/lib/priority-queue/compare_comments.rb +0 -49
  729. data/vendor/gems/gratr/lib/priority-queue/ext/priority_queue/CPriorityQueue/extconf.rb +0 -2
  730. data/vendor/gems/gratr/lib/priority-queue/lib/priority_queue/c_priority_queue.rb +0 -1
  731. data/vendor/gems/gratr/lib/priority-queue/lib/priority_queue/poor_priority_queue.rb +0 -46
  732. data/vendor/gems/gratr/lib/priority-queue/lib/priority_queue/ruby_priority_queue.rb +0 -525
  733. data/vendor/gems/gratr/lib/priority-queue/lib/priority_queue.rb +0 -14
  734. data/vendor/gems/gratr/lib/priority-queue/setup.rb +0 -1551
  735. data/vendor/gems/gratr/lib/priority-queue/test/priority_queue_test.rb +0 -371
  736. data/vendor/gems/gratr/tests/TestBiconnected.rb +0 -53
  737. data/vendor/gems/gratr/tests/TestChinesePostman.rb +0 -53
  738. data/vendor/gems/gratr/tests/TestComplement.rb +0 -54
  739. data/vendor/gems/gratr/tests/TestDigraph.rb +0 -333
  740. data/vendor/gems/gratr/tests/TestDigraphDistance.rb +0 -138
  741. data/vendor/gems/gratr/tests/TestDot.rb +0 -75
  742. data/vendor/gems/gratr/tests/TestEdge.rb +0 -171
  743. data/vendor/gems/gratr/tests/TestInspection.rb +0 -57
  744. data/vendor/gems/gratr/tests/TestMultiEdge.rb +0 -57
  745. data/vendor/gems/gratr/tests/TestNeighborhood.rb +0 -64
  746. data/vendor/gems/gratr/tests/TestProperties.rb +0 -160
  747. data/vendor/gems/gratr/tests/TestSearch.rb +0 -277
  748. data/vendor/gems/gratr/tests/TestStrongComponents.rb +0 -85
  749. data/vendor/gems/gratr/tests/TestTriagulated.rb +0 -137
  750. data/vendor/gems/gratr/tests/TestUndirectedGraph.rb +0 -219
  751. data/vendor/gems/net-ssh/CHANGELOG.rdoc +0 -127
  752. data/vendor/gems/net-ssh/Manifest +0 -104
  753. data/vendor/gems/net-ssh/README.rdoc +0 -110
  754. data/vendor/gems/net-ssh/Rakefile +0 -26
  755. data/vendor/gems/net-ssh/THANKS.rdoc +0 -16
  756. data/vendor/gems/net-ssh/lib/net/ssh/authentication/agent.rb +0 -176
  757. data/vendor/gems/net-ssh/lib/net/ssh/authentication/constants.rb +0 -18
  758. data/vendor/gems/net-ssh/lib/net/ssh/authentication/key_manager.rb +0 -193
  759. data/vendor/gems/net-ssh/lib/net/ssh/authentication/methods/abstract.rb +0 -60
  760. data/vendor/gems/net-ssh/lib/net/ssh/authentication/methods/hostbased.rb +0 -71
  761. data/vendor/gems/net-ssh/lib/net/ssh/authentication/methods/keyboard_interactive.rb +0 -66
  762. data/vendor/gems/net-ssh/lib/net/ssh/authentication/methods/password.rb +0 -39
  763. data/vendor/gems/net-ssh/lib/net/ssh/authentication/methods/publickey.rb +0 -92
  764. data/vendor/gems/net-ssh/lib/net/ssh/authentication/pageant.rb +0 -183
  765. data/vendor/gems/net-ssh/lib/net/ssh/authentication/session.rb +0 -134
  766. data/vendor/gems/net-ssh/lib/net/ssh/buffer.rb +0 -340
  767. data/vendor/gems/net-ssh/lib/net/ssh/buffered_io.rb +0 -149
  768. data/vendor/gems/net-ssh/lib/net/ssh/config.rb +0 -181
  769. data/vendor/gems/net-ssh/lib/net/ssh/connection/channel.rb +0 -625
  770. data/vendor/gems/net-ssh/lib/net/ssh/connection/constants.rb +0 -33
  771. data/vendor/gems/net-ssh/lib/net/ssh/connection/session.rb +0 -596
  772. data/vendor/gems/net-ssh/lib/net/ssh/connection/term.rb +0 -178
  773. data/vendor/gems/net-ssh/lib/net/ssh/errors.rb +0 -85
  774. data/vendor/gems/net-ssh/lib/net/ssh/key_factory.rb +0 -102
  775. data/vendor/gems/net-ssh/lib/net/ssh/known_hosts.rb +0 -129
  776. data/vendor/gems/net-ssh/lib/net/ssh/loggable.rb +0 -61
  777. data/vendor/gems/net-ssh/lib/net/ssh/packet.rb +0 -102
  778. data/vendor/gems/net-ssh/lib/net/ssh/prompt.rb +0 -93
  779. data/vendor/gems/net-ssh/lib/net/ssh/proxy/errors.rb +0 -14
  780. data/vendor/gems/net-ssh/lib/net/ssh/proxy/http.rb +0 -94
  781. data/vendor/gems/net-ssh/lib/net/ssh/proxy/socks4.rb +0 -70
  782. data/vendor/gems/net-ssh/lib/net/ssh/proxy/socks5.rb +0 -129
  783. data/vendor/gems/net-ssh/lib/net/ssh/ruby_compat.rb +0 -7
  784. data/vendor/gems/net-ssh/lib/net/ssh/service/forward.rb +0 -267
  785. data/vendor/gems/net-ssh/lib/net/ssh/test/channel.rb +0 -129
  786. data/vendor/gems/net-ssh/lib/net/ssh/test/extensions.rb +0 -152
  787. data/vendor/gems/net-ssh/lib/net/ssh/test/kex.rb +0 -44
  788. data/vendor/gems/net-ssh/lib/net/ssh/test/local_packet.rb +0 -51
  789. data/vendor/gems/net-ssh/lib/net/ssh/test/packet.rb +0 -81
  790. data/vendor/gems/net-ssh/lib/net/ssh/test/remote_packet.rb +0 -38
  791. data/vendor/gems/net-ssh/lib/net/ssh/test/script.rb +0 -157
  792. data/vendor/gems/net-ssh/lib/net/ssh/test/socket.rb +0 -59
  793. data/vendor/gems/net-ssh/lib/net/ssh/test.rb +0 -89
  794. data/vendor/gems/net-ssh/lib/net/ssh/transport/algorithms.rb +0 -384
  795. data/vendor/gems/net-ssh/lib/net/ssh/transport/cipher_factory.rb +0 -80
  796. data/vendor/gems/net-ssh/lib/net/ssh/transport/constants.rb +0 -30
  797. data/vendor/gems/net-ssh/lib/net/ssh/transport/hmac/abstract.rb +0 -78
  798. data/vendor/gems/net-ssh/lib/net/ssh/transport/hmac/md5.rb +0 -12
  799. data/vendor/gems/net-ssh/lib/net/ssh/transport/hmac/md5_96.rb +0 -11
  800. data/vendor/gems/net-ssh/lib/net/ssh/transport/hmac/none.rb +0 -15
  801. data/vendor/gems/net-ssh/lib/net/ssh/transport/hmac/sha1.rb +0 -13
  802. data/vendor/gems/net-ssh/lib/net/ssh/transport/hmac/sha1_96.rb +0 -11
  803. data/vendor/gems/net-ssh/lib/net/ssh/transport/hmac.rb +0 -31
  804. data/vendor/gems/net-ssh/lib/net/ssh/transport/identity_cipher.rb +0 -55
  805. data/vendor/gems/net-ssh/lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb +0 -208
  806. data/vendor/gems/net-ssh/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb +0 -77
  807. data/vendor/gems/net-ssh/lib/net/ssh/transport/kex.rb +0 -13
  808. data/vendor/gems/net-ssh/lib/net/ssh/transport/openssl.rb +0 -128
  809. data/vendor/gems/net-ssh/lib/net/ssh/transport/packet_stream.rb +0 -230
  810. data/vendor/gems/net-ssh/lib/net/ssh/transport/server_version.rb +0 -60
  811. data/vendor/gems/net-ssh/lib/net/ssh/transport/session.rb +0 -276
  812. data/vendor/gems/net-ssh/lib/net/ssh/transport/state.rb +0 -201
  813. data/vendor/gems/net-ssh/lib/net/ssh/verifiers/lenient.rb +0 -30
  814. data/vendor/gems/net-ssh/lib/net/ssh/verifiers/null.rb +0 -12
  815. data/vendor/gems/net-ssh/lib/net/ssh/verifiers/strict.rb +0 -53
  816. data/vendor/gems/net-ssh/lib/net/ssh/version.rb +0 -62
  817. data/vendor/gems/net-ssh/lib/net/ssh.rb +0 -215
  818. data/vendor/gems/net-ssh/net-ssh.gemspec +0 -33
  819. data/vendor/gems/net-ssh/setup.rb +0 -1585
  820. data/vendor/gems/net-ssh/test/authentication/methods/common.rb +0 -28
  821. data/vendor/gems/net-ssh/test/authentication/methods/test_abstract.rb +0 -51
  822. data/vendor/gems/net-ssh/test/authentication/methods/test_hostbased.rb +0 -114
  823. data/vendor/gems/net-ssh/test/authentication/methods/test_keyboard_interactive.rb +0 -98
  824. data/vendor/gems/net-ssh/test/authentication/methods/test_password.rb +0 -50
  825. data/vendor/gems/net-ssh/test/authentication/methods/test_publickey.rb +0 -127
  826. data/vendor/gems/net-ssh/test/authentication/test_agent.rb +0 -205
  827. data/vendor/gems/net-ssh/test/authentication/test_key_manager.rb +0 -105
  828. data/vendor/gems/net-ssh/test/authentication/test_session.rb +0 -93
  829. data/vendor/gems/net-ssh/test/common.rb +0 -106
  830. data/vendor/gems/net-ssh/test/configs/eqsign +0 -3
  831. data/vendor/gems/net-ssh/test/configs/exact_match +0 -8
  832. data/vendor/gems/net-ssh/test/configs/wild_cards +0 -14
  833. data/vendor/gems/net-ssh/test/connection/test_channel.rb +0 -452
  834. data/vendor/gems/net-ssh/test/connection/test_session.rb +0 -488
  835. data/vendor/gems/net-ssh/test/test_all.rb +0 -6
  836. data/vendor/gems/net-ssh/test/test_buffer.rb +0 -336
  837. data/vendor/gems/net-ssh/test/test_buffered_io.rb +0 -63
  838. data/vendor/gems/net-ssh/test/test_config.rb +0 -84
  839. data/vendor/gems/net-ssh/test/test_key_factory.rb +0 -67
  840. data/vendor/gems/net-ssh/test/transport/hmac/test_md5.rb +0 -39
  841. data/vendor/gems/net-ssh/test/transport/hmac/test_md5_96.rb +0 -25
  842. data/vendor/gems/net-ssh/test/transport/hmac/test_none.rb +0 -34
  843. data/vendor/gems/net-ssh/test/transport/hmac/test_sha1.rb +0 -34
  844. data/vendor/gems/net-ssh/test/transport/hmac/test_sha1_96.rb +0 -25
  845. data/vendor/gems/net-ssh/test/transport/kex/test_diffie_hellman_group1_sha1.rb +0 -146
  846. data/vendor/gems/net-ssh/test/transport/kex/test_diffie_hellman_group_exchange_sha1.rb +0 -92
  847. data/vendor/gems/net-ssh/test/transport/test_algorithms.rb +0 -302
  848. data/vendor/gems/net-ssh/test/transport/test_cipher_factory.rb +0 -171
  849. data/vendor/gems/net-ssh/test/transport/test_hmac.rb +0 -34
  850. data/vendor/gems/net-ssh/test/transport/test_identity_cipher.rb +0 -40
  851. data/vendor/gems/net-ssh/test/transport/test_packet_stream.rb +0 -435
  852. data/vendor/gems/net-ssh/test/transport/test_server_version.rb +0 -57
  853. data/vendor/gems/net-ssh/test/transport/test_session.rb +0 -315
  854. data/vendor/gems/net-ssh/test/transport/test_state.rb +0 -173
  855. data/vendor/gems/parenting/History.txt +0 -4
  856. data/vendor/gems/parenting/Manifest.txt +0 -14
  857. data/vendor/gems/parenting/PostInstall.txt +0 -2
  858. data/vendor/gems/parenting/README.rdoc +0 -47
  859. data/vendor/gems/parenting/Rakefile +0 -44
  860. data/vendor/gems/parenting/lib/parenting/parenting.rb +0 -77
  861. data/vendor/gems/parenting/lib/parenting.rb +0 -10
  862. data/vendor/gems/parenting/parenting.gemspec +0 -39
  863. data/vendor/gems/parenting/script/console +0 -10
  864. data/vendor/gems/parenting/script/destroy +0 -14
  865. data/vendor/gems/parenting/script/generate +0 -14
  866. data/vendor/gems/parenting/test/file_to_eval.rb +0 -9
  867. data/vendor/gems/parenting/test/test_helper.rb +0 -5
  868. data/vendor/gems/parenting/test/test_parenting.rb +0 -117
  869. data/vendor/gems/right_aws/History.txt +0 -246
  870. data/vendor/gems/right_aws/Manifest.txt +0 -34
  871. data/vendor/gems/right_aws/README.txt +0 -166
  872. data/vendor/gems/right_aws/Rakefile +0 -112
  873. data/vendor/gems/right_aws/lib/acf/right_acf_interface.rb +0 -379
  874. data/vendor/gems/right_aws/lib/awsbase/benchmark_fix.rb +0 -39
  875. data/vendor/gems/right_aws/lib/awsbase/right_awsbase.rb +0 -797
  876. data/vendor/gems/right_aws/lib/awsbase/support.rb +0 -111
  877. data/vendor/gems/right_aws/lib/ec2/right_ec2.rb +0 -1737
  878. data/vendor/gems/right_aws/lib/right_aws.rb +0 -69
  879. data/vendor/gems/right_aws/lib/s3/right_s3.rb +0 -1094
  880. data/vendor/gems/right_aws/lib/s3/right_s3_interface.rb +0 -1175
  881. data/vendor/gems/right_aws/lib/sdb/active_sdb.rb +0 -930
  882. data/vendor/gems/right_aws/lib/sdb/right_sdb_interface.rb +0 -698
  883. data/vendor/gems/right_aws/lib/sqs/right_sqs.rb +0 -388
  884. data/vendor/gems/right_aws/lib/sqs/right_sqs_gen2.rb +0 -286
  885. data/vendor/gems/right_aws/lib/sqs/right_sqs_gen2_interface.rb +0 -444
  886. data/vendor/gems/right_aws/lib/sqs/right_sqs_interface.rb +0 -596
  887. data/vendor/gems/right_aws/test/acf/test_helper.rb +0 -2
  888. data/vendor/gems/right_aws/test/acf/test_right_acf.rb +0 -146
  889. data/vendor/gems/right_aws/test/ec2/test_helper.rb +0 -2
  890. data/vendor/gems/right_aws/test/ec2/test_right_ec2.rb +0 -108
  891. data/vendor/gems/right_aws/test/http_connection.rb +0 -87
  892. data/vendor/gems/right_aws/test/s3/test_helper.rb +0 -2
  893. data/vendor/gems/right_aws/test/s3/test_right_s3.rb +0 -419
  894. data/vendor/gems/right_aws/test/s3/test_right_s3_stubbed.rb +0 -95
  895. data/vendor/gems/right_aws/test/sdb/test_active_sdb.rb +0 -299
  896. data/vendor/gems/right_aws/test/sdb/test_helper.rb +0 -3
  897. data/vendor/gems/right_aws/test/sdb/test_right_sdb.rb +0 -247
  898. data/vendor/gems/right_aws/test/sqs/test_helper.rb +0 -2
  899. data/vendor/gems/right_aws/test/sqs/test_right_sqs.rb +0 -291
  900. data/vendor/gems/right_aws/test/sqs/test_right_sqs_gen2.rb +0 -209
  901. data/vendor/gems/right_aws/test/test_credentials.rb +0 -37
  902. data/vendor/gems/right_aws/test/ts_right_aws.rb +0 -14
  903. data/vendor/gems/right_http_connection/History.txt +0 -59
  904. data/vendor/gems/right_http_connection/Manifest.txt +0 -7
  905. data/vendor/gems/right_http_connection/README.txt +0 -54
  906. data/vendor/gems/right_http_connection/Rakefile +0 -103
  907. data/vendor/gems/right_http_connection/lib/net_fix.rb +0 -160
  908. data/vendor/gems/right_http_connection/lib/right_http_connection.rb +0 -442
  909. data/vendor/gems/right_http_connection/right_http_connection.gemspec +0 -31
  910. data/vendor/gems/right_http_connection/setup.rb +0 -1585
  911. data/vendor/gems/shoulda/CONTRIBUTION_GUIDELINES.rdoc +0 -10
  912. data/vendor/gems/shoulda/MIT-LICENSE +0 -22
  913. data/vendor/gems/shoulda/README.rdoc +0 -171
  914. data/vendor/gems/shoulda/Rakefile +0 -72
  915. data/vendor/gems/shoulda/bin/convert_to_should_syntax +0 -42
  916. data/vendor/gems/shoulda/init.rb +0 -1
  917. data/vendor/gems/shoulda/lib/shoulda/action_controller/macros.rb +0 -240
  918. data/vendor/gems/shoulda/lib/shoulda/action_controller/matchers/assign_to_matcher.rb +0 -109
  919. data/vendor/gems/shoulda/lib/shoulda/action_controller/matchers/filter_param_matcher.rb +0 -57
  920. data/vendor/gems/shoulda/lib/shoulda/action_controller/matchers/render_with_layout_matcher.rb +0 -81
  921. data/vendor/gems/shoulda/lib/shoulda/action_controller/matchers/respond_with_content_type_matcher.rb +0 -74
  922. data/vendor/gems/shoulda/lib/shoulda/action_controller/matchers/respond_with_matcher.rb +0 -81
  923. data/vendor/gems/shoulda/lib/shoulda/action_controller/matchers/route_matcher.rb +0 -93
  924. data/vendor/gems/shoulda/lib/shoulda/action_controller/matchers/set_session_matcher.rb +0 -87
  925. data/vendor/gems/shoulda/lib/shoulda/action_controller/matchers/set_the_flash_matcher.rb +0 -85
  926. data/vendor/gems/shoulda/lib/shoulda/action_controller/matchers.rb +0 -37
  927. data/vendor/gems/shoulda/lib/shoulda/action_controller.rb +0 -26
  928. data/vendor/gems/shoulda/lib/shoulda/action_mailer/assertions.rb +0 -38
  929. data/vendor/gems/shoulda/lib/shoulda/action_mailer.rb +0 -10
  930. data/vendor/gems/shoulda/lib/shoulda/action_view/macros.rb +0 -61
  931. data/vendor/gems/shoulda/lib/shoulda/action_view.rb +0 -10
  932. data/vendor/gems/shoulda/lib/shoulda/active_record/assertions.rb +0 -69
  933. data/vendor/gems/shoulda/lib/shoulda/active_record/helpers.rb +0 -27
  934. data/vendor/gems/shoulda/lib/shoulda/active_record/macros.rb +0 -512
  935. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/allow_mass_assignment_of_matcher.rb +0 -83
  936. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/allow_value_matcher.rb +0 -102
  937. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/association_matcher.rb +0 -226
  938. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/ensure_inclusion_of_matcher.rb +0 -87
  939. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/ensure_length_of_matcher.rb +0 -141
  940. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/have_db_column_matcher.rb +0 -169
  941. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/have_db_index_matcher.rb +0 -112
  942. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/have_named_scope_matcher.rb +0 -128
  943. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/have_readonly_attribute_matcher.rb +0 -59
  944. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/validate_acceptance_of_matcher.rb +0 -41
  945. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/validate_format_of_matcher.rb +0 -67
  946. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/validate_numericality_of_matcher.rb +0 -39
  947. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/validate_presence_of_matcher.rb +0 -60
  948. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/validate_uniqueness_of_matcher.rb +0 -148
  949. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers/validation_matcher.rb +0 -57
  950. data/vendor/gems/shoulda/lib/shoulda/active_record/matchers.rb +0 -43
  951. data/vendor/gems/shoulda/lib/shoulda/active_record.rb +0 -16
  952. data/vendor/gems/shoulda/lib/shoulda/assertions.rb +0 -71
  953. data/vendor/gems/shoulda/lib/shoulda/autoload_macros.rb +0 -46
  954. data/vendor/gems/shoulda/lib/shoulda/context.rb +0 -402
  955. data/vendor/gems/shoulda/lib/shoulda/helpers.rb +0 -8
  956. data/vendor/gems/shoulda/lib/shoulda/macros.rb +0 -133
  957. data/vendor/gems/shoulda/lib/shoulda/private_helpers.rb +0 -13
  958. data/vendor/gems/shoulda/lib/shoulda/proc_extensions.rb +0 -14
  959. data/vendor/gems/shoulda/lib/shoulda/rails.rb +0 -13
  960. data/vendor/gems/shoulda/lib/shoulda/rspec.rb +0 -11
  961. data/vendor/gems/shoulda/lib/shoulda/tasks/list_tests.rake +0 -29
  962. data/vendor/gems/shoulda/lib/shoulda/tasks/yaml_to_shoulda.rake +0 -28
  963. data/vendor/gems/shoulda/lib/shoulda/tasks.rb +0 -3
  964. data/vendor/gems/shoulda/lib/shoulda/test_unit.rb +0 -22
  965. data/vendor/gems/shoulda/lib/shoulda.rb +0 -9
  966. data/vendor/gems/shoulda/rails/init.rb +0 -7
  967. data/vendor/gems/shoulda/shoulda.gemspec +0 -31
  968. data/vendor/gems/shoulda/tasks/shoulda.rake +0 -1
  969. data/vendor/gems/shoulda/test/README +0 -36
  970. data/vendor/gems/shoulda/test/fail_macros.rb +0 -39
  971. data/vendor/gems/shoulda/test/fixtures/addresses.yml +0 -3
  972. data/vendor/gems/shoulda/test/fixtures/friendships.yml +0 -0
  973. data/vendor/gems/shoulda/test/fixtures/posts.yml +0 -5
  974. data/vendor/gems/shoulda/test/fixtures/products.yml +0 -0
  975. data/vendor/gems/shoulda/test/fixtures/taggings.yml +0 -0
  976. data/vendor/gems/shoulda/test/fixtures/tags.yml +0 -9
  977. data/vendor/gems/shoulda/test/fixtures/users.yml +0 -6
  978. data/vendor/gems/shoulda/test/functional/posts_controller_test.rb +0 -121
  979. data/vendor/gems/shoulda/test/functional/users_controller_test.rb +0 -19
  980. data/vendor/gems/shoulda/test/matchers/active_record/allow_mass_assignment_of_matcher_test.rb +0 -68
  981. data/vendor/gems/shoulda/test/matchers/active_record/allow_value_matcher_test.rb +0 -64
  982. data/vendor/gems/shoulda/test/matchers/active_record/association_matcher_test.rb +0 -263
  983. data/vendor/gems/shoulda/test/matchers/active_record/ensure_inclusion_of_matcher_test.rb +0 -80
  984. data/vendor/gems/shoulda/test/matchers/active_record/ensure_length_of_matcher_test.rb +0 -158
  985. data/vendor/gems/shoulda/test/matchers/active_record/have_db_column_matcher_test.rb +0 -169
  986. data/vendor/gems/shoulda/test/matchers/active_record/have_db_index_matcher_test.rb +0 -91
  987. data/vendor/gems/shoulda/test/matchers/active_record/have_named_scope_matcher_test.rb +0 -65
  988. data/vendor/gems/shoulda/test/matchers/active_record/have_readonly_attributes_matcher_test.rb +0 -29
  989. data/vendor/gems/shoulda/test/matchers/active_record/validate_acceptance_of_matcher_test.rb +0 -44
  990. data/vendor/gems/shoulda/test/matchers/active_record/validate_format_of_matcher_test.rb +0 -39
  991. data/vendor/gems/shoulda/test/matchers/active_record/validate_numericality_of_matcher_test.rb +0 -52
  992. data/vendor/gems/shoulda/test/matchers/active_record/validate_presence_of_matcher_test.rb +0 -86
  993. data/vendor/gems/shoulda/test/matchers/active_record/validate_uniqueness_of_matcher_test.rb +0 -147
  994. data/vendor/gems/shoulda/test/matchers/controller/assign_to_matcher_test.rb +0 -35
  995. data/vendor/gems/shoulda/test/matchers/controller/filter_param_matcher_test.rb +0 -32
  996. data/vendor/gems/shoulda/test/matchers/controller/render_with_layout_matcher_test.rb +0 -33
  997. data/vendor/gems/shoulda/test/matchers/controller/respond_with_content_type_matcher_test.rb +0 -32
  998. data/vendor/gems/shoulda/test/matchers/controller/respond_with_matcher_test.rb +0 -106
  999. data/vendor/gems/shoulda/test/matchers/controller/route_matcher_test.rb +0 -58
  1000. data/vendor/gems/shoulda/test/matchers/controller/set_session_matcher_test.rb +0 -38
  1001. data/vendor/gems/shoulda/test/matchers/controller/set_the_flash_matcher.rb +0 -41
  1002. data/vendor/gems/shoulda/test/model_builder.rb +0 -106
  1003. data/vendor/gems/shoulda/test/other/autoload_macro_test.rb +0 -18
  1004. data/vendor/gems/shoulda/test/other/context_test.rb +0 -189
  1005. data/vendor/gems/shoulda/test/other/convert_to_should_syntax_test.rb +0 -63
  1006. data/vendor/gems/shoulda/test/other/helpers_test.rb +0 -340
  1007. data/vendor/gems/shoulda/test/other/private_helpers_test.rb +0 -32
  1008. data/vendor/gems/shoulda/test/other/should_test.rb +0 -271
  1009. data/vendor/gems/shoulda/test/rails_root/app/controllers/application_controller.rb +0 -25
  1010. data/vendor/gems/shoulda/test/rails_root/app/controllers/posts_controller.rb +0 -87
  1011. data/vendor/gems/shoulda/test/rails_root/app/controllers/users_controller.rb +0 -84
  1012. data/vendor/gems/shoulda/test/rails_root/app/helpers/application_helper.rb +0 -3
  1013. data/vendor/gems/shoulda/test/rails_root/app/helpers/posts_helper.rb +0 -2
  1014. data/vendor/gems/shoulda/test/rails_root/app/helpers/users_helper.rb +0 -2
  1015. data/vendor/gems/shoulda/test/rails_root/app/models/address.rb +0 -7
  1016. data/vendor/gems/shoulda/test/rails_root/app/models/flea.rb +0 -3
  1017. data/vendor/gems/shoulda/test/rails_root/app/models/friendship.rb +0 -4
  1018. data/vendor/gems/shoulda/test/rails_root/app/models/pets/cat.rb +0 -7
  1019. data/vendor/gems/shoulda/test/rails_root/app/models/pets/dog.rb +0 -10
  1020. data/vendor/gems/shoulda/test/rails_root/app/models/post.rb +0 -12
  1021. data/vendor/gems/shoulda/test/rails_root/app/models/product.rb +0 -12
  1022. data/vendor/gems/shoulda/test/rails_root/app/models/profile.rb +0 -2
  1023. data/vendor/gems/shoulda/test/rails_root/app/models/registration.rb +0 -2
  1024. data/vendor/gems/shoulda/test/rails_root/app/models/tag.rb +0 -8
  1025. data/vendor/gems/shoulda/test/rails_root/app/models/tagging.rb +0 -4
  1026. data/vendor/gems/shoulda/test/rails_root/app/models/treat.rb +0 -3
  1027. data/vendor/gems/shoulda/test/rails_root/app/models/user.rb +0 -32
  1028. data/vendor/gems/shoulda/test/rails_root/app/views/layouts/posts.rhtml +0 -19
  1029. data/vendor/gems/shoulda/test/rails_root/app/views/layouts/users.rhtml +0 -17
  1030. data/vendor/gems/shoulda/test/rails_root/app/views/layouts/wide.html.erb +0 -1
  1031. data/vendor/gems/shoulda/test/rails_root/app/views/posts/edit.rhtml +0 -27
  1032. data/vendor/gems/shoulda/test/rails_root/app/views/posts/index.rhtml +0 -25
  1033. data/vendor/gems/shoulda/test/rails_root/app/views/posts/new.rhtml +0 -26
  1034. data/vendor/gems/shoulda/test/rails_root/app/views/posts/show.rhtml +0 -18
  1035. data/vendor/gems/shoulda/test/rails_root/app/views/users/edit.rhtml +0 -22
  1036. data/vendor/gems/shoulda/test/rails_root/app/views/users/index.rhtml +0 -22
  1037. data/vendor/gems/shoulda/test/rails_root/app/views/users/new.rhtml +0 -21
  1038. data/vendor/gems/shoulda/test/rails_root/app/views/users/show.rhtml +0 -13
  1039. data/vendor/gems/shoulda/test/rails_root/config/boot.rb +0 -110
  1040. data/vendor/gems/shoulda/test/rails_root/config/database.yml +0 -4
  1041. data/vendor/gems/shoulda/test/rails_root/config/environment.rb +0 -18
  1042. data/vendor/gems/shoulda/test/rails_root/config/environments/test.rb +0 -0
  1043. data/vendor/gems/shoulda/test/rails_root/config/initializers/new_rails_defaults.rb +0 -15
  1044. data/vendor/gems/shoulda/test/rails_root/config/initializers/shoulda.rb +0 -8
  1045. data/vendor/gems/shoulda/test/rails_root/config/routes.rb +0 -6
  1046. data/vendor/gems/shoulda/test/rails_root/db/migrate/001_create_users.rb +0 -19
  1047. data/vendor/gems/shoulda/test/rails_root/db/migrate/002_create_posts.rb +0 -13
  1048. data/vendor/gems/shoulda/test/rails_root/db/migrate/003_create_taggings.rb +0 -12
  1049. data/vendor/gems/shoulda/test/rails_root/db/migrate/004_create_tags.rb +0 -11
  1050. data/vendor/gems/shoulda/test/rails_root/db/migrate/005_create_dogs.rb +0 -12
  1051. data/vendor/gems/shoulda/test/rails_root/db/migrate/006_create_addresses.rb +0 -14
  1052. data/vendor/gems/shoulda/test/rails_root/db/migrate/007_create_fleas.rb +0 -11
  1053. data/vendor/gems/shoulda/test/rails_root/db/migrate/008_create_dogs_fleas.rb +0 -12
  1054. data/vendor/gems/shoulda/test/rails_root/db/migrate/009_create_products.rb +0 -17
  1055. data/vendor/gems/shoulda/test/rails_root/db/migrate/010_create_friendships.rb +0 -14
  1056. data/vendor/gems/shoulda/test/rails_root/db/migrate/011_create_treats.rb +0 -12
  1057. data/vendor/gems/shoulda/test/rails_root/db/migrate/20090506203502_create_profiles.rb +0 -12
  1058. data/vendor/gems/shoulda/test/rails_root/db/migrate/20090506203536_create_registrations.rb +0 -14
  1059. data/vendor/gems/shoulda/test/rails_root/db/migrate/20090513104502_create_cats.rb +0 -12
  1060. data/vendor/gems/shoulda/test/rails_root/db/schema.rb +0 -0
  1061. data/vendor/gems/shoulda/test/rails_root/public/404.html +0 -30
  1062. data/vendor/gems/shoulda/test/rails_root/public/422.html +0 -30
  1063. data/vendor/gems/shoulda/test/rails_root/public/500.html +0 -30
  1064. data/vendor/gems/shoulda/test/rails_root/script/console +0 -3
  1065. data/vendor/gems/shoulda/test/rails_root/script/generate +0 -3
  1066. data/vendor/gems/shoulda/test/rails_root/test/shoulda_macros/custom_macro.rb +0 -6
  1067. data/vendor/gems/shoulda/test/rails_root/vendor/gems/gem_with_macro-0.0.1/shoulda_macros/gem_macro.rb +0 -6
  1068. data/vendor/gems/shoulda/test/rails_root/vendor/plugins/plugin_with_macro/shoulda_macros/plugin_macro.rb +0 -6
  1069. data/vendor/gems/shoulda/test/rspec_test.rb +0 -207
  1070. data/vendor/gems/shoulda/test/test_helper.rb +0 -28
  1071. data/vendor/gems/shoulda/test/unit/address_test.rb +0 -10
  1072. data/vendor/gems/shoulda/test/unit/cat_test.rb +0 -7
  1073. data/vendor/gems/shoulda/test/unit/dog_test.rb +0 -9
  1074. data/vendor/gems/shoulda/test/unit/flea_test.rb +0 -6
  1075. data/vendor/gems/shoulda/test/unit/friendship_test.rb +0 -6
  1076. data/vendor/gems/shoulda/test/unit/post_test.rb +0 -19
  1077. data/vendor/gems/shoulda/test/unit/product_test.rb +0 -23
  1078. data/vendor/gems/shoulda/test/unit/tag_test.rb +0 -15
  1079. data/vendor/gems/shoulda/test/unit/tagging_test.rb +0 -6
  1080. data/vendor/gems/shoulda/test/unit/user_test.rb +0 -80
  1081. data/vendor/gems/thrift/CHANGELOG +0 -1
  1082. data/vendor/gems/thrift/Makefile.am +0 -47
  1083. data/vendor/gems/thrift/Manifest +0 -81
  1084. data/vendor/gems/thrift/README +0 -43
  1085. data/vendor/gems/thrift/Rakefile +0 -104
  1086. data/vendor/gems/thrift/benchmark/Benchmark.thrift +0 -24
  1087. data/vendor/gems/thrift/benchmark/benchmark.rb +0 -271
  1088. data/vendor/gems/thrift/benchmark/client.rb +0 -74
  1089. data/vendor/gems/thrift/benchmark/server.rb +0 -82
  1090. data/vendor/gems/thrift/benchmark/thin_server.rb +0 -44
  1091. data/vendor/gems/thrift/ext/binary_protocol_accelerated.c +0 -474
  1092. data/vendor/gems/thrift/ext/binary_protocol_accelerated.h +0 -20
  1093. data/vendor/gems/thrift/ext/compact_protocol.c +0 -665
  1094. data/vendor/gems/thrift/ext/compact_protocol.h +0 -20
  1095. data/vendor/gems/thrift/ext/constants.h +0 -95
  1096. data/vendor/gems/thrift/ext/extconf.rb +0 -26
  1097. data/vendor/gems/thrift/ext/macros.h +0 -41
  1098. data/vendor/gems/thrift/ext/memory_buffer.c +0 -76
  1099. data/vendor/gems/thrift/ext/memory_buffer.h +0 -20
  1100. data/vendor/gems/thrift/ext/protocol.c +0 -185
  1101. data/vendor/gems/thrift/ext/protocol.h +0 -20
  1102. data/vendor/gems/thrift/ext/struct.c +0 -606
  1103. data/vendor/gems/thrift/ext/struct.h +0 -67
  1104. data/vendor/gems/thrift/ext/thrift_native.c +0 -194
  1105. data/vendor/gems/thrift/lib/thrift/client.rb +0 -62
  1106. data/vendor/gems/thrift/lib/thrift/core_ext/fixnum.rb +0 -29
  1107. data/vendor/gems/thrift/lib/thrift/core_ext.rb +0 -23
  1108. data/vendor/gems/thrift/lib/thrift/exceptions.rb +0 -82
  1109. data/vendor/gems/thrift/lib/thrift/processor.rb +0 -57
  1110. data/vendor/gems/thrift/lib/thrift/protocol/base_protocol.rb +0 -290
  1111. data/vendor/gems/thrift/lib/thrift/protocol/binary_protocol.rb +0 -225
  1112. data/vendor/gems/thrift/lib/thrift/protocol/binary_protocol_accelerated.rb +0 -35
  1113. data/vendor/gems/thrift/lib/thrift/protocol/compact_protocol.rb +0 -422
  1114. data/vendor/gems/thrift/lib/thrift/serializer/deserializer.rb +0 -33
  1115. data/vendor/gems/thrift/lib/thrift/serializer/serializer.rb +0 -34
  1116. data/vendor/gems/thrift/lib/thrift/server/base_server.rb +0 -31
  1117. data/vendor/gems/thrift/lib/thrift/server/mongrel_http_server.rb +0 -58
  1118. data/vendor/gems/thrift/lib/thrift/server/nonblocking_server.rb +0 -296
  1119. data/vendor/gems/thrift/lib/thrift/server/simple_server.rb +0 -43
  1120. data/vendor/gems/thrift/lib/thrift/server/thread_pool_server.rb +0 -75
  1121. data/vendor/gems/thrift/lib/thrift/server/threaded_server.rb +0 -47
  1122. data/vendor/gems/thrift/lib/thrift/struct.rb +0 -298
  1123. data/vendor/gems/thrift/lib/thrift/thrift_native.rb +0 -24
  1124. data/vendor/gems/thrift/lib/thrift/transport/base_server_transport.rb +0 -37
  1125. data/vendor/gems/thrift/lib/thrift/transport/base_transport.rb +0 -70
  1126. data/vendor/gems/thrift/lib/thrift/transport/buffered_transport.rb +0 -77
  1127. data/vendor/gems/thrift/lib/thrift/transport/framed_transport.rb +0 -90
  1128. data/vendor/gems/thrift/lib/thrift/transport/http_client_transport.rb +0 -45
  1129. data/vendor/gems/thrift/lib/thrift/transport/io_stream_transport.rb +0 -39
  1130. data/vendor/gems/thrift/lib/thrift/transport/memory_buffer_transport.rb +0 -96
  1131. data/vendor/gems/thrift/lib/thrift/transport/server_socket.rb +0 -63
  1132. data/vendor/gems/thrift/lib/thrift/transport/socket.rb +0 -136
  1133. data/vendor/gems/thrift/lib/thrift/transport/unix_server_socket.rb +0 -60
  1134. data/vendor/gems/thrift/lib/thrift/transport/unix_socket.rb +0 -40
  1135. data/vendor/gems/thrift/lib/thrift/types.rb +0 -101
  1136. data/vendor/gems/thrift/lib/thrift.rb +0 -59
  1137. data/vendor/gems/thrift/script/proto_benchmark.rb +0 -121
  1138. data/vendor/gems/thrift/script/read_struct.rb +0 -43
  1139. data/vendor/gems/thrift/script/write_struct.rb +0 -30
  1140. data/vendor/gems/thrift/setup.rb +0 -1585
  1141. data/vendor/gems/thrift/spec/ThriftSpec.thrift +0 -84
  1142. data/vendor/gems/thrift/spec/base_protocol_spec.rb +0 -160
  1143. data/vendor/gems/thrift/spec/base_transport_spec.rb +0 -351
  1144. data/vendor/gems/thrift/spec/binary_protocol_accelerated_spec.rb +0 -41
  1145. data/vendor/gems/thrift/spec/binary_protocol_spec.rb +0 -63
  1146. data/vendor/gems/thrift/spec/binary_protocol_spec_shared.rb +0 -375
  1147. data/vendor/gems/thrift/spec/client_spec.rb +0 -100
  1148. data/vendor/gems/thrift/spec/compact_protocol_spec.rb +0 -117
  1149. data/vendor/gems/thrift/spec/exception_spec.rb +0 -142
  1150. data/vendor/gems/thrift/spec/http_client_spec.rb +0 -49
  1151. data/vendor/gems/thrift/spec/mongrel_http_server_spec.rb +0 -117
  1152. data/vendor/gems/thrift/spec/nonblocking_server_spec.rb +0 -265
  1153. data/vendor/gems/thrift/spec/processor_spec.rb +0 -83
  1154. data/vendor/gems/thrift/spec/serializer_spec.rb +0 -69
  1155. data/vendor/gems/thrift/spec/server_socket_spec.rb +0 -80
  1156. data/vendor/gems/thrift/spec/server_spec.rb +0 -160
  1157. data/vendor/gems/thrift/spec/socket_spec.rb +0 -61
  1158. data/vendor/gems/thrift/spec/socket_spec_shared.rb +0 -104
  1159. data/vendor/gems/thrift/spec/spec_helper.rb +0 -60
  1160. data/vendor/gems/thrift/spec/struct_spec.rb +0 -252
  1161. data/vendor/gems/thrift/spec/types_spec.rb +0 -116
  1162. data/vendor/gems/thrift/spec/unix_socket_spec.rb +0 -108
  1163. /data/{vendor/chef → examples/chef_cloud/chef-repo/cookbooks}/apache2/templates/default/a2dismod.erb +0 -0
  1164. /data/{vendor/chef → examples/chef_cloud/chef-repo/cookbooks}/apache2/templates/default/a2dissite.erb +0 -0
  1165. /data/{vendor/chef → examples/chef_cloud/chef-repo/cookbooks}/apache2/templates/default/a2ensite.erb +0 -0
  1166. /data/{vendor/chef → examples/chef_cloud/chef-repo/cookbooks}/apache2/templates/default/port_apache.erb +0 -0
  1167. /data/{vendor/chef → examples/chef_cloud/chef-repo/cookbooks}/apache2/templates/default/ports.conf.erb +0 -0
  1168. /data/{vendor/chef → examples/chef_cloud/chef-repo/cookbooks}/apache2/templates/default/web_app.conf.erb +0 -0
  1169. /data/{lib/proto/gen-py/__init__.py → examples/chef_cloud/chef-repo/cookbooks/chef/recipes/default.rb} +0 -0
  1170. /data/{vendor/gems/context/PostInstall.txt → lib/cloud_providers/default/helpers/base_helper.rb} +0 -0
  1171. /data/vendor/gems/{colors → searchable_paths}/LICENSE +0 -0
@@ -1,1175 +0,0 @@
1
- #
2
- # Copyright (c) 2007-2008 RightScale Inc
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining
5
- # a copy of this software and associated documentation files (the
6
- # "Software"), to deal in the Software without restriction, including
7
- # without limitation the rights to use, copy, modify, merge, publish,
8
- # distribute, sublicense, and/or sell copies of the Software, and to
9
- # permit persons to whom the Software is furnished to do so, subject to
10
- # the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be
13
- # included in all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
- #
23
-
24
- module RightAws
25
-
26
- class S3Interface < RightAwsBase
27
-
28
- USE_100_CONTINUE_PUT_SIZE = 1_000_000
29
-
30
- include RightAwsBaseInterface
31
-
32
- DEFAULT_HOST = 's3.amazonaws.com'
33
- DEFAULT_PORT = 443
34
- DEFAULT_PROTOCOL = 'https'
35
- DEFAULT_SERVICE = '/'
36
- REQUEST_TTL = 30
37
- DEFAULT_EXPIRES_AFTER = 1 * 24 * 60 * 60 # One day's worth of seconds
38
- ONE_YEAR_IN_SECONDS = 365 * 24 * 60 * 60
39
- AMAZON_HEADER_PREFIX = 'x-amz-'
40
- AMAZON_METADATA_PREFIX = 'x-amz-meta-'
41
-
42
- @@bench = AwsBenchmarkingBlock.new
43
- def self.bench_xml
44
- @@bench.xml
45
- end
46
- def self.bench_s3
47
- @@bench.service
48
- end
49
-
50
-
51
- # Creates new RightS3 instance.
52
- #
53
- # s3 = RightAws::S3Interface.new('1E3GDYEOGFJPIT7XXXXXX','hgTHt68JY07JKUY08ftHYtERkjgtfERn57XXXXXX', {:multi_thread => true, :logger => Logger.new('/tmp/x.log')}) #=> #<RightAws::S3Interface:0xb7b3c27c>
54
- #
55
- # Params is a hash:
56
- #
57
- # {:server => 's3.amazonaws.com' # Amazon service host: 's3.amazonaws.com'(default)
58
- # :port => 443 # Amazon service port: 80 or 443(default)
59
- # :protocol => 'https' # Amazon service protocol: 'http' or 'https'(default)
60
- # :multi_thread => true|false # Multi-threaded (connection per each thread): true or false(default)
61
- # :logger => Logger Object} # Logger instance: logs to STDOUT if omitted }
62
- #
63
- def initialize(aws_access_key_id=nil, aws_secret_access_key=nil, params={})
64
- init({ :name => 'S3',
65
- :default_host => ENV['S3_URL'] ? URI.parse(ENV['S3_URL']).host : DEFAULT_HOST,
66
- :default_port => ENV['S3_URL'] ? URI.parse(ENV['S3_URL']).port : DEFAULT_PORT,
67
- :default_service => ENV['S3_URL'] ? URI.parse(ENV['S3_URL']).path : DEFAULT_SERVICE,
68
- :default_protocol => ENV['S3_URL'] ? URI.parse(ENV['S3_URL']).scheme : DEFAULT_PROTOCOL },
69
- aws_access_key_id || ENV['AWS_ACCESS_KEY_ID'],
70
- aws_secret_access_key || ENV['AWS_SECRET_ACCESS_KEY'],
71
- params)
72
- end
73
-
74
-
75
- #-----------------------------------------------------------------
76
- # Requests
77
- #-----------------------------------------------------------------
78
- # Produces canonical string for signing.
79
- def canonical_string(method, path, headers={}, expires=nil) # :nodoc:
80
- s3_headers = {}
81
- headers.each do |key, value|
82
- key = key.downcase
83
- s3_headers[key] = value.to_s.strip if key[/^#{AMAZON_HEADER_PREFIX}|^content-md5$|^content-type$|^date$/o]
84
- end
85
- s3_headers['content-type'] ||= ''
86
- s3_headers['content-md5'] ||= ''
87
- s3_headers['date'] = '' if s3_headers.has_key? 'x-amz-date'
88
- s3_headers['date'] = expires if expires
89
- # prepare output string
90
- out_string = "#{method}\n"
91
- s3_headers.sort { |a, b| a[0] <=> b[0] }.each do |key, value|
92
- out_string << (key[/^#{AMAZON_HEADER_PREFIX}/o] ? "#{key}:#{value}\n" : "#{value}\n")
93
- end
94
- # ignore everything after the question mark...
95
- out_string << path.gsub(/\?.*$/, '')
96
- # ...unless there is an acl or torrent parameter
97
- out_string << '?acl' if path[/[&?]acl($|&|=)/]
98
- out_string << '?torrent' if path[/[&?]torrent($|&|=)/]
99
- out_string << '?location' if path[/[&?]location($|&|=)/]
100
- out_string << '?logging' if path[/[&?]logging($|&|=)/] # this one is beta, no support for now
101
- out_string
102
- end
103
-
104
- # http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?BucketRestrictions.html
105
- def is_dns_bucket?(bucket_name)
106
- bucket_name = bucket_name.to_s
107
- return nil unless (3..63) === bucket_name.size
108
- bucket_name.split('.').each do |component|
109
- return nil unless component[/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/]
110
- end
111
- true
112
- end
113
-
114
- def fetch_request_params(headers) #:nodoc:
115
- # default server to use
116
- server = @params[:server]
117
- service = @params[:service].to_s
118
- service.chop! if service[%r{/$}] # remove trailing '/' from service
119
- # extract bucket name and check it's dns compartibility
120
- headers[:url].to_s[%r{^([a-z0-9._-]*)(/[^?]*)?(\?.+)?}i]
121
- bucket_name, key_path, params_list = $1, $2, $3
122
- # select request model
123
- if is_dns_bucket?(bucket_name)
124
- # fix a path
125
- server = "#{bucket_name}.#{server}"
126
- key_path ||= '/'
127
- path = "#{service}#{key_path}#{params_list}"
128
- else
129
- path = "#{service}/#{bucket_name}#{key_path}#{params_list}"
130
- end
131
- path_to_sign = "#{service}/#{bucket_name}#{key_path}#{params_list}"
132
- # path_to_sign = "/#{bucket_name}#{key_path}#{params_list}"
133
- [ server, path, path_to_sign ]
134
- end
135
-
136
- # Generates request hash for REST API.
137
- # Assumes that headers[:url] is URL encoded (use CGI::escape)
138
- def generate_rest_request(method, headers) # :nodoc:
139
- # calculate request data
140
- server, path, path_to_sign = fetch_request_params(headers)
141
- data = headers[:data]
142
- # remove unset(==optional) and symbolyc keys
143
- headers.each{ |key, value| headers.delete(key) if (value.nil? || key.is_a?(Symbol)) }
144
- #
145
- headers['content-type'] ||= ''
146
- headers['date'] = Time.now.httpdate
147
- # create request
148
- request = "Net::HTTP::#{method.capitalize}".constantize.new(path)
149
- request.body = data if data
150
- # set request headers and meta headers
151
- headers.each { |key, value| request[key.to_s] = value }
152
- #generate auth strings
153
- auth_string = canonical_string(request.method, path_to_sign, request.to_hash)
154
- signature = AwsUtils::sign(@aws_secret_access_key, auth_string)
155
- # set other headers
156
- request['Authorization'] = "AWS #{@aws_access_key_id}:#{signature}"
157
- # prepare output hash
158
- { :request => request,
159
- :server => server,
160
- :port => @params[:port],
161
- :protocol => @params[:protocol] }
162
- end
163
-
164
- # Sends request to Amazon and parses the response.
165
- # Raises AwsError if any banana happened.
166
- def request_info(request, parser, &block) # :nodoc:
167
- thread = @params[:multi_thread] ? Thread.current : Thread.main
168
- thread[:s3_connection] ||= Rightscale::HttpConnection.new(:exception => RightAws::AwsError, :logger => @logger)
169
- request_info_impl(thread[:s3_connection], @@bench, request, parser, &block)
170
- end
171
-
172
-
173
- # Returns an array of customer's buckets. Each item is a +hash+.
174
- #
175
- # s3.list_all_my_buckets #=>
176
- # [{:owner_id => "00000000009314cc309ffe736daa2b264357476c7fea6efb2c3347ac3ab2792a",
177
- # :owner_display_name => "root",
178
- # :name => "bucket_name",
179
- # :creation_date => "2007-04-19T18:47:43.000Z"}, ..., {...}]
180
- #
181
- def list_all_my_buckets(headers={})
182
- req_hash = generate_rest_request('GET', headers.merge(:url=>''))
183
- request_info(req_hash, S3ListAllMyBucketsParser.new(:logger => @logger))
184
- rescue
185
- on_exception
186
- end
187
-
188
- # Creates new bucket. Returns +true+ or an exception.
189
- #
190
- # # create a bucket at American server
191
- # s3.create_bucket('my-awesome-bucket-us') #=> true
192
- # # create a bucket at European server
193
- # s3.create_bucket('my-awesome-bucket-eu', :location => :eu) #=> true
194
- #
195
- def create_bucket(bucket, headers={})
196
- data = nil
197
- unless headers[:location].blank?
198
- data = "<CreateBucketConfiguration><LocationConstraint>#{headers[:location].to_s.upcase}</LocationConstraint></CreateBucketConfiguration>"
199
- end
200
- req_hash = generate_rest_request('PUT', headers.merge(:url=>bucket, :data => data))
201
- request_info(req_hash, RightHttp2xxParser.new)
202
- rescue Exception => e
203
- # if the bucket exists AWS returns an error for the location constraint interface. Drop it
204
- e.is_a?(RightAws::AwsError) && e.message.include?('BucketAlreadyOwnedByYou') ? true : on_exception
205
- end
206
-
207
- # Retrieve bucket location
208
- #
209
- # s3.create_bucket('my-awesome-bucket-us') #=> true
210
- # puts s3.bucket_location('my-awesome-bucket-us') #=> '' (Amazon's default value assumed)
211
- #
212
- # s3.create_bucket('my-awesome-bucket-eu', :location => :eu) #=> true
213
- # puts s3.bucket_location('my-awesome-bucket-eu') #=> 'EU'
214
- #
215
- def bucket_location(bucket, headers={})
216
- req_hash = generate_rest_request('GET', headers.merge(:url=>"#{bucket}?location"))
217
- request_info(req_hash, S3BucketLocationParser.new)
218
- rescue
219
- on_exception
220
- end
221
-
222
- # Retrieves the logging configuration for a bucket.
223
- # Returns a hash of {:enabled, :targetbucket, :targetprefix}
224
- #
225
- # s3.interface.get_logging_parse(:bucket => "asset_bucket")
226
- # => {:enabled=>true, :targetbucket=>"mylogbucket", :targetprefix=>"loggylogs/"}
227
- #
228
- #
229
- def get_logging_parse(params)
230
- AwsUtils.mandatory_arguments([:bucket], params)
231
- AwsUtils.allow_only([:bucket, :headers], params)
232
- params[:headers] = {} unless params[:headers]
233
- req_hash = generate_rest_request('GET', params[:headers].merge(:url=>"#{params[:bucket]}?logging"))
234
- request_info(req_hash, S3LoggingParser.new)
235
- rescue
236
- on_exception
237
- end
238
-
239
- # Sets logging configuration for a bucket from the XML configuration document.
240
- # params:
241
- # :bucket
242
- # :xmldoc
243
- def put_logging(params)
244
- AwsUtils.mandatory_arguments([:bucket,:xmldoc], params)
245
- AwsUtils.allow_only([:bucket,:xmldoc, :headers], params)
246
- params[:headers] = {} unless params[:headers]
247
- req_hash = generate_rest_request('PUT', params[:headers].merge(:url=>"#{params[:bucket]}?logging", :data => params[:xmldoc]))
248
- request_info(req_hash, S3TrueParser.new)
249
- rescue
250
- on_exception
251
- end
252
-
253
- # Deletes new bucket. Bucket must be empty! Returns +true+ or an exception.
254
- #
255
- # s3.delete_bucket('my_awesome_bucket') #=> true
256
- #
257
- # See also: force_delete_bucket method
258
- #
259
- def delete_bucket(bucket, headers={})
260
- req_hash = generate_rest_request('DELETE', headers.merge(:url=>bucket))
261
- request_info(req_hash, RightHttp2xxParser.new)
262
- rescue
263
- on_exception
264
- end
265
-
266
- # Returns an array of bucket's keys. Each array item (key data) is a +hash+.
267
- #
268
- # s3.list_bucket('my_awesome_bucket', { 'prefix'=>'t', 'marker'=>'', 'max-keys'=>5, delimiter=>'' }) #=>
269
- # [{:key => "test1",
270
- # :last_modified => "2007-05-18T07:00:59.000Z",
271
- # :owner_id => "00000000009314cc309ffe736daa2b264357476c7fea6efb2c3347ac3ab2792a",
272
- # :owner_display_name => "root",
273
- # :e_tag => "000000000059075b964b07152d234b70",
274
- # :storage_class => "STANDARD",
275
- # :size => 3,
276
- # :service=> {'is_truncated' => false,
277
- # 'prefix' => "t",
278
- # 'marker' => "",
279
- # 'name' => "my_awesome_bucket",
280
- # 'max-keys' => "5"}, ..., {...}]
281
- #
282
- def list_bucket(bucket, options={}, headers={})
283
- bucket += '?'+options.map{|k, v| "#{k.to_s}=#{CGI::escape v.to_s}"}.join('&') unless options.blank?
284
- req_hash = generate_rest_request('GET', headers.merge(:url=>bucket))
285
- request_info(req_hash, S3ListBucketParser.new(:logger => @logger))
286
- rescue
287
- on_exception
288
- end
289
-
290
- # Incrementally list the contents of a bucket. Yields the following hash to a block:
291
- # s3.incrementally_list_bucket('my_awesome_bucket', { 'prefix'=>'t', 'marker'=>'', 'max-keys'=>5, delimiter=>'' }) yields
292
- # {
293
- # :name => 'bucketname',
294
- # :prefix => 'subfolder/',
295
- # :marker => 'fileN.jpg',
296
- # :max_keys => 234,
297
- # :delimiter => '/',
298
- # :is_truncated => true,
299
- # :next_marker => 'fileX.jpg',
300
- # :contents => [
301
- # { :key => "file1",
302
- # :last_modified => "2007-05-18T07:00:59.000Z",
303
- # :e_tag => "000000000059075b964b07152d234b70",
304
- # :size => 3,
305
- # :storage_class => "STANDARD",
306
- # :owner_id => "00000000009314cc309ffe736daa2b264357476c7fea6efb2c3347ac3ab2792a",
307
- # :owner_display_name => "root"
308
- # }, { :key, ...}, ... {:key, ...}
309
- # ]
310
- # :common_prefixes => [
311
- # "prefix1",
312
- # "prefix2",
313
- # ...,
314
- # "prefixN"
315
- # ]
316
- # }
317
- def incrementally_list_bucket(bucket, options={}, headers={}, &block)
318
- internal_options = options.symbolize_keys
319
- begin
320
- internal_bucket = bucket.dup
321
- internal_bucket += '?'+internal_options.map{|k, v| "#{k.to_s}=#{CGI::escape v.to_s}"}.join('&') unless internal_options.blank?
322
- req_hash = generate_rest_request('GET', headers.merge(:url=>internal_bucket))
323
- response = request_info(req_hash, S3ImprovedListBucketParser.new(:logger => @logger))
324
- there_are_more_keys = response[:is_truncated]
325
- if(there_are_more_keys)
326
- internal_options[:marker] = decide_marker(response)
327
- total_results = response[:contents].length + response[:common_prefixes].length
328
- internal_options[:'max-keys'] ? (internal_options[:'max-keys'] -= total_results) : nil
329
- end
330
- yield response
331
- end while there_are_more_keys && under_max_keys(internal_options)
332
- true
333
- rescue
334
- on_exception
335
- end
336
-
337
-
338
- private
339
- def decide_marker(response)
340
- return response[:next_marker].dup if response[:next_marker]
341
- last_key = response[:contents].last[:key]
342
- last_prefix = response[:common_prefixes].last
343
- if(!last_key)
344
- return nil if(!last_prefix)
345
- last_prefix.dup
346
- elsif(!last_prefix)
347
- last_key.dup
348
- else
349
- last_key > last_prefix ? last_key.dup : last_prefix.dup
350
- end
351
- end
352
-
353
- def under_max_keys(internal_options)
354
- internal_options[:'max-keys'] ? internal_options[:'max-keys'] > 0 : true
355
- end
356
-
357
- public
358
- # Saves object to Amazon. Returns +true+ or an exception.
359
- # Any header starting with AMAZON_METADATA_PREFIX is considered
360
- # user metadata. It will be stored with the object and returned
361
- # when you retrieve the object. The total size of the HTTP
362
- # request, not including the body, must be less than 4 KB.
363
- #
364
- # s3.put('my_awesome_bucket', 'log/current/1.log', 'Ola-la!', 'x-amz-meta-family'=>'Woho556!') #=> true
365
- #
366
- # This method is capable of 'streaming' uploads; that is, it can upload
367
- # data from a file or other IO object without first reading all the data
368
- # into memory. This is most useful for large PUTs - it is difficult to read
369
- # a 2 GB file entirely into memory before sending it to S3.
370
- # To stream an upload, pass an object that responds to 'read' (like the read
371
- # method of IO) and to either 'lstat' or 'size'. For files, this means
372
- # streaming is enabled by simply making the call:
373
- #
374
- # s3.put(bucket_name, 'S3keyname.forthisfile', File.open('localfilename.dat'))
375
- #
376
- # If the IO object you wish to stream from responds to the read method but
377
- # doesn't implement lstat or size, you can extend the object dynamically
378
- # to implement these methods, or define your own class which defines these
379
- # methods. Be sure that your class returns 'nil' from read() after having
380
- # read 'size' bytes. Otherwise S3 will drop the socket after
381
- # 'Content-Length' bytes have been uploaded, and HttpConnection will
382
- # interpret this as an error.
383
- #
384
- # This method now supports very large PUTs, where very large
385
- # is > 2 GB.
386
- #
387
- # For Win32 users: Files and IO objects should be opened in binary mode. If
388
- # a text mode IO object is passed to PUT, it will be converted to binary
389
- # mode.
390
- #
391
-
392
- def put(bucket, key, data=nil, headers={})
393
- # On Windows, if someone opens a file in text mode, we must reset it so
394
- # to binary mode for streaming to work properly
395
- if(data.respond_to?(:binmode))
396
- data.binmode
397
- end
398
- if (data.respond_to?(:lstat) && data.lstat.size >= USE_100_CONTINUE_PUT_SIZE) ||
399
- (data.respond_to?(:size) && data.size >= USE_100_CONTINUE_PUT_SIZE)
400
- headers['expect'] = '100-continue'
401
- end
402
- req_hash = generate_rest_request('PUT', headers.merge(:url=>"#{bucket}/#{CGI::escape key}", :data=>data))
403
- request_info(req_hash, RightHttp2xxParser.new)
404
- rescue
405
- on_exception
406
- end
407
-
408
-
409
-
410
- # New experimental API for uploading objects, introduced in RightAws 1.8.1.
411
- # store_object is similar in function to the older function put, but returns the full response metadata. It also allows for optional verification
412
- # of object md5 checksums on upload. Parameters are passed as hash entries and are checked for completeness as well as for spurious arguments.
413
- # The hash of the response headers contains useful information like the Amazon request ID and the object ETag (MD5 checksum).
414
- #
415
- # If the optional :md5 argument is provided, store_object verifies that the given md5 matches the md5 returned by S3. The :verified_md5 field in the response hash is
416
- # set true or false depending on the outcome of this check. If no :md5 argument is given, :verified_md5 will be false in the response.
417
- #
418
- # The optional argument of :headers allows the caller to specify arbitrary request header values.
419
- #
420
- # s3.store_object(:bucket => "foobucket", :key => "foo", :md5 => "a507841b1bc8115094b00bbe8c1b2954", :data => "polemonium" )
421
- # => {"x-amz-id-2"=>"SVsnS2nfDaR+ixyJUlRKM8GndRyEMS16+oZRieamuL61pPxPaTuWrWtlYaEhYrI/",
422
- # "etag"=>"\"a507841b1bc8115094b00bbe8c1b2954\"",
423
- # "date"=>"Mon, 29 Sep 2008 18:57:46 GMT",
424
- # :verified_md5=>true,
425
- # "x-amz-request-id"=>"63916465939995BA",
426
- # "server"=>"AmazonS3",
427
- # "content-length"=>"0"}
428
- #
429
- # s3.store_object(:bucket => "foobucket", :key => "foo", :data => "polemonium" )
430
- # => {"x-amz-id-2"=>"MAt9PLjgLX9UYJ5tV2fI/5dBZdpFjlzRVpWgBDpvZpl+V+gJFcBMW2L+LBstYpbR",
431
- # "etag"=>"\"a507841b1bc8115094b00bbe8c1b2954\"",
432
- # "date"=>"Mon, 29 Sep 2008 18:58:56 GMT",
433
- # :verified_md5=>false,
434
- # "x-amz-request-id"=>"3B25A996BC2CDD3B",
435
- # "server"=>"AmazonS3",
436
- # "content-length"=>"0"}
437
-
438
- def store_object(params)
439
- AwsUtils.allow_only([:bucket, :key, :data, :headers, :md5], params)
440
- AwsUtils.mandatory_arguments([:bucket, :key, :data], params)
441
- params[:headers] = {} unless params[:headers]
442
-
443
- params[:data].binmode if(params[:data].respond_to?(:binmode)) # On Windows, if someone opens a file in text mode, we must reset it to binary mode for streaming to work properly
444
- if (params[:data].respond_to?(:lstat) && params[:data].lstat.size >= USE_100_CONTINUE_PUT_SIZE) ||
445
- (params[:data].respond_to?(:size) && params[:data].size >= USE_100_CONTINUE_PUT_SIZE)
446
- params[:headers]['expect'] = '100-continue'
447
- end
448
-
449
- req_hash = generate_rest_request('PUT', params[:headers].merge(:url=>"#{params[:bucket]}/#{CGI::escape params[:key]}", :data=>params[:data]))
450
- resp = request_info(req_hash, S3HttpResponseHeadParser.new)
451
- if(params[:md5])
452
- resp[:verified_md5] = (resp['etag'].gsub(/\"/, '') == params[:md5]) ? true : false
453
- else
454
- resp[:verified_md5] = false
455
- end
456
- resp
457
- rescue
458
- on_exception
459
- end
460
-
461
- # Identical in function to store_object, but requires verification that the returned ETag is identical to the checksum passed in by the user as the 'md5' argument.
462
- # If the check passes, returns the response metadata with the "verified_md5" field set true. Raises an exception if the checksums conflict.
463
- # This call is implemented as a wrapper around store_object and the user may gain different semantics by creating a custom wrapper.
464
- #
465
- # s3.store_object_and_verify(:bucket => "foobucket", :key => "foo", :md5 => "a507841b1bc8115094b00bbe8c1b2954", :data => "polemonium" )
466
- # => {"x-amz-id-2"=>"IZN3XsH4FlBU0+XYkFTfHwaiF1tNzrm6dIW2EM/cthKvl71nldfVC0oVQyydzWpb",
467
- # "etag"=>"\"a507841b1bc8115094b00bbe8c1b2954\"",
468
- # "date"=>"Mon, 29 Sep 2008 18:38:32 GMT",
469
- # :verified_md5=>true,
470
- # "x-amz-request-id"=>"E8D7EA4FE00F5DF7",
471
- # "server"=>"AmazonS3",
472
- # "content-length"=>"0"}
473
- #
474
- # s3.store_object_and_verify(:bucket => "foobucket", :key => "foo", :md5 => "a507841b1bc8115094b00bbe8c1b2953", :data => "polemonium" )
475
- # RightAws::AwsError: Uploaded object failed MD5 checksum verification: {"x-amz-id-2"=>"HTxVtd2bf7UHHDn+WzEH43MkEjFZ26xuYvUzbstkV6nrWvECRWQWFSx91z/bl03n",
476
- # "etag"=>"\"a507841b1bc8115094b00bbe8c1b2954\"",
477
- # "date"=>"Mon, 29 Sep 2008 18:38:41 GMT",
478
- # :verified_md5=>false,
479
- # "x-amz-request-id"=>"0D7ADE09F42606F2",
480
- # "server"=>"AmazonS3",
481
- # "content-length"=>"0"}
482
- def store_object_and_verify(params)
483
- AwsUtils.mandatory_arguments([:md5], params)
484
- r = store_object(params)
485
- r[:verified_md5] ? (return r) : (raise AwsError.new("Uploaded object failed MD5 checksum verification: #{r.inspect}"))
486
- end
487
-
488
- # Retrieves object data from Amazon. Returns a +hash+ or an exception.
489
- #
490
- # s3.get('my_awesome_bucket', 'log/curent/1.log') #=>
491
- #
492
- # {:object => "Ola-la!",
493
- # :headers => {"last-modified" => "Wed, 23 May 2007 09:08:04 GMT",
494
- # "content-type" => "",
495
- # "etag" => "\"000000000096f4ee74bc4596443ef2a4\"",
496
- # "date" => "Wed, 23 May 2007 09:08:03 GMT",
497
- # "x-amz-id-2" => "ZZZZZZZZZZZZZZZZZZZZ1HJXZoehfrS4QxcxTdNGldR7w/FVqblP50fU8cuIMLiu",
498
- # "x-amz-meta-family" => "Woho556!",
499
- # "x-amz-request-id" => "0000000C246D770C",
500
- # "server" => "AmazonS3",
501
- # "content-length" => "7"}}
502
- #
503
- # If a block is provided, yields incrementally to the block as
504
- # the response is read. For large responses, this function is ideal as
505
- # the response can be 'streamed'. The hash containing header fields is
506
- # still returned.
507
- # Example:
508
- # foo = File.new('./chunder.txt', File::CREAT|File::RDWR)
509
- # rhdr = s3.get('aws-test', 'Cent5V1_7_1.img.part.00') do |chunk|
510
- # foo.write(chunk)
511
- # end
512
- # foo.close
513
- #
514
-
515
- def get(bucket, key, headers={}, &block)
516
- req_hash = generate_rest_request('GET', headers.merge(:url=>"#{bucket}/#{CGI::escape key}"))
517
- request_info(req_hash, S3HttpResponseBodyParser.new, &block)
518
- rescue
519
- on_exception
520
- end
521
-
522
- # New experimental API for retrieving objects, introduced in RightAws 1.8.1.
523
- # retrieve_object is similar in function to the older function get. It allows for optional verification
524
- # of object md5 checksums on retrieval. Parameters are passed as hash entries and are checked for completeness as well as for spurious arguments.
525
- #
526
- # If the optional :md5 argument is provided, retrieve_object verifies that the given md5 matches the md5 returned by S3. The :verified_md5 field in the response hash is
527
- # set true or false depending on the outcome of this check. If no :md5 argument is given, :verified_md5 will be false in the response.
528
- #
529
- # The optional argument of :headers allows the caller to specify arbitrary request header values.
530
- # Mandatory arguments:
531
- # :bucket - the bucket in which the object is stored
532
- # :key - the object address (or path) within the bucket
533
- # Optional arguments:
534
- # :headers - hash of additional HTTP headers to include with the request
535
- # :md5 - MD5 checksum against which to verify the retrieved object
536
- #
537
- # s3.retrieve_object(:bucket => "foobucket", :key => "foo")
538
- # => {:verified_md5=>false,
539
- # :headers=>{"last-modified"=>"Mon, 29 Sep 2008 18:58:56 GMT",
540
- # "x-amz-id-2"=>"2Aj3TDz6HP5109qly//18uHZ2a1TNHGLns9hyAtq2ved7wmzEXDOPGRHOYEa3Qnp",
541
- # "content-type"=>"",
542
- # "etag"=>"\"a507841b1bc8115094b00bbe8c1b2954\"",
543
- # "date"=>"Tue, 30 Sep 2008 00:52:44 GMT",
544
- # "x-amz-request-id"=>"EE4855DE27A2688C",
545
- # "server"=>"AmazonS3",
546
- # "content-length"=>"10"},
547
- # :object=>"polemonium"}
548
- #
549
- # s3.retrieve_object(:bucket => "foobucket", :key => "foo", :md5=>'a507841b1bc8115094b00bbe8c1b2954')
550
- # => {:verified_md5=>true,
551
- # :headers=>{"last-modified"=>"Mon, 29 Sep 2008 18:58:56 GMT",
552
- # "x-amz-id-2"=>"mLWQcI+VuKVIdpTaPXEo84g0cz+vzmRLbj79TS8eFPfw19cGFOPxuLy4uGYVCvdH",
553
- # "content-type"=>"", "etag"=>"\"a507841b1bc8115094b00bbe8c1b2954\"",
554
- # "date"=>"Tue, 30 Sep 2008 00:53:08 GMT",
555
- # "x-amz-request-id"=>"6E7F317356580599",
556
- # "server"=>"AmazonS3",
557
- # "content-length"=>"10"},
558
- # :object=>"polemonium"}
559
- # If a block is provided, yields incrementally to the block as
560
- # the response is read. For large responses, this function is ideal as
561
- # the response can be 'streamed'. The hash containing header fields is
562
- # still returned.
563
- def retrieve_object(params, &block)
564
- AwsUtils.mandatory_arguments([:bucket, :key], params)
565
- AwsUtils.allow_only([:bucket, :key, :headers, :md5], params)
566
- params[:headers] = {} unless params[:headers]
567
- req_hash = generate_rest_request('GET', params[:headers].merge(:url=>"#{params[:bucket]}/#{CGI::escape params[:key]}"))
568
- resp = request_info(req_hash, S3HttpResponseBodyParser.new, &block)
569
- resp[:verified_md5] = false
570
- if(params[:md5] && (resp[:headers]['etag'].gsub(/\"/,'') == params[:md5]))
571
- resp[:verified_md5] = true
572
- end
573
- resp
574
- rescue
575
- on_exception
576
- end
577
-
578
- # Identical in function to retrieve_object, but requires verification that the returned ETag is identical to the checksum passed in by the user as the 'md5' argument.
579
- # If the check passes, returns the response metadata with the "verified_md5" field set true. Raises an exception if the checksums conflict.
580
- # This call is implemented as a wrapper around retrieve_object and the user may gain different semantics by creating a custom wrapper.
581
- def retrieve_object_and_verify(params, &block)
582
- AwsUtils.mandatory_arguments([:md5], params)
583
- resp = retrieve_object(params, &block)
584
- return resp if resp[:verified_md5]
585
- raise AwsError.new("Retrieved object failed MD5 checksum verification: #{resp.inspect}")
586
- end
587
-
588
- # Retrieves object metadata. Returns a +hash+ of http_response_headers.
589
- #
590
- # s3.head('my_awesome_bucket', 'log/curent/1.log') #=>
591
- # {"last-modified" => "Wed, 23 May 2007 09:08:04 GMT",
592
- # "content-type" => "",
593
- # "etag" => "\"000000000096f4ee74bc4596443ef2a4\"",
594
- # "date" => "Wed, 23 May 2007 09:08:03 GMT",
595
- # "x-amz-id-2" => "ZZZZZZZZZZZZZZZZZZZZ1HJXZoehfrS4QxcxTdNGldR7w/FVqblP50fU8cuIMLiu",
596
- # "x-amz-meta-family" => "Woho556!",
597
- # "x-amz-request-id" => "0000000C246D770C",
598
- # "server" => "AmazonS3",
599
- # "content-length" => "7"}
600
- #
601
- def head(bucket, key, headers={})
602
- req_hash = generate_rest_request('HEAD', headers.merge(:url=>"#{bucket}/#{CGI::escape key}"))
603
- request_info(req_hash, S3HttpResponseHeadParser.new)
604
- rescue
605
- on_exception
606
- end
607
-
608
- # Deletes key. Returns +true+ or an exception.
609
- #
610
- # s3.delete('my_awesome_bucket', 'log/curent/1.log') #=> true
611
- #
612
- def delete(bucket, key='', headers={})
613
- req_hash = generate_rest_request('DELETE', headers.merge(:url=>"#{bucket}/#{CGI::escape key}"))
614
- request_info(req_hash, RightHttp2xxParser.new)
615
- rescue
616
- on_exception
617
- end
618
-
619
- # Copy an object.
620
- # directive: :copy - copy meta-headers from source (default value)
621
- # :replace - replace meta-headers by passed ones
622
- #
623
- # # copy a key with meta-headers
624
- # s3.copy('b1', 'key1', 'b1', 'key1_copy') #=> {:e_tag=>"\"e8b...8d\"", :last_modified=>"2008-05-11T10:25:22.000Z"}
625
- #
626
- # # copy a key, overwrite meta-headers
627
- # s3.copy('b1', 'key2', 'b1', 'key2_copy', :replace, 'x-amz-meta-family'=>'Woho555!') #=> {:e_tag=>"\"e8b...8d\"", :last_modified=>"2008-05-11T10:26:22.000Z"}
628
- #
629
- # see: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/UsingCopyingObjects.html
630
- # http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTObjectCOPY.html
631
- #
632
- def copy(src_bucket, src_key, dest_bucket, dest_key=nil, directive=:copy, headers={})
633
- dest_key ||= src_key
634
- headers['x-amz-metadata-directive'] = directive.to_s.upcase
635
- headers['x-amz-copy-source'] = "#{src_bucket}/#{CGI::escape src_key}"
636
- req_hash = generate_rest_request('PUT', headers.merge(:url=>"#{dest_bucket}/#{CGI::escape dest_key}"))
637
- request_info(req_hash, S3CopyParser.new)
638
- rescue
639
- on_exception
640
- end
641
-
642
- # Move an object.
643
- # directive: :copy - copy meta-headers from source (default value)
644
- # :replace - replace meta-headers by passed ones
645
- #
646
- # # move bucket1/key1 to bucket1/key2
647
- # s3.move('bucket1', 'key1', 'bucket1', 'key2') #=> {:e_tag=>"\"e8b...8d\"", :last_modified=>"2008-05-11T10:27:22.000Z"}
648
- #
649
- # # move bucket1/key1 to bucket2/key2 with new meta-headers assignment
650
- # s3.copy('bucket1', 'key1', 'bucket2', 'key2', :replace, 'x-amz-meta-family'=>'Woho555!') #=> {:e_tag=>"\"e8b...8d\"", :last_modified=>"2008-05-11T10:28:22.000Z"}
651
- #
652
- def move(src_bucket, src_key, dest_bucket, dest_key=nil, directive=:copy, headers={})
653
- copy_result = copy(src_bucket, src_key, dest_bucket, dest_key, directive, headers)
654
- # delete an original key if it differs from a destination one
655
- delete(src_bucket, src_key) unless src_bucket == dest_bucket && src_key == dest_key
656
- copy_result
657
- end
658
-
659
- # Rename an object.
660
- #
661
- # # rename bucket1/key1 to bucket1/key2
662
- # s3.rename('bucket1', 'key1', 'key2') #=> {:e_tag=>"\"e8b...8d\"", :last_modified=>"2008-05-11T10:29:22.000Z"}
663
- #
664
- def rename(src_bucket, src_key, dest_key, headers={})
665
- move(src_bucket, src_key, src_bucket, dest_key, :copy, headers)
666
- end
667
-
668
- # Retieves the ACL (access control policy) for a bucket or object. Returns a hash of headers and xml doc with ACL data. See: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTAccessPolicy.html.
669
- #
670
- # s3.get_acl('my_awesome_bucket', 'log/curent/1.log') #=>
671
- # {:headers => {"x-amz-id-2"=>"B3BdDMDUz+phFF2mGBH04E46ZD4Qb9HF5PoPHqDRWBv+NVGeA3TOQ3BkVvPBjgxX",
672
- # "content-type"=>"application/xml;charset=ISO-8859-1",
673
- # "date"=>"Wed, 23 May 2007 09:40:16 GMT",
674
- # "x-amz-request-id"=>"B183FA7AB5FBB4DD",
675
- # "server"=>"AmazonS3",
676
- # "transfer-encoding"=>"chunked"},
677
- # :object => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<AccessControlPolicy xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\"><Owner>
678
- # <ID>16144ab2929314cc309ffe736daa2b264357476c7fea6efb2c3347ac3ab2792a</ID><DisplayName>root</DisplayName></Owner>
679
- # <AccessControlList><Grant><Grantee xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"CanonicalUser\"><ID>
680
- # 16144ab2929314cc309ffe736daa2b264357476c7fea6efb2c3347ac3ab2792a</ID><DisplayName>root</DisplayName></Grantee>
681
- # <Permission>FULL_CONTROL</Permission></Grant></AccessControlList></AccessControlPolicy>" }
682
- #
683
- def get_acl(bucket, key='', headers={})
684
- key = key.blank? ? '' : "/#{CGI::escape key}"
685
- req_hash = generate_rest_request('GET', headers.merge(:url=>"#{bucket}#{key}?acl"))
686
- request_info(req_hash, S3HttpResponseBodyParser.new)
687
- rescue
688
- on_exception
689
- end
690
-
691
- # Retieves the ACL (access control policy) for a bucket or object.
692
- # Returns a hash of {:owner, :grantees}
693
- #
694
- # s3.get_acl_parse('my_awesome_bucket', 'log/curent/1.log') #=>
695
- #
696
- # { :grantees=>
697
- # { "16...2a"=>
698
- # { :display_name=>"root",
699
- # :permissions=>["FULL_CONTROL"],
700
- # :attributes=>
701
- # { "xsi:type"=>"CanonicalUser",
702
- # "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance"}},
703
- # "http://acs.amazonaws.com/groups/global/AllUsers"=>
704
- # { :display_name=>"AllUsers",
705
- # :permissions=>["READ"],
706
- # :attributes=>
707
- # { "xsi:type"=>"Group",
708
- # "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance"}}},
709
- # :owner=>
710
- # { :id=>"16..2a",
711
- # :display_name=>"root"}}
712
- #
713
- def get_acl_parse(bucket, key='', headers={})
714
- key = key.blank? ? '' : "/#{CGI::escape key}"
715
- req_hash = generate_rest_request('GET', headers.merge(:url=>"#{bucket}#{key}?acl"))
716
- acl = request_info(req_hash, S3AclParser.new(:logger => @logger))
717
- result = {}
718
- result[:owner] = acl[:owner]
719
- result[:grantees] = {}
720
- acl[:grantees].each do |grantee|
721
- key = grantee[:id] || grantee[:uri]
722
- if result[:grantees].key?(key)
723
- result[:grantees][key][:permissions] << grantee[:permissions]
724
- else
725
- result[:grantees][key] =
726
- { :display_name => grantee[:display_name] || grantee[:uri].to_s[/[^\/]*$/],
727
- :permissions => grantee[:permissions].to_a,
728
- :attributes => grantee[:attributes] }
729
- end
730
- end
731
- result
732
- rescue
733
- on_exception
734
- end
735
-
736
- # Sets the ACL on a bucket or object.
737
- def put_acl(bucket, key, acl_xml_doc, headers={})
738
- key = key.blank? ? '' : "/#{CGI::escape key}"
739
- req_hash = generate_rest_request('PUT', headers.merge(:url=>"#{bucket}#{key}?acl", :data=>acl_xml_doc))
740
- request_info(req_hash, S3HttpResponseBodyParser.new)
741
- rescue
742
- on_exception
743
- end
744
-
745
- # Retieves the ACL (access control policy) for a bucket. Returns a hash of headers and xml doc with ACL data.
746
- def get_bucket_acl(bucket, headers={})
747
- return get_acl(bucket, '', headers)
748
- rescue
749
- on_exception
750
- end
751
-
752
- # Sets the ACL on a bucket only.
753
- def put_bucket_acl(bucket, acl_xml_doc, headers={})
754
- return put_acl(bucket, '', acl_xml_doc, headers)
755
- rescue
756
- on_exception
757
- end
758
-
759
-
760
- # Removes all keys from bucket. Returns +true+ or an exception.
761
- #
762
- # s3.clear_bucket('my_awesome_bucket') #=> true
763
- #
764
- def clear_bucket(bucket)
765
- incrementally_list_bucket(bucket) do |results|
766
- results[:contents].each { |key| delete(bucket, key[:key]) }
767
- end
768
- true
769
- rescue
770
- on_exception
771
- end
772
-
773
- # Deletes all keys in bucket then deletes bucket. Returns +true+ or an exception.
774
- #
775
- # s3.force_delete_bucket('my_awesome_bucket')
776
- #
777
- def force_delete_bucket(bucket)
778
- clear_bucket(bucket)
779
- delete_bucket(bucket)
780
- rescue
781
- on_exception
782
- end
783
-
784
- # Deletes all keys where the 'folder_key' may be assumed as 'folder' name. Returns an array of string keys that have been deleted.
785
- #
786
- # s3.list_bucket('my_awesome_bucket').map{|key_data| key_data[:key]} #=> ['test','test/2/34','test/3','test1','test1/logs']
787
- # s3.delete_folder('my_awesome_bucket','test') #=> ['test','test/2/34','test/3']
788
- #
789
- def delete_folder(bucket, folder_key, separator='/')
790
- folder_key.chomp!(separator)
791
- allkeys = []
792
- incrementally_list_bucket(bucket, { 'prefix' => folder_key }) do |results|
793
- keys = results[:contents].map{ |s3_key| s3_key[:key][/^#{folder_key}($|#{separator}.*)/] ? s3_key[:key] : nil}.compact
794
- keys.each{ |key| delete(bucket, key) }
795
- allkeys << keys
796
- end
797
- allkeys
798
- rescue
799
- on_exception
800
- end
801
-
802
- # Retrieves object data only (headers are omitted). Returns +string+ or an exception.
803
- #
804
- # s3.get('my_awesome_bucket', 'log/curent/1.log') #=> 'Ola-la!'
805
- #
806
- def get_object(bucket, key, headers={})
807
- get(bucket, key, headers)[:object]
808
- rescue
809
- on_exception
810
- end
811
-
812
- #-----------------------------------------------------------------
813
- # Query API: Links
814
- #-----------------------------------------------------------------
815
-
816
- # Generates link for QUERY API
817
- def generate_link(method, headers={}, expires=nil) #:nodoc:
818
- # calculate request data
819
- server, path, path_to_sign = fetch_request_params(headers)
820
- # expiration time
821
- expires ||= DEFAULT_EXPIRES_AFTER
822
- expires = Time.now.utc + expires if expires.is_a?(Fixnum) && (expires < ONE_YEAR_IN_SECONDS)
823
- expires = expires.to_i
824
- # remove unset(==optional) and symbolyc keys
825
- headers.each{ |key, value| headers.delete(key) if (value.nil? || key.is_a?(Symbol)) }
826
- #generate auth strings
827
- auth_string = canonical_string(method, path_to_sign, headers, expires)
828
- signature = CGI::escape(Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new("sha1"), @aws_secret_access_key, auth_string)).strip)
829
- # path building
830
- addon = "Signature=#{signature}&Expires=#{expires}&AWSAccessKeyId=#{@aws_access_key_id}"
831
- path += path[/\?/] ? "&#{addon}" : "?#{addon}"
832
- "#{@params[:protocol]}://#{server}:#{@params[:port]}#{path}"
833
- rescue
834
- on_exception
835
- end
836
-
837
- # Generates link for 'ListAllMyBuckets'.
838
- #
839
- # s3.list_all_my_buckets_link #=> url string
840
- #
841
- def list_all_my_buckets_link(expires=nil, headers={})
842
- generate_link('GET', headers.merge(:url=>''), expires)
843
- rescue
844
- on_exception
845
- end
846
-
847
- # Generates link for 'CreateBucket'.
848
- #
849
- # s3.create_bucket_link('my_awesome_bucket') #=> url string
850
- #
851
- def create_bucket_link(bucket, expires=nil, headers={})
852
- generate_link('PUT', headers.merge(:url=>bucket), expires)
853
- rescue
854
- on_exception
855
- end
856
-
857
- # Generates link for 'DeleteBucket'.
858
- #
859
- # s3.delete_bucket_link('my_awesome_bucket') #=> url string
860
- #
861
- def delete_bucket_link(bucket, expires=nil, headers={})
862
- generate_link('DELETE', headers.merge(:url=>bucket), expires)
863
- rescue
864
- on_exception
865
- end
866
-
867
- # Generates link for 'ListBucket'.
868
- #
869
- # s3.list_bucket_link('my_awesome_bucket') #=> url string
870
- #
871
- def list_bucket_link(bucket, options=nil, expires=nil, headers={})
872
- bucket += '?' + options.map{|k, v| "#{k.to_s}=#{CGI::escape v.to_s}"}.join('&') unless options.blank?
873
- generate_link('GET', headers.merge(:url=>bucket), expires)
874
- rescue
875
- on_exception
876
- end
877
-
878
- # Generates link for 'PutObject'.
879
- #
880
- # s3.put_link('my_awesome_bucket',key, object) #=> url string
881
- #
882
- def put_link(bucket, key, data=nil, expires=nil, headers={})
883
- generate_link('PUT', headers.merge(:url=>"#{bucket}/#{AwsUtils::URLencode key}", :data=>data), expires)
884
- rescue
885
- on_exception
886
- end
887
-
888
- # Generates link for 'GetObject'.
889
- #
890
- # if a bucket comply with virtual hosting naming then retuns a link with the
891
- # bucket as a part of host name:
892
- #
893
- # s3.get_link('my-awesome-bucket',key) #=> https://my-awesome-bucket.s3.amazonaws.com:443/asia%2Fcustomers?Signature=nh7...
894
- #
895
- # otherwise returns an old style link (the bucket is a part of path):
896
- #
897
- # s3.get_link('my_awesome_bucket',key) #=> https://s3.amazonaws.com:443/my_awesome_bucket/asia%2Fcustomers?Signature=QAO...
898
- #
899
- # see http://docs.amazonwebservices.com/AmazonS3/2006-03-01/VirtualHosting.html
900
- def get_link(bucket, key, expires=nil, headers={})
901
- generate_link('GET', headers.merge(:url=>"#{bucket}/#{AwsUtils::URLencode key}"), expires)
902
- rescue
903
- on_exception
904
- end
905
-
906
- # Generates link for 'HeadObject'.
907
- #
908
- # s3.head_link('my_awesome_bucket',key) #=> url string
909
- #
910
- def head_link(bucket, key, expires=nil, headers={})
911
- generate_link('HEAD', headers.merge(:url=>"#{bucket}/#{AwsUtils::URLencode key}"), expires)
912
- rescue
913
- on_exception
914
- end
915
-
916
- # Generates link for 'DeleteObject'.
917
- #
918
- # s3.delete_link('my_awesome_bucket',key) #=> url string
919
- #
920
- def delete_link(bucket, key, expires=nil, headers={})
921
- generate_link('DELETE', headers.merge(:url=>"#{bucket}/#{AwsUtils::URLencode key}"), expires)
922
- rescue
923
- on_exception
924
- end
925
-
926
-
927
- # Generates link for 'GetACL'.
928
- #
929
- # s3.get_acl_link('my_awesome_bucket',key) #=> url string
930
- #
931
- def get_acl_link(bucket, key='', headers={})
932
- return generate_link('GET', headers.merge(:url=>"#{bucket}/#{AwsUtils::URLencode key}?acl"))
933
- rescue
934
- on_exception
935
- end
936
-
937
- # Generates link for 'PutACL'.
938
- #
939
- # s3.put_acl_link('my_awesome_bucket',key) #=> url string
940
- #
941
- def put_acl_link(bucket, key='', headers={})
942
- return generate_link('PUT', headers.merge(:url=>"#{bucket}/#{AwsUtils::URLencode key}?acl"))
943
- rescue
944
- on_exception
945
- end
946
-
947
- # Generates link for 'GetBucketACL'.
948
- #
949
- # s3.get_acl_link('my_awesome_bucket',key) #=> url string
950
- #
951
- def get_bucket_acl_link(bucket, headers={})
952
- return get_acl_link(bucket, '', headers)
953
- rescue
954
- on_exception
955
- end
956
-
957
- # Generates link for 'PutBucketACL'.
958
- #
959
- # s3.put_acl_link('my_awesome_bucket',key) #=> url string
960
- #
961
- def put_bucket_acl_link(bucket, acl_xml_doc, headers={})
962
- return put_acl_link(bucket, '', acl_xml_doc, headers)
963
- rescue
964
- on_exception
965
- end
966
-
967
- #-----------------------------------------------------------------
968
- # PARSERS:
969
- #-----------------------------------------------------------------
970
-
971
- class S3ListAllMyBucketsParser < RightAWSParser # :nodoc:
972
- def reset
973
- @result = []
974
- @owner = {}
975
- end
976
- def tagstart(name, attributes)
977
- @current_bucket = {} if name == 'Bucket'
978
- end
979
- def tagend(name)
980
- case name
981
- when 'ID' ; @owner[:owner_id] = @text
982
- when 'DisplayName' ; @owner[:owner_display_name] = @text
983
- when 'Name' ; @current_bucket[:name] = @text
984
- when 'CreationDate'; @current_bucket[:creation_date] = @text
985
- when 'Bucket' ; @result << @current_bucket.merge(@owner)
986
- end
987
- end
988
- end
989
-
990
- class S3ListBucketParser < RightAWSParser # :nodoc:
991
- def reset
992
- @result = []
993
- @service = {}
994
- @current_key = {}
995
- end
996
- def tagstart(name, attributes)
997
- @current_key = {} if name == 'Contents'
998
- end
999
- def tagend(name)
1000
- case name
1001
- # service info
1002
- when 'Name' ; @service['name'] = @text
1003
- when 'Prefix' ; @service['prefix'] = @text
1004
- when 'Marker' ; @service['marker'] = @text
1005
- when 'MaxKeys' ; @service['max-keys'] = @text
1006
- when 'Delimiter' ; @service['delimiter'] = @text
1007
- when 'IsTruncated' ; @service['is_truncated'] = (@text =~ /false/ ? false : true)
1008
- # key data
1009
- when 'Key' ; @current_key[:key] = @text
1010
- when 'LastModified'; @current_key[:last_modified] = @text
1011
- when 'ETag' ; @current_key[:e_tag] = @text
1012
- when 'Size' ; @current_key[:size] = @text.to_i
1013
- when 'StorageClass'; @current_key[:storage_class] = @text
1014
- when 'ID' ; @current_key[:owner_id] = @text
1015
- when 'DisplayName' ; @current_key[:owner_display_name] = @text
1016
- when 'Contents' ; @current_key[:service] = @service; @result << @current_key
1017
- end
1018
- end
1019
- end
1020
-
1021
- class S3ImprovedListBucketParser < RightAWSParser # :nodoc:
1022
- def reset
1023
- @result = {}
1024
- @result[:contents] = []
1025
- @result[:common_prefixes] = []
1026
- @contents = []
1027
- @current_key = {}
1028
- @common_prefixes = []
1029
- @in_common_prefixes = false
1030
- end
1031
- def tagstart(name, attributes)
1032
- @current_key = {} if name == 'Contents'
1033
- @in_common_prefixes = true if name == 'CommonPrefixes'
1034
- end
1035
- def tagend(name)
1036
- case name
1037
- # service info
1038
- when 'Name' ; @result[:name] = @text
1039
- # Amazon uses the same tag for the search prefix and for the entries
1040
- # in common prefix...so use our simple flag to see which element
1041
- # we are parsing
1042
- when 'Prefix' ; @in_common_prefixes ? @common_prefixes << @text : @result[:prefix] = @text
1043
- when 'Marker' ; @result[:marker] = @text
1044
- when 'MaxKeys' ; @result[:max_keys] = @text
1045
- when 'Delimiter' ; @result[:delimiter] = @text
1046
- when 'IsTruncated' ; @result[:is_truncated] = (@text =~ /false/ ? false : true)
1047
- when 'NextMarker' ; @result[:next_marker] = @text
1048
- # key data
1049
- when 'Key' ; @current_key[:key] = @text
1050
- when 'LastModified'; @current_key[:last_modified] = @text
1051
- when 'ETag' ; @current_key[:e_tag] = @text
1052
- when 'Size' ; @current_key[:size] = @text.to_i
1053
- when 'StorageClass'; @current_key[:storage_class] = @text
1054
- when 'ID' ; @current_key[:owner_id] = @text
1055
- when 'DisplayName' ; @current_key[:owner_display_name] = @text
1056
- when 'Contents' ; @result[:contents] << @current_key
1057
- # Common Prefix stuff
1058
- when 'CommonPrefixes' ; @result[:common_prefixes] = @common_prefixes; @in_common_prefixes = false
1059
- end
1060
- end
1061
- end
1062
-
1063
- class S3BucketLocationParser < RightAWSParser # :nodoc:
1064
- def reset
1065
- @result = ''
1066
- end
1067
- def tagend(name)
1068
- @result = @text if name == 'LocationConstraint'
1069
- end
1070
- end
1071
-
1072
- class S3AclParser < RightAWSParser # :nodoc:
1073
- def reset
1074
- @result = {:grantees=>[], :owner=>{}}
1075
- @current_grantee = {}
1076
- end
1077
- def tagstart(name, attributes)
1078
- @current_grantee = { :attributes => attributes } if name=='Grantee'
1079
- end
1080
- def tagend(name)
1081
- case name
1082
- # service info
1083
- when 'ID'
1084
- if @xmlpath == 'AccessControlPolicy/Owner'
1085
- @result[:owner][:id] = @text
1086
- else
1087
- @current_grantee[:id] = @text
1088
- end
1089
- when 'DisplayName'
1090
- if @xmlpath == 'AccessControlPolicy/Owner'
1091
- @result[:owner][:display_name] = @text
1092
- else
1093
- @current_grantee[:display_name] = @text
1094
- end
1095
- when 'URI'
1096
- @current_grantee[:uri] = @text
1097
- when 'Permission'
1098
- @current_grantee[:permissions] = @text
1099
- when 'Grant'
1100
- @result[:grantees] << @current_grantee
1101
- end
1102
- end
1103
- end
1104
-
1105
- class S3LoggingParser < RightAWSParser # :nodoc:
1106
- def reset
1107
- @result = {:enabled => false, :targetbucket => '', :targetprefix => ''}
1108
- @current_grantee = {}
1109
- end
1110
- def tagend(name)
1111
- case name
1112
- # service info
1113
- when 'TargetBucket'
1114
- if @xmlpath == 'BucketLoggingStatus/LoggingEnabled'
1115
- @result[:targetbucket] = @text
1116
- @result[:enabled] = true
1117
- end
1118
- when 'TargetPrefix'
1119
- if @xmlpath == 'BucketLoggingStatus/LoggingEnabled'
1120
- @result[:targetprefix] = @text
1121
- @result[:enabled] = true
1122
- end
1123
- end
1124
- end
1125
- end
1126
-
1127
- class S3CopyParser < RightAWSParser # :nodoc:
1128
- def reset
1129
- @result = {}
1130
- end
1131
- def tagend(name)
1132
- case name
1133
- when 'LastModified' : @result[:last_modified] = @text
1134
- when 'ETag' : @result[:e_tag] = @text
1135
- end
1136
- end
1137
- end
1138
-
1139
- #-----------------------------------------------------------------
1140
- # PARSERS: Non XML
1141
- #-----------------------------------------------------------------
1142
-
1143
- class S3HttpResponseParser # :nodoc:
1144
- attr_reader :result
1145
- def parse(response)
1146
- @result = response
1147
- end
1148
- def headers_to_string(headers)
1149
- result = {}
1150
- headers.each do |key, value|
1151
- value = value.to_s if value.is_a?(Array) && value.size<2
1152
- result[key] = value
1153
- end
1154
- result
1155
- end
1156
- end
1157
-
1158
- class S3HttpResponseBodyParser < S3HttpResponseParser # :nodoc:
1159
- def parse(response)
1160
- @result = {
1161
- :object => response.body,
1162
- :headers => headers_to_string(response.to_hash)
1163
- }
1164
- end
1165
- end
1166
-
1167
- class S3HttpResponseHeadParser < S3HttpResponseParser # :nodoc:
1168
- def parse(response)
1169
- @result = headers_to_string(response.to_hash)
1170
- end
1171
- end
1172
-
1173
- end
1174
-
1175
- end