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
@@ -11,7 +11,7 @@ module Fog
11
11
 
12
12
  def end_element(name)
13
13
  case name
14
- when 'Arn', 'Path', 'ServerCertificateId', 'ServerCertificateName'
14
+ when 'Arn', 'Path', 'ServerCertificateId', 'ServerCertificateName', 'CertificateBody', 'CertificateChain'
15
15
  @response['Certificate'][name] = value
16
16
  when 'UploadDate'
17
17
  @response['Certificate'][name] = Time.parse(value)
@@ -100,6 +100,12 @@ module Fog
100
100
  @vpc_security_group = {}
101
101
  when 'VpcSecurityGroupId'
102
102
  @vpc_security_group[name] = value
103
+ when 'Iops'
104
+ if @in_pending_modified_values
105
+ @pending_modified_values[name] = value.to_i
106
+ else
107
+ @db_instance[name] = value.to_i
108
+ end
103
109
  when 'AllocatedStorage'
104
110
  if @in_pending_modified_values
105
111
  @pending_modified_values[name] = value.to_i
@@ -27,6 +27,7 @@ module Fog
27
27
  when 'Engine' then @db_snapshot['Engine'] = value
28
28
  when 'EngineVersion' then @db_snapshot['EngineVersion'] = value
29
29
  when 'InstanceCreateTime' then @db_snapshot['InstanceCreateTime'] = Time.parse value
30
+ when 'Iops' then @db_snapshot['Iops'] = value
30
31
  when 'MasterUsername' then @db_snapshot['MasterUsername'] = value
31
32
  when 'Port' then @db_snapshot['Port'] = value.to_i
32
33
  when 'SnapshotCreateTime' then @db_snapshot['SnapshotCreateTime'] = Time.parse value
data/lib/fog/aws/rds.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'fog/aws'
1
+ require 'fog/aws/core'
2
2
 
3
3
  module Fog
4
4
  module AWS
@@ -1,4 +1,4 @@
1
- require 'fog/aws'
1
+ require 'fog/aws/core'
2
2
 
3
3
  module Fog
4
4
  module AWS
