fog-maestrodev 1.19.0.20140212012611 → 1.20.0.20140305101305

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 (513) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +2 -0
  3. data/.travis.yml +10 -0
  4. data/CONTRIBUTORS.md +694 -0
  5. data/Gemfile.1.8.7 +1 -1
  6. data/LICENSE.md +17 -17
  7. data/Rakefile +1 -1
  8. data/benchs/each_provider.sh +6 -0
  9. data/benchs/each_service.sh +6 -0
  10. data/benchs/load_times.rb +6 -0
  11. data/changelog.txt +312 -0
  12. data/fog.gemspec +3 -5
  13. data/lib/fog.rb +1 -0
  14. data/lib/fog/atmos.rb +1 -11
  15. data/lib/fog/atmos/core.rb +11 -0
  16. data/lib/fog/atmos/requests/storage/get_namespace.rb +1 -1
  17. data/lib/fog/atmos/requests/storage/head_namespace.rb +1 -1
  18. data/lib/fog/atmos/storage.rb +1 -1
  19. data/lib/fog/aws.rb +22 -323
  20. data/lib/fog/aws/auto_scaling.rb +1 -1
  21. data/lib/fog/aws/beanstalk.rb +1 -1
  22. data/lib/fog/aws/cdn.rb +1 -1
  23. data/lib/fog/aws/cloud_formation.rb +1 -1
  24. data/lib/fog/aws/cloud_watch.rb +1 -1
  25. data/lib/fog/aws/compute.rb +12 -1
  26. data/lib/fog/aws/core.rb +329 -0
  27. data/lib/fog/aws/data_pipeline.rb +1 -1
  28. data/lib/fog/aws/dns.rb +1 -1
  29. data/lib/fog/aws/dynamodb.rb +1 -1
  30. data/lib/fog/aws/elasticache.rb +10 -3
  31. data/lib/fog/aws/elb.rb +1 -1
  32. data/lib/fog/aws/emr.rb +1 -2
  33. data/lib/fog/aws/glacier.rb +1 -1
  34. data/lib/fog/aws/iam.rb +1 -1
  35. data/lib/fog/aws/models/compute/dhcp_option.rb +2 -2
  36. data/lib/fog/aws/models/compute/flavor.rb +2 -0
  37. data/lib/fog/aws/models/compute/flavors.rb +363 -49
  38. data/lib/fog/aws/models/compute/network_acl.rb +170 -0
  39. data/lib/fog/aws/models/compute/network_acls.rb +138 -0
  40. data/lib/fog/aws/models/compute/server.rb +2 -2
  41. data/lib/fog/aws/models/compute/servers.rb +7 -2
  42. data/lib/fog/aws/models/compute/subnet.rb +2 -2
  43. data/lib/fog/aws/models/elasticache/cluster.rb +6 -0
  44. data/lib/fog/aws/models/elasticache/subnet_group.rb +35 -0
  45. data/lib/fog/aws/models/elasticache/subnet_groups.rb +27 -0
  46. data/lib/fog/aws/models/rds/snapshot.rb +1 -0
  47. data/lib/fog/aws/models/storage/file.rb +1 -1
  48. data/lib/fog/aws/parsers/compute/create_network_acl.rb +28 -0
  49. data/lib/fog/aws/parsers/compute/create_subnet.rb +2 -3
  50. data/lib/fog/aws/parsers/compute/describe_network_acls.rb +42 -0
  51. data/lib/fog/aws/parsers/compute/describe_reserved_instances.rb +29 -3
  52. data/lib/fog/aws/parsers/compute/network_acl_parser.rb +105 -0
  53. data/lib/fog/aws/parsers/compute/network_interface_parser.rb +16 -0
  54. data/lib/fog/aws/parsers/compute/replace_network_acl_association.rb +20 -0
  55. data/lib/fog/aws/parsers/compute/run_instances.rb +1 -1
  56. data/lib/fog/aws/parsers/elasticache/cache_cluster_parser.rb +2 -2
  57. data/lib/fog/aws/parsers/elasticache/create_cache_subnet_group.rb +38 -0
  58. data/lib/fog/aws/parsers/elasticache/describe_cache_subnet_groups.rb +38 -0
  59. data/lib/fog/aws/parsers/elasticache/subnet_group_parser.rb +38 -0
  60. data/lib/fog/aws/parsers/iam/upload_server_certificate.rb +1 -1
  61. data/lib/fog/aws/parsers/rds/db_parser.rb +6 -0
  62. data/lib/fog/aws/parsers/rds/snapshot_parser.rb +1 -0
  63. data/lib/fog/aws/rds.rb +1 -1
  64. data/lib/fog/aws/redshift.rb +1 -1
  65. data/lib/fog/aws/requests/compute/create_network_acl.rb +105 -0
  66. data/lib/fog/aws/requests/compute/create_network_acl_entry.rb +80 -0
  67. data/lib/fog/aws/requests/compute/create_subnet.rb +14 -4
  68. data/lib/fog/aws/requests/compute/create_vpc.rb +7 -1
  69. data/lib/fog/aws/requests/compute/delete_network_acl.rb +52 -0
  70. data/lib/fog/aws/requests/compute/delete_network_acl_entry.rb +55 -0
  71. data/lib/fog/aws/requests/compute/delete_vpc.rb +4 -0
  72. data/lib/fog/aws/requests/compute/describe_network_acls.rb +104 -0
  73. data/lib/fog/aws/requests/compute/describe_network_interfaces.rb +4 -0
  74. data/lib/fog/aws/requests/compute/disassociate_address.rb +4 -3
  75. data/lib/fog/aws/requests/compute/replace_network_acl_association.rb +66 -0
  76. data/lib/fog/aws/requests/compute/replace_network_acl_entry.rb +81 -0
  77. data/lib/fog/aws/requests/compute/replace_route.rb +84 -0
  78. data/lib/fog/aws/requests/compute/request_spot_instances.rb +8 -0
  79. data/lib/fog/aws/requests/compute/run_instances.rb +23 -3
  80. data/lib/fog/aws/requests/data_pipeline/put_pipeline_definition.rb +29 -21
  81. data/lib/fog/aws/requests/elasticache/create_cache_cluster.rb +18 -11
  82. data/lib/fog/aws/requests/elasticache/create_cache_subnet_group.rb +66 -0
  83. data/lib/fog/aws/requests/elasticache/delete_cache_subnet_group.rb +40 -0
  84. data/lib/fog/aws/requests/elasticache/describe_cache_subnet_groups.rb +63 -0
  85. data/lib/fog/aws/requests/elb/create_load_balancer.rb +3 -2
  86. data/lib/fog/aws/requests/iam/delete_server_certificate.rb +3 -1
  87. data/lib/fog/aws/requests/rds/create_db_instance.rb +2 -0
  88. data/lib/fog/aws/requests/rds/create_db_instance_read_replica.rb +1 -0
  89. data/lib/fog/aws/requests/rds/create_db_snapshot.rb +1 -1
  90. data/lib/fog/aws/requests/rds/create_db_subnet_group.rb +2 -0
  91. data/lib/fog/aws/requests/rds/modify_db_instance.rb +1 -0
  92. data/lib/fog/aws/requests/storage/abort_multipart_upload.rb +18 -0
  93. data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +23 -0
  94. data/lib/fog/aws/requests/storage/initiate_multipart_upload.rb +24 -0
  95. data/lib/fog/aws/requests/storage/put_object.rb +18 -54
  96. data/lib/fog/aws/requests/storage/shared_mock_methods.rb +87 -0
  97. data/lib/fog/aws/requests/storage/upload_part.rb +18 -0
  98. data/lib/fog/aws/ses.rb +1 -1
  99. data/lib/fog/aws/simpledb.rb +1 -1
  100. data/lib/fog/aws/sns.rb +1 -2
  101. data/lib/fog/aws/sqs.rb +5 -4
  102. data/lib/fog/aws/storage.rb +15 -5
  103. data/lib/fog/aws/sts.rb +1 -1
  104. data/lib/fog/bare_metal_cloud.rb +1 -11
  105. data/lib/fog/bare_metal_cloud/compute.rb +1 -1
  106. data/lib/fog/bare_metal_cloud/core.rb +11 -0
  107. data/lib/fog/bin.rb +1 -0
  108. data/lib/fog/bin/rage4.rb +31 -0
  109. data/lib/fog/bluebox.rb +3 -13
  110. data/lib/fog/bluebox/blb.rb +2 -2
  111. data/lib/fog/bluebox/compute.rb +1 -1
  112. data/lib/fog/bluebox/core.rb +13 -0
  113. data/lib/fog/bluebox/dns.rb +2 -2
  114. data/lib/fog/bluebox/models/compute/server.rb +1 -1
  115. data/lib/fog/brightbox.rb +1 -10
  116. data/lib/fog/brightbox/compute.rb +20 -1
  117. data/lib/fog/brightbox/core.rb +10 -0
  118. data/lib/fog/brightbox/models/compute/cloud_ip.rb +5 -0
  119. data/lib/fog/brightbox/models/compute/database_server.rb +91 -0
  120. data/lib/fog/brightbox/models/compute/database_servers.rb +28 -0
  121. data/lib/fog/brightbox/models/compute/database_snapshot.rb +52 -0
  122. data/lib/fog/brightbox/models/compute/database_snapshots.rb +24 -0
  123. data/lib/fog/brightbox/models/compute/database_type.rb +19 -0
  124. data/lib/fog/brightbox/models/compute/database_types.rb +26 -0
  125. data/lib/fog/brightbox/requests/compute/create_database_server.rb +25 -0
  126. data/lib/fog/brightbox/requests/compute/delete_database_server.rb +26 -0
  127. data/lib/fog/brightbox/requests/compute/delete_database_snapshot.rb +26 -0
  128. data/lib/fog/brightbox/requests/compute/get_database_server.rb +19 -0
  129. data/lib/fog/brightbox/requests/compute/get_database_snapshot.rb +19 -0
  130. data/lib/fog/brightbox/requests/compute/get_database_type.rb +21 -0
  131. data/lib/fog/brightbox/requests/compute/list_database_servers.rb +17 -0
  132. data/lib/fog/brightbox/requests/compute/list_database_snapshots.rb +17 -0
  133. data/lib/fog/brightbox/requests/compute/list_database_types.rb +19 -0
  134. data/lib/fog/brightbox/requests/compute/reset_password_database_server.rb +19 -0
  135. data/lib/fog/brightbox/requests/compute/snapshot_database_server.rb +19 -0
  136. data/lib/fog/brightbox/requests/compute/update_database_server.rb +25 -0
  137. data/lib/fog/brightbox/requests/compute/update_database_snapshot.rb +26 -0
  138. data/lib/fog/clodo.rb +1 -34
  139. data/lib/fog/clodo/compute.rb +2 -0
  140. data/lib/fog/clodo/core.rb +34 -0
  141. data/lib/fog/clodo/models/compute/server.rb +2 -2
  142. data/lib/fog/cloudsigma.rb +1 -9
  143. data/lib/fog/cloudsigma/compute.rb +2 -2
  144. data/lib/fog/cloudsigma/core.rb +9 -0
  145. data/lib/fog/cloudstack.rb +1 -40
  146. data/lib/fog/cloudstack/compute.rb +1 -1
  147. data/lib/fog/cloudstack/core.rb +40 -0
  148. data/lib/fog/cloudstack/models/compute/server.rb +3 -0
  149. data/lib/fog/compute/models/server.rb +33 -7
  150. data/lib/fog/core/collection.rb +1 -3
  151. data/lib/fog/core/errors.rb +2 -0
  152. data/lib/fog/core/hmac.rb +3 -16
  153. data/lib/fog/core/logger.rb +3 -3
  154. data/lib/fog/core/provider.rb +1 -2
  155. data/lib/fog/digitalocean.rb +1 -9
  156. data/lib/fog/digitalocean/compute.rb +1 -1
  157. data/lib/fog/digitalocean/core.rb +9 -0
  158. data/lib/fog/digitalocean/models/compute/server.rb +3 -2
  159. data/lib/fog/digitalocean/models/compute/servers.rb +23 -4
  160. data/lib/fog/digitalocean/requests/compute/create_server.rb +2 -1
  161. data/lib/fog/digitalocean/requests/compute/destroy_server.rb +3 -1
  162. data/lib/fog/dnsimple.rb +1 -11
  163. data/lib/fog/dnsimple/core.rb +11 -0
  164. data/lib/fog/dnsimple/dns.rb +5 -2
  165. data/lib/fog/dnsimple/models/dns/record.rb +3 -3
  166. data/lib/fog/dnsimple/requests/dns/create_domain.rb +26 -22
  167. data/lib/fog/dnsimple/requests/dns/create_record.rb +21 -24
  168. data/lib/fog/dnsimple/requests/dns/delete_domain.rb +7 -6
  169. data/lib/fog/dnsimple/requests/dns/delete_record.rb +7 -5
  170. data/lib/fog/dnsimple/requests/dns/get_domain.rb +12 -18
  171. data/lib/fog/dnsimple/requests/dns/get_record.rb +11 -17
  172. data/lib/fog/dnsimple/requests/dns/list_domains.rb +7 -15
  173. data/lib/fog/dnsimple/requests/dns/list_records.rb +10 -15
  174. data/lib/fog/dnsimple/requests/dns/update_record.rb +14 -19
  175. data/lib/fog/dnsmadeeasy.rb +1 -11
  176. data/lib/fog/dnsmadeeasy/core.rb +11 -0
  177. data/lib/fog/dnsmadeeasy/dns.rb +1 -1
  178. data/lib/fog/dreamhost.rb +1 -11
  179. data/lib/fog/dreamhost/core.rb +11 -0
  180. data/lib/fog/dreamhost/dns.rb +1 -1
  181. data/lib/fog/dynect.rb +1 -26
  182. data/lib/fog/dynect/core.rb +26 -0
  183. data/lib/fog/dynect/dns.rb +1 -1
  184. data/lib/fog/dynect/requests/dns/put_record.rb +5 -4
  185. data/lib/fog/dynect/requests/dns/put_zone.rb +5 -4
  186. data/lib/fog/ecloud.rb +1 -31
  187. data/lib/fog/ecloud/compute.rb +1 -0
  188. data/lib/fog/ecloud/core.rb +31 -0
  189. data/lib/fog/glesys.rb +1 -11
  190. data/lib/fog/glesys/compute.rb +6 -4
  191. data/lib/fog/glesys/core.rb +11 -0
  192. data/lib/fog/glesys/models/compute/server.rb +2 -2
  193. data/lib/fog/go_grid.rb +1 -11
  194. data/lib/fog/go_grid/compute.rb +1 -1
  195. data/lib/fog/go_grid/core.rb +11 -0
  196. data/lib/fog/go_grid/models/compute/server.rb +2 -2
  197. data/lib/fog/google.rb +2 -24
  198. data/lib/fog/google/README.md +8 -5
  199. data/lib/fog/google/compute.rb +10 -3
  200. data/lib/fog/google/core.rb +24 -0
  201. data/lib/fog/google/models/compute/flavors.rb +1 -1
  202. data/lib/fog/google/models/compute/images.rb +2 -0
  203. data/lib/fog/google/models/compute/servers.rb +1 -1
  204. data/lib/fog/google/models/compute/zones.rb +1 -1
  205. data/lib/fog/google/requests/compute/attach_disk.rb +29 -0
  206. data/lib/fog/google/requests/compute/delete_address.rb +31 -0
  207. data/lib/fog/google/requests/compute/delete_snapshot.rb +35 -0
  208. data/lib/fog/google/requests/compute/detach_disk.rb +29 -0
  209. data/lib/fog/google/requests/compute/get_address.rb +31 -0
  210. data/lib/fog/google/requests/compute/insert_address.rb +30 -0
  211. data/lib/fog/google/requests/compute/insert_firewall.rb +6 -9
  212. data/lib/fog/google/requests/compute/list_addresses.rb +28 -0
  213. data/lib/fog/google/requests/compute/set_metadata.rb +4 -5
  214. data/lib/fog/google/requests/compute/set_tags.rb +33 -0
  215. data/lib/fog/google/requests/storage/get_bucket_acl.rb +2 -2
  216. data/lib/fog/google/requests/storage/put_bucket_acl.rb +39 -48
  217. data/lib/fog/google/requests/storage/put_object_acl.rb +55 -0
  218. data/lib/fog/google/storage.rb +2 -1
  219. data/lib/fog/hp.rb +9 -352
  220. data/lib/fog/hp/block_storage.rb +1 -1
  221. data/lib/fog/hp/block_storage_v2.rb +1 -1
  222. data/lib/fog/hp/cdn.rb +1 -1
  223. data/lib/fog/hp/compute.rb +1 -1
  224. data/lib/fog/hp/compute_v2.rb +1 -1
  225. data/lib/fog/hp/core.rb +352 -0
  226. data/lib/fog/hp/dns.rb +1 -1
  227. data/lib/fog/hp/lb.rb +1 -1
  228. data/lib/fog/hp/models/compute/server.rb +2 -2
  229. data/lib/fog/hp/models/compute_v2/server.rb +2 -2
  230. data/lib/fog/hp/models/storage/directory.rb +12 -6
  231. data/lib/fog/hp/network.rb +1 -1
  232. data/lib/fog/hp/storage.rb +1 -1
  233. data/lib/fog/ibm.rb +2 -176
  234. data/lib/fog/ibm/compute.rb +1 -1
  235. data/lib/fog/ibm/core.rb +176 -0
  236. data/lib/fog/ibm/storage.rb +1 -1
  237. data/lib/fog/internet_archive.rb +1 -292
  238. data/lib/fog/internet_archive/core.rb +292 -0
  239. data/lib/fog/internet_archive/models/storage/file.rb +1 -1
  240. data/lib/fog/internet_archive/storage.rb +1 -1
  241. data/lib/fog/joyent.rb +2 -10
  242. data/lib/fog/joyent/compute.rb +1 -1
  243. data/lib/fog/joyent/core.rb +10 -0
  244. data/lib/fog/joyent/errors.rb +1 -0
  245. data/lib/fog/libvirt.rb +1 -11
  246. data/lib/fog/libvirt/compute.rb +1 -1
  247. data/lib/fog/libvirt/core.rb +11 -0
  248. data/lib/fog/libvirt/models/compute/README.md +1 -1
  249. data/lib/fog/libvirt/models/compute/server.rb +6 -6
  250. data/lib/fog/libvirt/models/compute/templates/volume.xml.erb +12 -0
  251. data/lib/fog/libvirt/models/compute/volume.rb +1 -0
  252. data/lib/fog/linode.rb +2 -10
  253. data/lib/fog/linode/compute.rb +1 -1
  254. data/lib/fog/linode/core.rb +10 -0
  255. data/lib/fog/linode/dns.rb +1 -1
  256. data/lib/fog/local.rb +1 -11
  257. data/lib/fog/local/core.rb +11 -0
  258. data/lib/fog/local/storage.rb +1 -1
  259. data/lib/fog/ninefold.rb +1 -12
  260. data/lib/fog/ninefold/compute.rb +1 -1
  261. data/lib/fog/ninefold/core.rb +12 -0
  262. data/lib/fog/openstack.rb +8 -249
  263. data/lib/fog/openstack/compute.rb +3 -1
  264. data/lib/fog/openstack/core.rb +249 -0
  265. data/lib/fog/openstack/docs/compute.md +681 -0
  266. data/lib/fog/openstack/docs/getting_started.md +81 -0
  267. data/lib/fog/openstack/docs/storage.md +441 -0
  268. data/lib/fog/openstack/identity.rb +1 -1
  269. data/lib/fog/openstack/image.rb +1 -1
  270. data/lib/fog/openstack/metering.rb +1 -1
  271. data/lib/fog/openstack/models/compute/server.rb +13 -5
  272. data/lib/fog/openstack/models/compute/servers.rb +13 -0
  273. data/lib/fog/openstack/models/network/network.rb +9 -11
  274. data/lib/fog/openstack/models/network/security_group.rb +32 -0
  275. data/lib/fog/openstack/models/network/security_group_rule.rb +33 -0
  276. data/lib/fog/openstack/models/network/security_group_rules.rb +33 -0
  277. data/lib/fog/openstack/models/network/security_groups.rb +34 -0
  278. data/lib/fog/openstack/models/storage/directories.rb +1 -0
  279. data/lib/fog/openstack/network.rb +19 -1
  280. data/lib/fog/openstack/orchestration.rb +1 -1
  281. data/lib/fog/openstack/requests/compute/add_security_group.rb +24 -0
  282. data/lib/fog/openstack/requests/compute/create_flavor.rb +1 -1
  283. data/lib/fog/openstack/requests/compute/create_server.rb +3 -3
  284. data/lib/fog/openstack/requests/compute/remove_security_group.rb +24 -0
  285. data/lib/fog/openstack/requests/image/update_image_members.rb +2 -2
  286. data/lib/fog/openstack/requests/network/create_security_group.rb +94 -0
  287. data/lib/fog/openstack/requests/network/create_security_group_rule.rb +79 -0
  288. data/lib/fog/openstack/requests/network/delete_security_group.rb +32 -0
  289. data/lib/fog/openstack/requests/network/delete_security_group_rule.rb +36 -0
  290. data/lib/fog/openstack/requests/network/get_security_group.rb +52 -0
  291. data/lib/fog/openstack/requests/network/get_security_group_rule.rb +47 -0
  292. data/lib/fog/openstack/requests/network/list_networks.rb +0 -1
  293. data/lib/fog/openstack/requests/network/list_security_group_rules.rb +52 -0
  294. data/lib/fog/openstack/requests/network/list_security_groups.rb +57 -0
  295. data/lib/fog/openstack/storage.rb +2 -2
  296. data/lib/fog/openstack/volume.rb +1 -1
  297. data/lib/fog/openvz.rb +1 -9
  298. data/lib/fog/openvz/compute.rb +1 -1
  299. data/lib/fog/openvz/core.rb +9 -0
  300. data/lib/fog/ovirt.rb +1 -17
  301. data/lib/fog/ovirt/compute.rb +2 -0
  302. data/lib/fog/ovirt/core.rb +17 -0
  303. data/lib/fog/rackspace.rb +12 -145
  304. data/lib/fog/rackspace/auto_scale.rb +1 -1
  305. data/lib/fog/rackspace/block_storage.rb +5 -1
  306. data/lib/fog/rackspace/cdn.rb +22 -16
  307. data/lib/fog/rackspace/compute.rb +1 -1
  308. data/lib/fog/rackspace/compute_v2.rb +6 -2
  309. data/lib/fog/rackspace/core.rb +145 -0
  310. data/lib/fog/rackspace/databases.rb +5 -1
  311. data/lib/fog/rackspace/dns.rb +1 -1
  312. data/lib/fog/rackspace/docs/compute_v2.md +2 -10
  313. data/lib/fog/rackspace/errors.rb +1 -1
  314. data/lib/fog/rackspace/examples/storage/upload_file.rb +1 -1
  315. data/lib/fog/rackspace/identity.rb +26 -16
  316. data/lib/fog/rackspace/load_balancers.rb +7 -1
  317. data/lib/fog/rackspace/mock_data.rb +17 -0
  318. data/lib/fog/rackspace/models/compute/server.rb +2 -2
  319. data/lib/fog/rackspace/models/compute_v2/key_pair.rb +1 -1
  320. data/lib/fog/rackspace/models/compute_v2/server.rb +42 -5
  321. data/lib/fog/rackspace/models/monitoring/entities.rb +1 -1
  322. data/lib/fog/rackspace/models/queues/claim.rb +9 -1
  323. data/lib/fog/rackspace/models/storage/directory.rb +5 -2
  324. data/lib/fog/rackspace/models/storage/file.rb +14 -0
  325. data/lib/fog/rackspace/monitoring.rb +11 -2
  326. data/lib/fog/rackspace/queues.rb +318 -34
  327. data/lib/fog/rackspace/requests/compute_v2/create_keypair.rb +16 -5
  328. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +7 -1
  329. data/lib/fog/rackspace/requests/compute_v2/delete_keypair.rb +1 -1
  330. data/lib/fog/rackspace/requests/identity/create_token.rb +192 -0
  331. data/lib/fog/rackspace/requests/identity/list_tenants.rb +23 -0
  332. data/lib/fog/rackspace/requests/monitoring/get_agent.rb +45 -0
  333. data/lib/fog/rackspace/requests/monitoring/get_cpus_info.rb +63 -0
  334. data/lib/fog/rackspace/requests/monitoring/get_disks_info.rb +56 -0
  335. data/lib/fog/rackspace/requests/monitoring/get_filesystems_info.rb +64 -0
  336. data/lib/fog/rackspace/requests/monitoring/get_logged_in_user_info.rb +58 -0
  337. data/lib/fog/rackspace/requests/monitoring/get_memory_info.rb +59 -0
  338. data/lib/fog/rackspace/requests/monitoring/get_network_interfaces_info.rb +91 -0
  339. data/lib/fog/rackspace/requests/monitoring/get_processes_info.rb +72 -0
  340. data/lib/fog/rackspace/requests/monitoring/get_system_info.rb +53 -0
  341. data/lib/fog/rackspace/requests/monitoring/list_agents.rb +62 -0
  342. data/lib/fog/rackspace/requests/queues/create_claim.rb +37 -0
  343. data/lib/fog/rackspace/requests/queues/create_message.rb +23 -0
  344. data/lib/fog/rackspace/requests/queues/create_queue.rb +15 -1
  345. data/lib/fog/rackspace/requests/queues/delete_claim.rb +18 -0
  346. data/lib/fog/rackspace/requests/queues/delete_message.rb +34 -0
  347. data/lib/fog/rackspace/requests/queues/delete_queue.rb +12 -0
  348. data/lib/fog/rackspace/requests/queues/get_claim.rb +15 -0
  349. data/lib/fog/rackspace/requests/queues/get_message.rb +17 -0
  350. data/lib/fog/rackspace/requests/queues/get_queue.rb +14 -1
  351. data/lib/fog/rackspace/requests/queues/get_queue_stats.rb +36 -0
  352. data/lib/fog/rackspace/requests/queues/list_messages.rb +33 -0
  353. data/lib/fog/rackspace/requests/queues/list_queues.rb +35 -1
  354. data/lib/fog/rackspace/requests/queues/update_claim.rb +17 -0
  355. data/lib/fog/rackspace/requests/storage/delete_container.rb +15 -0
  356. data/lib/fog/rackspace/requests/storage/delete_multiple_objects.rb +57 -0
  357. data/lib/fog/rackspace/requests/storage/delete_object.rb +14 -0
  358. data/lib/fog/rackspace/requests/storage/delete_static_large_object.rb +33 -0
  359. data/lib/fog/rackspace/requests/storage/extract_archive.rb +39 -0
  360. data/lib/fog/rackspace/requests/storage/get_container.rb +25 -0
  361. data/lib/fog/rackspace/requests/storage/get_containers.rb +17 -0
  362. data/lib/fog/rackspace/requests/storage/get_object.rb +26 -0
  363. data/lib/fog/rackspace/requests/storage/get_object_http_url.rb +9 -2
  364. data/lib/fog/rackspace/requests/storage/get_object_https_url.rb +8 -1
  365. data/lib/fog/rackspace/requests/storage/head_container.rb +12 -0
  366. data/lib/fog/rackspace/requests/storage/head_containers.rb +19 -0
  367. data/lib/fog/rackspace/requests/storage/head_object.rb +26 -0
  368. data/lib/fog/rackspace/requests/storage/post_set_meta_temp_url_key.rb +10 -0
  369. data/lib/fog/rackspace/requests/storage/put_container.rb +16 -0
  370. data/lib/fog/rackspace/requests/storage/put_dynamic_obj_manifest.rb +23 -0
  371. data/lib/fog/rackspace/requests/storage/put_object.rb +39 -0
  372. data/lib/fog/rackspace/requests/storage/put_object_manifest.rb +9 -1
  373. data/lib/fog/rackspace/requests/storage/put_static_obj_manifest.rb +48 -0
  374. data/lib/fog/rackspace/storage.rb +320 -67
  375. data/lib/fog/rage4.rb +2 -0
  376. data/lib/fog/rage4/core.rb +11 -0
  377. data/lib/fog/rage4/dns.rb +74 -0
  378. data/lib/fog/rage4/models/dns/record.rb +77 -0
  379. data/lib/fog/rage4/models/dns/records.rb +42 -0
  380. data/lib/fog/rage4/models/dns/zone.rb +46 -0
  381. data/lib/fog/rage4/models/dns/zones.rb +34 -0
  382. data/lib/fog/rage4/requests/dns/create_domain.rb +33 -0
  383. data/lib/fog/rage4/requests/dns/create_domain_vanity.rb +34 -0
  384. data/lib/fog/rage4/requests/dns/create_record.rb +65 -0
  385. data/lib/fog/rage4/requests/dns/create_reverse_domain_4.rb +32 -0
  386. data/lib/fog/rage4/requests/dns/delete_domain.rb +28 -0
  387. data/lib/fog/rage4/requests/dns/delete_record.rb +28 -0
  388. data/lib/fog/rage4/requests/dns/get_domain.rb +30 -0
  389. data/lib/fog/rage4/requests/dns/get_domain_by_name.rb +30 -0
  390. data/lib/fog/rage4/requests/dns/list_domains.rb +41 -0
  391. data/lib/fog/rage4/requests/dns/list_geo_regions.rb +27 -0
  392. data/lib/fog/rage4/requests/dns/list_record_types.rb +26 -0
  393. data/lib/fog/rage4/requests/dns/list_records.rb +31 -0
  394. data/lib/fog/rage4/requests/dns/set_record_failover.rb +29 -0
  395. data/lib/fog/rage4/requests/dns/show_current_usage.rb +25 -0
  396. data/lib/fog/rage4/requests/dns/show_global_usage.rb +25 -0
  397. data/lib/fog/rage4/requests/dns/update_domain.rb +43 -0
  398. data/lib/fog/rage4/requests/dns/update_record.rb +64 -0
  399. data/lib/fog/riakcs.rb +2 -122
  400. data/lib/fog/riakcs/core.rb +122 -0
  401. data/lib/fog/riakcs/provisioning.rb +1 -1
  402. data/lib/fog/riakcs/usage.rb +1 -1
  403. data/lib/fog/serverlove.rb +1 -10
  404. data/lib/fog/serverlove/compute.rb +2 -0
  405. data/lib/fog/serverlove/core.rb +10 -0
  406. data/lib/fog/storm_on_demand.rb +9 -20
  407. data/lib/fog/storm_on_demand/account.rb +1 -1
  408. data/lib/fog/storm_on_demand/billing.rb +1 -1
  409. data/lib/fog/storm_on_demand/compute.rb +1 -1
  410. data/lib/fog/storm_on_demand/core.rb +20 -0
  411. data/lib/fog/storm_on_demand/dns.rb +1 -1
  412. data/lib/fog/storm_on_demand/monitoring.rb +1 -1
  413. data/lib/fog/storm_on_demand/network.rb +1 -1
  414. data/lib/fog/storm_on_demand/shared.rb +0 -1
  415. data/lib/fog/storm_on_demand/storage.rb +1 -1
  416. data/lib/fog/storm_on_demand/support.rb +1 -1
  417. data/lib/fog/storm_on_demand/vpn.rb +1 -1
  418. data/lib/fog/vcloud.rb +1 -11
  419. data/lib/fog/vcloud/compute.rb +1 -1
  420. data/lib/fog/vcloud/core.rb +11 -0
  421. data/lib/fog/vcloud_director.rb +1 -67
  422. data/lib/fog/vcloud_director/compute.rb +1 -1
  423. data/lib/fog/vcloud_director/core.rb +67 -0
  424. data/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb +1 -1
  425. data/lib/fog/version.rb +1 -1
  426. data/lib/fog/vmfusion.rb +1 -11
  427. data/lib/fog/vmfusion/compute.rb +1 -1
  428. data/lib/fog/vmfusion/core.rb +11 -0
  429. data/lib/fog/vmfusion/models/compute/server.rb +5 -5
  430. data/lib/fog/voxel.rb +1 -16
  431. data/lib/fog/voxel/compute.rb +1 -1
  432. data/lib/fog/voxel/core.rb +16 -0
  433. data/lib/fog/vsphere.rb +1 -17
  434. data/lib/fog/vsphere/compute.rb +1 -0
  435. data/lib/fog/vsphere/core.rb +17 -0
  436. data/lib/fog/xenserver.rb +1 -83
  437. data/lib/fog/xenserver/compute.rb +1 -1
  438. data/lib/fog/xenserver/core.rb +83 -0
  439. data/lib/fog/xenserver/models/compute/storage_manager.rb +1 -1
  440. data/lib/fog/zerigo.rb +1 -11
  441. data/lib/fog/zerigo/core.rb +11 -0
  442. data/lib/fog/zerigo/dns.rb +1 -1
  443. data/lib/tasks/changelog_task.rb +2 -0
  444. data/tests/aws/models/compute/network_acl_tests.rb +109 -0
  445. data/tests/aws/models/compute/network_acls_tests.rb +7 -0
  446. data/tests/aws/models/elasticache/subnet_groups_tests.rb +44 -0
  447. data/tests/aws/requests/compute/network_acl_tests.rb +86 -0
  448. data/tests/aws/requests/compute/route_tests.rb +64 -3
  449. data/tests/aws/requests/compute/subnet_tests.rb +18 -11
  450. data/tests/aws/requests/elasticache/helper.rb +19 -0
  451. data/tests/aws/requests/elasticache/subnet_group_tests.rb +52 -0
  452. data/tests/aws/requests/iam/server_certificate_tests.rb +3 -0
  453. data/tests/aws/requests/rds/subnet_groups_tests.rb +1 -1
  454. data/tests/aws/requests/storage/multipart_upload_tests.rb +3 -14
  455. data/tests/brightbox/compute/schema.rb +118 -2
  456. data/tests/brightbox/helper.rb +1 -0
  457. data/tests/brightbox/models/compute/cloud_ip_tests.rb +32 -0
  458. data/tests/brightbox/models/compute/database_server_tests.rb +66 -0
  459. data/tests/brightbox/models/compute/database_snapshot_tests.rb +26 -0
  460. data/tests/brightbox/models/compute/database_type_tests.rb +27 -0
  461. data/tests/brightbox/requests/compute/database_server_tests.rb +54 -0
  462. data/tests/brightbox/requests/compute/database_snapsnot_tests.rb +47 -0
  463. data/tests/brightbox/requests/compute/database_type_tests.rb +17 -0
  464. data/tests/compute/models/server_tests.rb +20 -2
  465. data/tests/digitalocean/helper.rb +9 -4
  466. data/tests/digitalocean/models/compute/server_tests.rb +1 -0
  467. data/tests/digitalocean/models/compute/servers_tests.rb +19 -4
  468. data/tests/digitalocean/requests/compute/create_server_tests.rb +13 -6
  469. data/tests/digitalocean/requests/compute/list_servers_tests.rb +2 -1
  470. data/tests/dns/helper.rb +3 -0
  471. data/tests/dns/models/record_tests.rb +1 -1
  472. data/tests/dns/models/records_tests.rb +1 -1
  473. data/tests/dns/models/zone_tests.rb +1 -1
  474. data/tests/dns/models/zones_tests.rb +1 -1
  475. data/tests/helper.rb +7 -1
  476. data/tests/helpers/compute/server_helper.rb +1 -0
  477. data/tests/helpers/compute/servers_helper.rb +1 -0
  478. data/tests/openstack/models/network/security_group_rule_tests.rb +27 -0
  479. data/tests/openstack/models/network/security_group_rules_tests.rb +25 -0
  480. data/tests/openstack/models/network/security_group_tests.rb +17 -0
  481. data/tests/openstack/models/network/security_groups_tests.rb +16 -0
  482. data/tests/openstack/requests/compute/helper.rb +5 -0
  483. data/tests/openstack/requests/compute/server_tests.rb +11 -0
  484. data/tests/openstack/requests/network/security_group_rule_tests.rb +58 -0
  485. data/tests/openstack/requests/network/security_group_tests.rb +43 -0
  486. data/tests/rackspace/identity_tests.rb +0 -4
  487. data/tests/rackspace/models/compute_v2/server_tests.rb +36 -8
  488. data/tests/rackspace/models/queues/claim_tests.rb +1 -3
  489. data/tests/rackspace/models/queues/claims_tests.rb +1 -3
  490. data/tests/rackspace/models/queues/message_tests.rb +1 -3
  491. data/tests/rackspace/models/queues/messages_tests.rb +1 -3
  492. data/tests/rackspace/models/queues/queue_tests.rb +1 -3
  493. data/tests/rackspace/models/queues/queues_tests.rb +1 -3
  494. data/tests/rackspace/models/storage/account_tests.rb +0 -2
  495. data/tests/rackspace/models/storage/directories_tests.rb +0 -3
  496. data/tests/rackspace/models/storage/directory_tests.rb +2 -5
  497. data/tests/rackspace/models/storage/file_tests.rb +49 -2
  498. data/tests/rackspace/models/storage/files_tests.rb +1 -4
  499. data/tests/rackspace/queues_tests.rb +0 -13
  500. data/tests/rackspace/requests/identity/token_tests.rb +1 -3
  501. data/tests/rackspace/requests/monitoring/agent_tests.rb +42 -0
  502. data/tests/rackspace/requests/queues/claim_tests.rb +1 -3
  503. data/tests/rackspace/requests/queues/messages_tests.rb +0 -6
  504. data/tests/rackspace/requests/queues/queues_tests.rb +0 -5
  505. data/tests/rackspace/requests/storage/account_tests.rb +0 -1
  506. data/tests/rackspace/requests/storage/container_tests.rb +7 -11
  507. data/tests/rackspace/requests/storage/large_object_tests.rb +33 -43
  508. data/tests/rackspace/requests/storage/object_tests.rb +2 -27
  509. data/tests/rackspace/storage_tests.rb +9 -15
  510. data/tests/rage4/requests/dns/dns_tests.rb +241 -0
  511. data/tests/vcloud/requests/compute/disk_configure_tests.rb +0 -8
  512. metadata +190 -33
  513. data/lib/fog/brightbox/requests/compute/destroy_user_collaboration.rb +0 -21
@@ -1,6 +1,7 @@
1
1
  module Fog
2
2
  module Rackspace
3
3
  class Queues
4
+
4
5
  class Real
5
6
 
6
7
  # This operation posts the specified message or messages.
@@ -20,7 +21,23 @@ module Fog
20
21
  :path => "queues/#{queue_name}/claims/#{claim_id}"
21
22
  )
22
23
  end
24
+
23
25
  end
26
+
27
+ class Mock
28
+ def update_claim(queue_name, claim_id, ttl)
29
+ queue = mock_queue!(queue_name)
30
+ claim = queue.claim!(claim_id)
31
+
32
+ claim.touch!
33
+ claim.ttl = ttl
34
+
35
+ response = Excon::Response.new
36
+ response.status = 204
37
+ response
38
+ end
39
+ end
40
+
24
41
  end
25
42
  end
26
43
  end
@@ -1,6 +1,7 @@
1
1
  module Fog
2
2
  module Storage
3
3
  class Rackspace
4
+
4
5
  class Real
5
6
 
6
7
  # Delete an existing container
@@ -20,6 +21,20 @@ module Fog
20
21
  end
21
22
 
22
23
  end
24
+
25
+ class Mock
26
+ def delete_container(name)
27
+ c = mock_container! name
28
+
29
+ raise Excon::Errors::Conflict.new 'Conflict' unless c.empty?
30
+ remove_container name
31
+
32
+ response = Excon::Response.new
33
+ response.status = 204
34
+ response
35
+ end
36
+ end
37
+
23
38
  end