@@ -0,0 +1,105 @@
1
+ module Fog
2
+ module Compute
3
+ class AWS
4
+ class Real
5
+ require 'fog/aws/parsers/compute/create_network_acl'
6
+
7
+ # Creates a network ACL
8
+ #
9
+ # ==== Parameters
10
+ # * vpcId<~String> - The ID of the VPC to create this network ACL under
11
+ #
12
+ # === Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * 'requestId'<~String> - Id of request
16
+ # * 'networkAcl'<~Array>: - The network ACL
17
+ # * 'networkAclId'<~String> - The ID of the network ACL
18
+ # * 'vpcId'<~String> - The ID of the VPC for the network ACL
19
+ # * 'default'<~Boolean> - Indicates whether this is the default network ACL for the VPC
20
+ # * 'entrySet'<~Array>: - A list of entries (rules) in the network ACL
21
+ # * 'ruleNumber'<~Integer> - The rule number for the entry. ACL entries are processed in ascending order by rule number
22
+ # * 'protocol'<~Integer> - The protocol. A value of -1 means all protocols
23
+ # * 'ruleAction'<~String> - Indicates whether to allow or deny the traffic that matches the rule
24
+ # * 'egress'<~Boolean> - Indicates whether the rule is an egress rule (applied to traffic leaving the subnet)
25
+ # * 'cidrBlock'<~String> - The network range to allow or deny, in CIDR notation
26
+ # * 'icmpTypeCode'<~Hash> - ICMP protocol: The ICMP type and code
27
+ # * 'code'<~Integer> - The ICMP code. A value of -1 means all codes for the specified ICMP type
28
+ # * 'type'<~Integer> - The ICMP type. A value of -1 means all types
29
+ # * 'portRange'<~Hash> - TCP or UDP protocols: The range of ports the rule applies to
30
+ # * 'from'<~Integer> - The first port in the range
31
+ # * 'to'<~Integer> - The last port in the range
32
+ # * 'associationSet'<~Array>: - A list of associations between the network ACL and subnets
33
+ # * 'networkAclAssociationId'<~String> - The ID of the association
34
+ # * 'networkAclId'<~String> - The ID of the network ACL
35
+ # * 'subnetId'<~String> - The ID of the subnet
36
+ # * 'tagSet'<~Array>: - Tags assigned to the resource.
37
+ # * 'key'<~String> - Tag's key
38
+ # * 'value'<~String> - Tag's value
39
+ #
40
+ # {Amazon API Reference}[http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateNetworkAcl.html]
41
+ def create_network_acl(vpcId, options = {})
42
+ request({
43
+ 'Action' => 'CreateNetworkAcl',
44
+ 'VpcId' => vpcId,
45
+ :parser => Fog::Parsers::Compute::AWS::CreateNetworkAcl.new
46
+ }.merge!(options))
47
+ end
48
+ end
49
+
50
+ class Mock
51
+ def create_network_acl(vpcId, options = {})
52
+ response = Excon::Response.new
53
+ if vpcId
54
+ id = Fog::AWS::Mock.network_acl_id
55
+
56
+ unless self.data[:vpcs].detect { |s| s['vpcId'] == vpcId }
57
+ raise Fog::Compute::AWS::Error.new("Unknown VPC '#{vpcId}' specified")
58
+ end
59
+
60
+ data = {
61
+ 'networkAclId' => id,
62
+ 'vpcId' => vpcId,
63
+ 'default' => false,
64
+ 'entrySet' => [
65
+ {
66
+ 'icmpTypeCode' => {},
67
+ 'portRange' => {},
68
+ 'ruleNumber' => 32767,
69
+ 'protocol' => -1,
70
+ 'ruleAction' => "deny",
71
+ 'egress' => true,
72
+ 'cidrBlock' => "0.0.0.0/0",
73
+ },
74
+ {
75
+ 'icmpTypeCode' => {},
76
+ 'portRange' => {},
77
+ 'ruleNumber' => 32767,
78
+ 'protocol' => -1,
79
+ 'ruleAction' => "deny",
80
+ 'egress' => false,
81
+ 'cidrBlock' => "0.0.0.0/0",
82
+ },
83
+ ],
84
+ 'associationSet' => [],
85
+ 'tagSet' => {},
86
+ }
87
+
88
+ self.data[:network_acls][id] = data
89
+ response.body = {
90
+ 'requestId' => Fog::AWS::Mock.request_id,
91
+ 'networkAcl' => data
92
+ }
93
+ else
94
+ response.status = 400
95
+ response.body = {
96
+ 'Code' => 'InvalidParameterValue',
97
+ 'Message' => "Invalid value '' for subnetId"
98
+ }
99
+ end
100
+ response
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,80 @@
1
+ module Fog
2
+ module Compute
3
+ class AWS
4
+ class Real
5
+ require 'fog/aws/parsers/compute/basic'
6
+
7
+ # Creates a Network ACL entry
8
+ #
9
+ # ==== Parameters
10
+ # * network_acl_id<~String> - The ID of the ACL to add this entry to
11
+ # * rule_number<~Integer> - The rule number for the entry, between 100 and 32766
12
+ # * protocol<~Integer> - The IP protocol to which the rule applies. You can use -1 to mean all protocols.
13
+ # * rule_action<~String> - Allows or denies traffic that matches the rule. (either allow or deny)
14
+ # * cidr_block<~String> - The CIDR range to allow or deny
15
+ # * egress<~Boolean> - Indicates whether this rule applies to egress traffic from the subnet (true) or ingress traffic to the subnet (false).
16
+ # * options<~Hash>:
17
+ # * 'Icmp.Code' - ICMP code, required if protocol is 1
18
+ # * 'Icmp.Type' - ICMP type, required if protocol is 1
19
+ # * 'PortRange.From' - The first port in the range, required if protocol is 6 (TCP) or 17 (UDP)
20
+ # * 'PortRange.To' - The last port in the range, required if protocol is 6 (TCP) or 17 (UDP)
21
+ #
22
+ # === Returns
23
+ # * response<~Excon::Response>:
24
+ # * body<~Hash>:
25
+ # * 'requestId'<~String> - Id of request
26
+ # * 'return'<~Boolean> - Returns true if the request succeeds.
27
+ #
28
+ # {Amazon API Reference}[http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-CreateNetworkAclEntry.html]
29
+ def create_network_acl_entry(network_acl_id, rule_number, protocol, rule_action, cidr_block, egress, options = {})
30
+ request({
31
+ 'Action' => 'CreateNetworkAclEntry',
32
+ 'NetworkAclId' => network_acl_id,
33
+ 'RuleNumber' => rule_number,
34
+ 'Protocol' => protocol,
35
+ 'RuleAction' => rule_action,
36
+ 'Egress' => egress,
37
+ 'CidrBlock' => cidr_block,
38
+ :parser => Fog::Parsers::Compute::AWS::Basic.new
39
+ }.merge!(options))
40
+ end
41
+ end
42
+
43
+ class Mock
44
+ def create_network_acl_entry(network_acl_id, rule_number, protocol, rule_action, cidr_block, egress, options = {})
45
+ response = Excon::Response.new
46
+ if self.data[:network_acls][network_acl_id]
47
+
48
+ if self.data[:network_acls][network_acl_id]['entrySet'].detect { |r| r['ruleNumber'] == rule_number && r['egress'] == egress }
49
+ raise Fog::Compute::AWS::Error.new("Already a rule with that number")
50
+ end
51
+
52
+ data = {
53
+ 'ruleNumber' => rule_number,
54
+ 'protocol' => protocol,
55
+ 'ruleAction' => rule_action,
56
+ 'egress' => egress,
57
+ 'cidrBlock' => cidr_block,
58
+ 'icmpTypeCode' => {},
59
+ 'portRange' => {}
60
+ }
61
+ data['icmpTypeCode']['code'] = options['Icmp.Code'] if options['Icmp.Code']
62
+ data['icmpTypeCode']['type'] = options['Icmp.Type'] if options['Icmp.Type']
63
+ data['portRange']['from'] = options['PortRange.From'] if options['PortRange.From']
64
+ data['portRange']['to'] = options['PortRange.To'] if options['PortRange.To']
65
+ self.data[:network_acls][network_acl_id]['entrySet'] << data
66
+
67
+ response.status = 200
68
+ response.body = {
69
+ 'requestId' => Fog::AWS::Mock.request_id,
70
+ 'return' => true
71
+ }
72
+ response
73
+ else
74
+ raise Fog::Compute::AWS::NotFound.new("The network ACL '#{network_acl_id}' does not exist")
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -46,19 +46,29 @@ module Fog
46
46
  Excon::Response.new.tap do |response|
47
47
  if cidrBlock && vpcId
48
48
  response.status = 200
49
- self.data[:subnets].push({
50
- 'subnetId' => Fog::AWS::Mock.request_id,
49
+ data = {
50
+ 'subnetId' => Fog::AWS::Mock.subnet_id,
51
51
  'state' => 'pending',
52
52
  'vpcId' => vpcId,
53
53
  'cidrBlock' => cidrBlock,
54
54
  'availableIpAddressCount' => "255",
55
55
  'availabilityZone' => av_zone,
56
56
  'tagSet' => {}
57
- })
57
+ }
58
+
59
+ # Add this subnet to the default network ACL
60
+ accid = Fog::AWS::Mock.network_acl_association_id
61
+ default_nacl = self.data[:network_acls].values.detect { |nacl| nacl['vpcId'] == vpcId && nacl['default'] }
62
+ default_nacl['associationSet'] << {
63
+ 'networkAclAssociationId' => accid,
64
+ 'networkAclId' => default_nacl['networkAclId'],
65
+ 'subnetId' => data['subnetId'],
66
+ }
58
67
 
68
+ self.data[:subnets].push(data)
59
69
  response.body = {
60
70
  'requestId' => Fog::AWS::Mock.request_id,
61
- 'subnetSet' => self.data[:subnets]
71
+ 'subnet' => data,
62
72
  }