24
39
  end
25
40
  end
@@ -1,6 +1,7 @@
1
1
  module Fog
2
2
  module Storage
3
3
  class Rackspace
4
+
4
5
  class Real
5
6
 
6
7
  # Deletes multiple objects or containers with a single request.
@@ -70,6 +71,62 @@ module Fog
70
71
  end
71
72
 
72
73
  end
74
+
75
+ class Mock
76
+ def delete_multiple_objects(container, object_names, options = {})
77
+ results = {
78
+ "Number Not Found" => 0,
79
+ "Response Status" => "200 OK",
80
+ "Response Body" => "",
81
+ "Errors" => [],
82
+ "Number Deleted" => 0
83
+ }
84
+
85
+ object_names.each do |name|
86
+ if container
87
+ cname, oname = container, name
88
+ else
89
+ cname, oname = name.split('/', 2)
90
+ end
91
+
92
+ c = mock_container cname
93
+ if c.nil?
94
+ # Container not found
95
+ results["Number Not Found"] += 1
96
+ next
97
+ end
98
+
99
+ if oname.nil?
100
+ # No object name specified; delete the container if it's nonempty
101
+ unless c.empty?
102
+ results["Response Status"] = "400 Bad Request"
103
+ results["Errors"] << [cname, "409 Conflict"]
104
+ next
105
+ end
106
+
107
+ remove_container cname
108
+ results["Number Deleted"] += 1
109
+ next
110
+ end
111
+
112
+ o = c.mock_object oname
113
+ if o.nil?
114
+ # Object not found.
115
+ results["Number Not Found"] += 1
116
+ next
117
+ end
118
+
119
+ c.remove_object oname
120
+ results["Number Deleted"] += 1
121
+ end
122
+
123
+ response = Excon::Response.new
124
+ response.status = 200
125
+ response.body = results
126
+ response
127
+ end
128
+ end
129
+
73
130
  end
74
131
  end
75
132
  end
@@ -1,6 +1,7 @@
1
1
  module Fog
2
2
  module Storage
3
3
  class Rackspace
4
+
4
5
  class Real
5
6
 
6
7
  # Delete an existing object
@@ -21,6 +22,19 @@ module Fog
21
22
  end
22
23
 
23
24
  end
25
+
26
+ class Mock
27
+ def delete_object(container, object)
28
+ c = mock_container! container
29
+ c.mock_object! object
30
+ c.remove_object object
31
+
32
+ response = Excon::Response.new
33
+ response.status = 204
34
+ response
35
+ end
36
+ end
37
+
24
38
  end
25
39
  end
26
40
  end
@@ -1,6 +1,7 @@
1
1
  module Fog
2
2
  module Storage
3
3
  class Rackspace
4
+
4
5
  class Real
5
6
 
6
7
  # Delete a static large object.
@@ -44,6 +45,38 @@ module Fog
44
45
  end
45
46
 
46
47
  end
48
+
49
+ class Mock
50
+ def delete_static_large_object(container, object, options = {})
51
+ c = mock_container container
52
+ return not_found(container) unless c
53
+
54
+ o = c.mock_object object
55
+ return not_found(object) unless o
56
+
57
+ # What happens if o isn't a static large object?
58
+ raise Fog::Storage::Rackspace::BadRequest.new unless o.static_manifest?
59
+
60
+ segments = Fog::JSON.decode(o.body)
61
+ paths = segments.map { |s| s['path'] }
62
+ paths << "#{container}/#{object}"
63
+ delete_multiple_objects(nil, paths)
64
+ end
65
+
66
+ def not_found(path)
67
+ response = Excon::Response.new
68
+ response.status = 200
69
+ response.body = {
70
+ "Number Not Found" => 1,
71
+ "Response Status" => "200 OK",
72
+ "Response Body" => "",
73
+ "Errors" => [[path, "404 Not Found"]],
74
+ "Number Deleted" => 0
75
+ }
76
+ response
77
+ end
78
+ end
79
+
47
80
  end