63
73
  else
64
74
  response.status = 400
@@ -43,7 +43,7 @@ module Fog
43
43
  Excon::Response.new.tap do |response|
44
44
  if cidrBlock
45
45
  response.status = 200
46
- vpc_id = Fog::AWS::Mock.request_id
46
+ vpc_id = Fog::AWS::Mock.vpc_id
47
47
  self.data[:vpcs].push({
48
48
  'vpcId' => vpc_id,
49
49
  'state' => 'pending',
@@ -66,6 +66,12 @@ module Fog
66
66
  assoc = add_route_association(default_route.id, nil, true)
67
67
  route_table["associationSet"].push(assoc)
68
68
 
69
+ # Create a default network ACL
70
+ default_nacl = self.network_acls.new(:vpc_id => vpc_id)
71
+ default_nacl.save
72
+ # Manually override since Amazon doesn't let you create a default one
73
+ self.data[:network_acls][default_nacl.network_acl_id]['default'] = true
74
+
69
75
  response.body = {
70
76
  'requestId' => Fog::AWS::Mock.request_id,
71
77
  'vpcSet' => self.data[:vpcs]
@@ -0,0 +1,52 @@
1
+ module Fog
2
+ module Compute
3
+ class AWS
4
+ class Real
5
+ require 'fog/aws/parsers/compute/basic'
6
+
7
+ # Deletes a network ACL.
8
+ #
9
+ # ==== Parameters
10
+ # * network_acl_id<~String> - The ID of the network ACL you want to delete.
11
+ #
12
+ # === Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * 'requestId'<~String> - Id of request
16
+ # * 'return'<~Boolean> - Returns true if the request succeeds.
17
+ #
18
+ # {Amazon API Reference}[http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteNetworkAcl.html]
19
+ def delete_network_acl(network_acl_id)
20
+ request(
21
+ 'Action' => 'DeleteNetworkAcl',
22
+ 'NetworkAclId' => network_acl_id,
23
+ :parser => Fog::Parsers::Compute::AWS::Basic.new
24
+ )
25
+ end
26
+ end
27
+
28
+ class Mock
29
+ def delete_network_acl(network_acl_id)
30
+ response = Excon::Response.new
31
+ if self.data[:network_acls][network_acl_id]
32
+
33
+ if self.data[:network_acls][network_acl_id]['associationSet'].any?
34
+ raise Fog::Compute::AWS::Error.new("ACL is in use")
35
+ end
36
+
37
+ self.data[:network_acls].delete(network_acl_id)
38
+
39
+ response.status = 200
40
+ response.body = {
41
+ 'requestId' => Fog::AWS::Mock.request_id,
42
+ 'return' => true
43
+ }
44
+ response
45
+ else
46
+ raise Fog::Compute::AWS::NotFound.new("The network ACL '#{network_acl_id}' does not exist")
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,55 @@
1
+ module Fog
2
+ module Compute
3
+ class AWS
4
+ class Real
5
+ require 'fog/aws/parsers/compute/basic'
6
+
7
+ # Deletes a network ACL entry
8
+ #
9
+ # ==== Parameters
10
+ # * network_acl_id<~String> - The ID of the network ACL
11
+ # * rule_number<~Integer> - The rule number of the entry to delete.
12
+ # * egress<~Boolean> - Indicates whether the rule is an egress rule (true) or ingress rule (false)
13
+ #
14
+ # === Returns
15
+ # * response<~Excon::Response>:
16
+ # * body<~Hash>:
17
+ # * 'requestId'<~String> - Id of request
18
+ # * 'return'<~Boolean> - Returns true if the request succeeds.
19
+ #
20
+ # {Amazon API Reference}[http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteNetworkAclEntry.html]
21
+ def delete_network_acl_entry(network_acl_id, rule_number, egress)
22
+ request(
23
+ 'Action' => 'DeleteNetworkAclEntry',
24
+ 'NetworkAclId' => network_acl_id,
25
+ 'RuleNumber' => rule_number,
26
+ 'Egress' => egress,
27
+ :parser => Fog::Parsers::Compute::AWS::Basic.new
28
+ )
29
+ end
30
+ end
31
+
32
+ class Mock
33
+ def delete_network_acl_entry(network_acl_id, rule_number, egress)
34
+ response = Excon::Response.new
35
+ if self.data[:network_acls][network_acl_id]
36
+ if self.data[:network_acls][network_acl_id]['entrySet'].detect { |r| r['ruleNumber'] == rule_number && r['egress'] == egress }
37
+ self.data[:network_acls][network_acl_id]['entrySet'].delete_if { |r| r['ruleNumber'] == rule_number && r['egress'] == egress }
38
+ else
39
+ raise Fog::Compute::AWS::Error.new("No rule with that number and egress value")
40
+ end
41
+
42
+ response.status = 200
43
+ response.body = {
44
+ 'requestId' => Fog::AWS::Mock.request_id,
45
+ 'return' => true
46
+ }
47
+ response
48
+ else
49
+ raise Fog::Compute::AWS::NotFound.new("The network ACL '#{network_acl_id}' does not exist")
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -36,6 +36,10 @@ module Fog
36
36
  response.status = 200
37
37
  self.data[:vpcs].reject! { |v| v['vpcId'] == vpc_id }
38
38
 
39
+ # Delete the default network ACL
40
+ network_acl_id = self.network_acls.all('vpc-id' => vpc_id, 'default' => true).first.network_acl_id
41
+ self.data[:network_acls].delete(network_acl_id)
42
+
39
43
  response.body = {
40
44
  'requestId' => Fog::AWS::Mock.request_id,
41
45
  'return' => true
@@ -0,0 +1,104 @@
1
+ module Fog
2
+ module Compute
3
+ class AWS
4
+ class Real
5
+
6
+ require 'fog/aws/parsers/compute/describe_network_acls'
7
+
8
+ # Describe all or specified network ACLs
9
+ #
10
+ # ==== Parameters
11
+ # * filters<~Hash> - List of filters to limit results with
12
+ #
13
+ # === Returns
14
+ # * response<~Excon::Response>:
15
+ # * body<~Hash>:
16
+ # * 'requestId'<~String> - Id of request
17
+ # * 'networkAclSet'<~Array>: - A list of network ACLs
18
+ # * 'networkAclId'<~String> - The ID of the network ACL
19
+ # * 'vpcId'<~String> - The ID of the VPC for the network ACL
20
+ # * 'default'<~Boolean> - Indicates whether this is the default network ACL for the VPC
21
+ # * 'entrySet'<~Array>: - A list of entries (rules) in the network ACL
22
+ # * 'ruleNumber'<~Integer> - The rule number for the entry. ACL entries are processed in ascending order by rule number
23
+ # * 'protocol'<~Integer> - The protocol. A value of -1 means all protocols
24
+ # * 'ruleAction'<~String> - Indicates whether to allow or deny the traffic that matches the rule
25
+ # * 'egress'<~Boolean> - Indicates whether the rule is an egress rule (applied to traffic leaving the subnet)
26
+ # * 'cidrBlock'<~String> - The network range to allow or deny, in CIDR notation
27
+ # * 'icmpTypeCode'<~Hash> - ICMP protocol: The ICMP type and code
28
+ # * 'code'<~Integer> - The ICMP code. A value of -1 means all codes for the specified ICMP type
29
+ # * 'type'<~Integer> - The ICMP type. A value of -1 means all types
30
+ # * 'portRange'<~Hash> - TCP or UDP protocols: The range of ports the rule applies to
31
+ # * 'from'<~Integer> - The first port in the range
32
+ # * 'to'<~Integer> - The last port in the range
33
+ # * 'associationSet'<~Array>: - A list of associations between the network ACL and subnets
34
+ # * 'networkAclAssociationId'<~String> - The ID of the association
35
+ # * 'networkAclId'<~String> - The ID of the network ACL
36
+ # * 'subnetId'<~String> - The ID of the subnet
37
+ # * 'tagSet'<~Array>: - Tags assigned to the resource.
38
+ # * 'key'<~String> - Tag's key
39
+ # * 'value'<~String> - Tag's value
40
+ #
41
+ # {Amazon API Reference}[http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeNetworkAcls.html]
42
+ def describe_network_acls(filters = {})
43
+ params = Fog::AWS.indexed_filters(filters)
44
+ request({
45
+ 'Action' => 'DescribeNetworkAcls',
46
+ :idempotent => true,
47
+ :parser => Fog::Parsers::Compute::AWS::DescribeNetworkAcls.new
48
+ }.merge!(params))
49
+ end
50
+ end
51
+
52
+ class Mock
53
+ def describe_network_acls(filters = {})
54
+ response = Excon::Response.new
55
+
56
+ network_acls = self.data[:network_acls].values
57
+
58
+ aliases = {
59
+ 'vpc-id' => 'vpcId',
60
+ 'network-acl-id' => 'networkAclId',
61
+ 'default' => 'default',
62
+ }
63
+ association_aliases = {
64
+ 'association-id' => 'networkAclAssociationId',
65
+ 'network-acl-id' => 'networkAclId',
66
+ 'subnet-id' => 'subnetId',
67
+ }
68
+ entry_aliases = {
69
+ 'cidr' => 'cidrBlock',
70
+ 'egress' => 'egress',
71
+ 'rule-action' => 'ruleAction',
72
+ 'rule-number' => 'ruleNumber',
73
+ 'protocol' => 'protocol',
74
+ 'egress' => 'egress',
75
+ }
76
+ for filter_key, filter_value in filters
77
+ filter_key = filter_key.to_s
78
+ if association_key = filter_key.split('association.')[1]
79
+ aliased_key = association_aliases[association_key]
80
+ network_acls = network_acls.reject{|nacl| !nacl['associationSet'].detect {|association| [*filter_value].include?(association[aliased_key])}}
81
+ elsif entry_key = filter_key.split('entry.icmp.')[1]
82
+ network_acls = network_acls.reject{|nacl| !nacl['entrySet'].detect {|association| [*filter_value].include?(association['icmpTypeCode'][entry_key])}}
83
+ elsif entry_key = filter_key.split('entry.port-range.')[1]
84
+ network_acls = network_acls.reject{|nacl| !nacl['entrySet'].detect {|association| [*filter_value].include?(association['portRange'][entry_key])}}
85
+ elsif entry_key = filter_key.split('entry.')[1]
86
+ aliased_key = entry_aliases[entry_key]
87
+ network_acls = network_acls.reject{|nacl| !nacl['entrySet'].detect {|association| [*filter_value].include?(association[aliased_key])}}
88
+ else
89
+ aliased_key = aliases[filter_key]
90
+ network_acls = network_acls.reject{|nacl| ![*filter_value].include?(nacl[aliased_key])}
91
+ end
92
+ end
93
+
94
+ response.status = 200
95
+ response.body = {
96
+ 'requestId' => Fog::AWS::Mock.request_id,
97
+ 'networkAclSet' => network_acls
98
+ }
99
+ response
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end