48
81
  end
49
82
  end
@@ -0,0 +1,39 @@
1
+ require 'fog'
2
+ module Fog
3
+ module Storage
4
+ class Rackspace
5
+ class Real
6
+
7
+ # Extract Archive
8
+ #
9
+ # @see http://docs.rackspace.com/files/api/v1/cf-devguide/content/Extract_Archive-d1e2338.html
10
+ #
11
+ # ==== Parameters
12
+ # * container<~String> - Name for container, should be < 256 bytes and must not contain '/'
13
+ # * data<~String|File> - file to upload
14
+ # * archive_format<~String> - "tar", "tar.gz", or "tar.bz2"
15
+
16
+ # @raise [Fog::Storage::Rackspace::NotFound] - HTTP 404
17
+ # @raise [Fog::Storage::Rackspace::BadRequest] - HTTP 400
18
+ # @raise [Fog::Storage::Rackspace::InternalServerError] - HTTP 500
19
+ # @raise [Fog::Storage::Rackspace::ServiceError]
20
+ def extract_archive(container, data, archive_format)
21
+ data = Fog::Storage.parse_data(data)
22
+ headers = data[:headers]
23
+ headers["Content-Type"] = ""
24
+ params = { :body => data[:body], :query => {"extract-archive" => archive_format} }
25
+
26
+ params.merge!(
27
+ :expects => 200,
28
+ :idempotent => true,
29
+ :headers => headers,
30
+ :method => 'PUT',
31
+ :path => "#{Fog::Rackspace.escape(container.to_s)}"
32
+ )
33
+
34
+ request(params)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,6 +1,7 @@
1
1
  module Fog
2
2
  module Storage
3
3
  class Rackspace
4
+
4
5
  class Real
5
6
 
6
7
  # Get details for container and total bytes stored
@@ -43,6 +44,30 @@ module Fog
43
44
  end
44
45
 
45
46
  end
47
+
48
+ class Mock
49
+ def get_container(container, options = {})
50
+ c = mock_container! container
51
+
52
+ results = []
53
+ c.objects.each do |key, mock_file|
54
+ results << {
55
+ "hash" => mock_file.hash,
56
+ "last_modified" => mock_file.last_modified.strftime('%Y-%m-%dT%H:%M:%S.%L'),
57
+ "bytes" => mock_file.bytes_used,
58
+ "name" => key,
59
+ "content_type" => mock_file.content_type
60
+ }
61
+ end
62
+
63
+ response = Excon::Response.new
64
+ response.status = 200
65
+ response.headers = c.to_headers
66
+ response.body = results
67
+ response
68
+ end
69
+ end
70
+
46
71
  end
47
72
  end
48
73
  end
@@ -32,6 +32,23 @@ module Fog
32
32
  end
33
33
 
34
34
  end
35
+
36
+ class Mock
37
+ def get_containers(options = {})
38
+ results = data.map do |name, container|
39
+ {
40
+ "name" => name,
41
+ "count" => container.objects.size,
42
+ "bytes" => container.bytes_used
43
+ }
44
+ end
45
+ response = Excon::Response.new
46
+ response.status = 200
47
+ response.body = results
48
+ response
49
+ end
50
+ end
51
+
35
52
  end
36
53
  end
37
54
  end
@@ -1,6 +1,7 @@
1
1
  module Fog
2
2
  module Storage
3
3
  class Rackspace
4
+
4
5
  class Real
5
6
 
6
7
  # Get details for object
@@ -27,6 +28,31 @@ module Fog
27
28
  end
28
29
 
29
30
  end
31
+
32
+ class Mock
33
+ def get_object(container, object, &block)
34
+ c = mock_container! container
35
+ o = c.mock_object! object
36
+
37
+ body, size = "", 0
38
+
39
+ o.each_part do |part|
40
+ body << part.body
41
+ size += part.bytes_used
42
+ end
43
+
44
+ if block_given?
45
+ # Just send it all in one chunk.
46
+ block.call(body, 0, size)
47
+ end
48
+
49
+ response = Excon::Response.new
50
+ response.body = body
51
+ response.headers = o.to_headers
52
+ response
53
+ end
54
+ end
55
+
30
56
  end
31
57
  end
32
58
  end
@@ -2,8 +2,7 @@ module Fog
2
2
  module Storage
3
3
  class Rackspace
4
4
 
5
- class Real
6
-
5
+ module Common
7
6
  # Get an expiring object http url from Cloud Files
8
7
  #
9
8
  # ==== Parameters
@@ -25,6 +24,14 @@ module Fog
25
24
  end
26
25
  end
27
26
 
27
+ class Real
28
+ include Common
29
+ end
30
+
31
+ class Mock
32
+ include Common
33
+ end
34
+
28
35
  end
29
36
  end
30
37
  end
@@ -2,7 +2,7 @@ module Fog
2
2
  module Storage
3
3
  class Rackspace
4
4
 
5
- class Real
5
+ module Common
6
6
 
7
7
  # Get an expiring object https url from Cloud Files
8
8
  #
@@ -47,7 +47,14 @@ module Fog
47
47
  h.size == 1 ? "0#{h}" : h
48
48
  }.join
49
49
  end
50
+ end
50
51
 
52
+ class Mock
53
+ include Common
54
+ end
55
+
56
+ class Real
57
+ include Common
51
58
  end
52
59
 
53
60
  end
@@ -27,6 +27,18 @@ module Fog
27
27
  end
28
28
 
29
29
  end
30
+
31
+ class Mock
32
+ def head_container(container)
33
+ c = mock_container! container
34
+
35
+ response = Excon::Response.new
36
+ response.status = 204
37
+ response.headers = c.to_headers
38
+ response
39
+ end
40
+ end
41
+
30
42
  end
31
43
  end
32
44
  end
@@ -1,6 +1,7 @@
1
1
  module Fog
2
2
  module Storage
3
3
  class Rackspace
4
+
4
5
  class Real
5
6
 
6
7
  # List number of containers and total bytes stored
@@ -24,6 +25,24 @@ module Fog
24
25
  end
25
26
 
26
27
  end
28
+
29
+ class Mock
30
+ def head_containers
31
+ bytes_used = data.values.map { |c| c.bytes_used }.inject(0) { |a, b| a + b }
32
+ container_count = data.size
33
+ object_count = data.values.map { |c| c.objects.size }.inject(0) { |a, b| a + b }
34
+
35
+ response = Excon::Response.new
36
+ response.status = 204
37
+ response.headers = {
38
+ 'X-Account-Bytes-Used' => bytes_used,
39
+ 'X-Account-Container-Count' => container_count,
40
+ 'X-Account-Object-Count' => object_count
41
+ }.merge(account_meta)
42
+ response
43
+ end
44
+ end
45
+
27
46
  end
28
47
  end
29
48
  end