fog-aws 3.0.0 → 3.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (499) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +10 -0
  3. data/.github/workflows/ruby.yml +36 -0
  4. data/.github/workflows/stale.yml +23 -0
  5. data/.gitignore +1 -0
  6. data/CHANGELOG.md +354 -22
  7. data/Gemfile +1 -1
  8. data/LICENSE.md +1 -1
  9. data/README.md +60 -7
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/fog-aws.gemspec +5 -4
  14. data/lib/fog/aws.rb +27 -19
  15. data/lib/fog/aws/auto_scaling.rb +1 -0
  16. data/lib/fog/aws/cdn.rb +15 -2
  17. data/lib/fog/aws/compute.rb +36 -23
  18. data/lib/fog/aws/credential_fetcher.rb +62 -8
  19. data/lib/fog/aws/dns.rb +154 -5
  20. data/lib/fog/aws/efs.rb +1 -1
  21. data/lib/fog/aws/elasticache.rb +4 -2
  22. data/lib/fog/aws/elb.rb +3 -2
  23. data/lib/fog/aws/elbv2.rb +72 -0
  24. data/lib/fog/aws/glacier.rb +83 -21
  25. data/lib/fog/aws/kinesis.rb +23 -15
  26. data/lib/fog/aws/models/auto_scaling/group.rb +10 -0
  27. data/lib/fog/aws/models/cdn/distribution.rb +4 -4
  28. data/lib/fog/aws/models/cdn/distribution_helper.rb +2 -2
  29. data/lib/fog/aws/models/cdn/distributions.rb +4 -4
  30. data/lib/fog/aws/models/cdn/distributions_helper.rb +2 -2
  31. data/lib/fog/aws/models/cdn/invalidation.rb +2 -2
  32. data/lib/fog/aws/models/cdn/invalidations.rb +3 -3
  33. data/lib/fog/aws/models/cdn/streaming_distribution.rb +3 -3
  34. data/lib/fog/aws/models/cdn/streaming_distributions.rb +4 -4
  35. data/lib/fog/aws/models/compute/address.rb +3 -2
  36. data/lib/fog/aws/models/compute/addresses.rb +3 -3
  37. data/lib/fog/aws/models/compute/dhcp_option.rb +2 -2
  38. data/lib/fog/aws/models/compute/dhcp_options.rb +7 -7
  39. data/lib/fog/aws/models/compute/flavor.rb +2 -2
  40. data/lib/fog/aws/models/compute/flavors.rb +2719 -397
  41. data/lib/fog/aws/models/compute/image.rb +2 -2
  42. data/lib/fog/aws/models/compute/images.rb +3 -3
  43. data/lib/fog/aws/models/compute/internet_gateway.rb +2 -2
  44. data/lib/fog/aws/models/compute/internet_gateways.rb +7 -7
  45. data/lib/fog/aws/models/compute/key_pair.rb +2 -2
  46. data/lib/fog/aws/models/compute/key_pairs.rb +3 -3
  47. data/lib/fog/aws/models/compute/network_acl.rb +4 -4
  48. data/lib/fog/aws/models/compute/network_acls.rb +6 -6
  49. data/lib/fog/aws/models/compute/network_interface.rb +2 -2
  50. data/lib/fog/aws/models/compute/network_interfaces.rb +4 -4
  51. data/lib/fog/aws/models/compute/route_table.rb +2 -2
  52. data/lib/fog/aws/models/compute/route_tables.rb +7 -7
  53. data/lib/fog/aws/models/compute/security_group.rb +2 -2
  54. data/lib/fog/aws/models/compute/security_groups.rb +3 -3
  55. data/lib/fog/aws/models/compute/server.rb +6 -4
  56. data/lib/fog/aws/models/compute/servers.rb +13 -8
  57. data/lib/fog/aws/models/compute/snapshot.rb +9 -8
  58. data/lib/fog/aws/models/compute/snapshots.rb +3 -3
  59. data/lib/fog/aws/models/compute/spot_request.rb +2 -2
  60. data/lib/fog/aws/models/compute/spot_requests.rb +3 -3
  61. data/lib/fog/aws/models/compute/subnet.rb +2 -2
  62. data/lib/fog/aws/models/compute/subnets.rb +3 -3
  63. data/lib/fog/aws/models/compute/tag.rb +2 -2
  64. data/lib/fog/aws/models/compute/tags.rb +3 -3
  65. data/lib/fog/aws/models/compute/volume.rb +3 -3
  66. data/lib/fog/aws/models/compute/volumes.rb +3 -3
  67. data/lib/fog/aws/models/compute/vpc.rb +10 -4
  68. data/lib/fog/aws/models/compute/vpcs.rb +3 -3
  69. data/lib/fog/aws/models/dns/record.rb +2 -2
  70. data/lib/fog/aws/models/dns/records.rb +4 -4
  71. data/lib/fog/aws/models/dns/zone.rb +3 -3
  72. data/lib/fog/aws/models/dns/zones.rb +4 -4
  73. data/lib/fog/aws/models/efs/file_system.rb +4 -0
  74. data/lib/fog/aws/models/rds/cluster.rb +9 -1
  75. data/lib/fog/aws/models/rds/server.rb +66 -63
  76. data/lib/fog/aws/models/storage/directories.rb +3 -3
  77. data/lib/fog/aws/models/storage/directory.rb +40 -6
  78. data/lib/fog/aws/models/storage/file.rb +132 -7
  79. data/lib/fog/aws/models/storage/files.rb +36 -6
  80. data/lib/fog/aws/models/storage/version.rb +2 -2
  81. data/lib/fog/aws/models/storage/versions.rb +3 -3
  82. data/lib/fog/aws/parsers/cdn/distribution.rb +2 -2
  83. data/lib/fog/aws/parsers/cdn/get_distribution_list.rb +2 -2
  84. data/lib/fog/aws/parsers/cdn/get_invalidation.rb +2 -2
  85. data/lib/fog/aws/parsers/cdn/get_invalidation_list.rb +2 -2
  86. data/lib/fog/aws/parsers/cdn/get_streaming_distribution_list.rb +2 -2
  87. data/lib/fog/aws/parsers/cdn/post_invalidation.rb +2 -2
  88. data/lib/fog/aws/parsers/cdn/streaming_distribution.rb +1 -1
  89. data/lib/fog/aws/parsers/compute/allocate_address.rb +2 -2
  90. data/lib/fog/aws/parsers/compute/assign_private_ip_addresses.rb +2 -2
  91. data/lib/fog/aws/parsers/compute/associate_address.rb +2 -2
  92. data/lib/fog/aws/parsers/compute/associate_route_table.rb +2 -2
  93. data/lib/fog/aws/parsers/compute/attach_network_interface.rb +2 -2
  94. data/lib/fog/aws/parsers/compute/attach_volume.rb +2 -2
  95. data/lib/fog/aws/parsers/compute/basic.rb +2 -2
  96. data/lib/fog/aws/parsers/compute/cancel_spot_instance_requests.rb +2 -2
  97. data/lib/fog/aws/parsers/compute/copy_image.rb +2 -2
  98. data/lib/fog/aws/parsers/compute/copy_snapshot.rb +2 -2
  99. data/lib/fog/aws/parsers/compute/create_dhcp_options.rb +2 -2
  100. data/lib/fog/aws/parsers/compute/create_image.rb +2 -2
  101. data/lib/fog/aws/parsers/compute/create_internet_gateway.rb +2 -2
  102. data/lib/fog/aws/parsers/compute/create_key_pair.rb +2 -2
  103. data/lib/fog/aws/parsers/compute/create_network_acl.rb +2 -2
  104. data/lib/fog/aws/parsers/compute/create_network_interface.rb +2 -2
  105. data/lib/fog/aws/parsers/compute/create_route_table.rb +2 -2
  106. data/lib/fog/aws/parsers/compute/create_security_group.rb +2 -2
  107. data/lib/fog/aws/parsers/compute/create_snapshot.rb +3 -3
  108. data/lib/fog/aws/parsers/compute/create_subnet.rb +35 -8
  109. data/lib/fog/aws/parsers/compute/create_volume.rb +2 -2
  110. data/lib/fog/aws/parsers/compute/create_vpc.rb +2 -2
  111. data/lib/fog/aws/parsers/compute/deregister_image.rb +2 -2
  112. data/lib/fog/aws/parsers/compute/describe_account_attributes.rb +2 -2
  113. data/lib/fog/aws/parsers/compute/describe_addresses.rb +32 -11
  114. data/lib/fog/aws/parsers/compute/describe_availability_zones.rb +2 -2
  115. data/lib/fog/aws/parsers/compute/describe_classic_link_instances.rb +2 -2
  116. data/lib/fog/aws/parsers/compute/describe_dhcp_options.rb +2 -2
  117. data/lib/fog/aws/parsers/compute/describe_image_attribute.rb +122 -0
  118. data/lib/fog/aws/parsers/compute/describe_images.rb +2 -2
  119. data/lib/fog/aws/parsers/compute/describe_instance_attribute.rb +2 -2
  120. data/lib/fog/aws/parsers/compute/describe_instance_status.rb +2 -2
  121. data/lib/fog/aws/parsers/compute/describe_instances.rb +2 -2
  122. data/lib/fog/aws/parsers/compute/describe_internet_gateways.rb +2 -2
  123. data/lib/fog/aws/parsers/compute/describe_key_pairs.rb +2 -2
  124. data/lib/fog/aws/parsers/compute/describe_network_acls.rb +2 -2
  125. data/lib/fog/aws/parsers/compute/describe_network_interface_attribute.rb +2 -2
  126. data/lib/fog/aws/parsers/compute/describe_network_interfaces.rb +2 -2
  127. data/lib/fog/aws/parsers/compute/describe_placement_groups.rb +2 -2
  128. data/lib/fog/aws/parsers/compute/describe_regions.rb +2 -2
  129. data/lib/fog/aws/parsers/compute/describe_reserved_instances.rb +2 -2
  130. data/lib/fog/aws/parsers/compute/describe_reserved_instances_offerings.rb +2 -2
  131. data/lib/fog/aws/parsers/compute/describe_route_tables.rb +2 -2
  132. data/lib/fog/aws/parsers/compute/describe_security_groups.rb +3 -3
  133. data/lib/fog/aws/parsers/compute/describe_snapshots.rb +2 -2
  134. data/lib/fog/aws/parsers/compute/describe_spot_price_history.rb +2 -2
  135. data/lib/fog/aws/parsers/compute/describe_subnets.rb +35 -8
  136. data/lib/fog/aws/parsers/compute/describe_tags.rb +2 -2
  137. data/lib/fog/aws/parsers/compute/describe_volume_status.rb +2 -2
  138. data/lib/fog/aws/parsers/compute/describe_volumes.rb +2 -2
  139. data/lib/fog/aws/parsers/compute/describe_volumes_modifications.rb +2 -2
  140. data/lib/fog/aws/parsers/compute/describe_vpc_attribute.rb +2 -2
  141. data/lib/fog/aws/parsers/compute/describe_vpc_classic_link.rb +2 -2
  142. data/lib/fog/aws/parsers/compute/describe_vpc_classic_link_dns_support.rb +2 -2
  143. data/lib/fog/aws/parsers/compute/describe_vpcs.rb +2 -2
  144. data/lib/fog/aws/parsers/compute/detach_volume.rb +2 -2
  145. data/lib/fog/aws/parsers/compute/get_console_output.rb +2 -2
  146. data/lib/fog/aws/parsers/compute/get_password_data.rb +2 -2
  147. data/lib/fog/aws/parsers/compute/import_key_pair.rb +2 -2
  148. data/lib/fog/aws/parsers/compute/modify_subnet_attribute.rb +2 -2
  149. data/lib/fog/aws/parsers/compute/modify_volume.rb +2 -2
  150. data/lib/fog/aws/parsers/compute/monitor_unmonitor_instances.rb +2 -2
  151. data/lib/fog/aws/parsers/compute/move_address_to_vpc.rb +2 -2
  152. data/lib/fog/aws/parsers/compute/network_acl_parser.rb +2 -2
  153. data/lib/fog/aws/parsers/compute/network_interface_parser.rb +2 -2
  154. data/lib/fog/aws/parsers/compute/purchase_reserved_instances_offering.rb +2 -2
  155. data/lib/fog/aws/parsers/compute/register_image.rb +2 -2
  156. data/lib/fog/aws/parsers/compute/replace_network_acl_association.rb +2 -2
  157. data/lib/fog/aws/parsers/compute/restore_address_to_classic.rb +2 -2
  158. data/lib/fog/aws/parsers/compute/run_instances.rb +2 -2
  159. data/lib/fog/aws/parsers/compute/spot_datafeed_subscription.rb +2 -2
  160. data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +2 -2
  161. data/lib/fog/aws/parsers/compute/start_stop_instances.rb +2 -2
  162. data/lib/fog/aws/parsers/compute/terminate_instances.rb +2 -2
  163. data/lib/fog/aws/parsers/dns/change_resource_record_sets.rb +2 -2
  164. data/lib/fog/aws/parsers/dns/create_hosted_zone.rb +3 -3
  165. data/lib/fog/aws/parsers/dns/delete_hosted_zone.rb +2 -2
  166. data/lib/fog/aws/parsers/dns/get_change.rb +2 -2
  167. data/lib/fog/aws/parsers/dns/get_hosted_zone.rb +5 -5
  168. data/lib/fog/aws/parsers/dns/health_check.rb +2 -2
  169. data/lib/fog/aws/parsers/dns/list_health_checks.rb +2 -2
  170. data/lib/fog/aws/parsers/dns/list_hosted_zones.rb +5 -3
  171. data/lib/fog/aws/parsers/dns/list_resource_record_sets.rb +2 -2
  172. data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +3 -3
  173. data/lib/fog/aws/parsers/elbv2/create_load_balancer.rb +88 -0
  174. data/lib/fog/aws/parsers/elbv2/describe_listeners.rb +110 -0
  175. data/lib/fog/aws/parsers/elbv2/describe_load_balancers.rb +88 -0
  176. data/lib/fog/aws/parsers/elbv2/describe_tags.rb +53 -0
  177. data/lib/fog/aws/parsers/elbv2/empty.rb +10 -0
  178. data/lib/fog/aws/parsers/rds/db_parser.rb +41 -2
  179. data/lib/fog/aws/parsers/storage/access_control_list.rb +2 -2
  180. data/lib/fog/aws/parsers/storage/complete_multipart_upload.rb +2 -2
  181. data/lib/fog/aws/parsers/storage/copy_object.rb +2 -2
  182. data/lib/fog/aws/parsers/storage/cors_configuration.rb +2 -2
  183. data/lib/fog/aws/parsers/storage/delete_multiple_objects.rb +2 -2
  184. data/lib/fog/aws/parsers/storage/get_bucket.rb +2 -2
  185. data/lib/fog/aws/parsers/storage/get_bucket_lifecycle.rb +2 -2
  186. data/lib/fog/aws/parsers/storage/get_bucket_location.rb +2 -2
  187. data/lib/fog/aws/parsers/storage/get_bucket_logging.rb +2 -2
  188. data/lib/fog/aws/parsers/storage/get_bucket_notification.rb +2 -2
  189. data/lib/fog/aws/parsers/storage/get_bucket_object_versions.rb +2 -2
  190. data/lib/fog/aws/parsers/storage/get_bucket_tagging.rb +2 -2
  191. data/lib/fog/aws/parsers/storage/get_bucket_versioning.rb +2 -2
  192. data/lib/fog/aws/parsers/storage/get_bucket_website.rb +2 -2
  193. data/lib/fog/aws/parsers/storage/get_object_tagging.rb +33 -0
  194. data/lib/fog/aws/parsers/storage/get_request_payment.rb +2 -2
  195. data/lib/fog/aws/parsers/storage/get_service.rb +2 -2
  196. data/lib/fog/aws/parsers/storage/initiate_multipart_upload.rb +2 -2
  197. data/lib/fog/aws/parsers/storage/list_multipart_uploads.rb +2 -2
  198. data/lib/fog/aws/parsers/storage/list_parts.rb +2 -2
  199. data/lib/fog/aws/parsers/storage/upload_part_copy_object.rb +18 -0
  200. data/lib/fog/aws/parsers/sts/assume_role_with_web_identity.rb +1 -1
  201. data/lib/fog/aws/requests/auto_scaling/set_instance_protection.rb +67 -0
  202. data/lib/fog/aws/requests/cdn/delete_distribution.rb +6 -6
  203. data/lib/fog/aws/requests/cdn/delete_streaming_distribution.rb +6 -6
  204. data/lib/fog/aws/requests/cdn/get_distribution.rb +5 -5
  205. data/lib/fog/aws/requests/cdn/get_distribution_list.rb +3 -3
  206. data/lib/fog/aws/requests/cdn/get_invalidation.rb +5 -5
  207. data/lib/fog/aws/requests/cdn/get_invalidation_list.rb +4 -4
  208. data/lib/fog/aws/requests/cdn/get_streaming_distribution.rb +5 -5
  209. data/lib/fog/aws/requests/cdn/get_streaming_distribution_list.rb +3 -3
  210. data/lib/fog/aws/requests/cdn/post_distribution.rb +6 -6
  211. data/lib/fog/aws/requests/cdn/post_invalidation.rb +5 -5
  212. data/lib/fog/aws/requests/cdn/post_streaming_distribution.rb +6 -6
  213. data/lib/fog/aws/requests/cdn/put_distribution_config.rb +7 -7
  214. data/lib/fog/aws/requests/cdn/put_streaming_distribution_config.rb +7 -7
  215. data/lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb +2 -2
  216. data/lib/fog/aws/requests/compute/allocate_address.rb +4 -4
  217. data/lib/fog/aws/requests/compute/assign_private_ip_addresses.rb +5 -5
  218. data/lib/fog/aws/requests/compute/associate_address.rb +7 -7
  219. data/lib/fog/aws/requests/compute/associate_dhcp_options.rb +4 -4
  220. data/lib/fog/aws/requests/compute/associate_route_table.rb +5 -5
  221. data/lib/fog/aws/requests/compute/attach_classic_link_vpc.rb +7 -7
  222. data/lib/fog/aws/requests/compute/attach_internet_gateway.rb +4 -4
  223. data/lib/fog/aws/requests/compute/attach_network_interface.rb +6 -6
  224. data/lib/fog/aws/requests/compute/attach_volume.rb +7 -7
  225. data/lib/fog/aws/requests/compute/authorize_security_group_egress.rb +6 -6
  226. data/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb +11 -11
  227. data/lib/fog/aws/requests/compute/cancel_spot_instance_requests.rb +4 -4
  228. data/lib/fog/aws/requests/compute/copy_image.rb +3 -3
  229. data/lib/fog/aws/requests/compute/copy_snapshot.rb +3 -3
  230. data/lib/fog/aws/requests/compute/create_dhcp_options.rb +3 -3
  231. data/lib/fog/aws/requests/compute/create_image.rb +3 -3
  232. data/lib/fog/aws/requests/compute/create_internet_gateway.rb +3 -3
  233. data/lib/fog/aws/requests/compute/create_key_pair.rb +4 -4
  234. data/lib/fog/aws/requests/compute/create_network_acl.rb +4 -4
  235. data/lib/fog/aws/requests/compute/create_network_acl_entry.rb +5 -5
  236. data/lib/fog/aws/requests/compute/create_network_interface.rb +6 -6
  237. data/lib/fog/aws/requests/compute/create_placement_group.rb +3 -3
  238. data/lib/fog/aws/requests/compute/create_route.rb +10 -10
  239. data/lib/fog/aws/requests/compute/create_route_table.rb +4 -4
  240. data/lib/fog/aws/requests/compute/create_security_group.rb +4 -4
  241. data/lib/fog/aws/requests/compute/create_snapshot.rb +3 -3
  242. data/lib/fog/aws/requests/compute/create_spot_datafeed_subscription.rb +3 -3
  243. data/lib/fog/aws/requests/compute/create_subnet.rb +6 -6
  244. data/lib/fog/aws/requests/compute/create_tags.rb +3 -3
  245. data/lib/fog/aws/requests/compute/create_volume.rb +11 -11
  246. data/lib/fog/aws/requests/compute/create_vpc.rb +7 -7
  247. data/lib/fog/aws/requests/compute/delete_dhcp_options.rb +4 -4
  248. data/lib/fog/aws/requests/compute/delete_internet_gateway.rb +4 -4
  249. data/lib/fog/aws/requests/compute/delete_key_pair.rb +3 -3
  250. data/lib/fog/aws/requests/compute/delete_network_acl.rb +5 -5
  251. data/lib/fog/aws/requests/compute/delete_network_acl_entry.rb +5 -5
  252. data/lib/fog/aws/requests/compute/delete_network_interface.rb +5 -5
  253. data/lib/fog/aws/requests/compute/delete_placement_group.rb +3 -3
  254. data/lib/fog/aws/requests/compute/delete_route.rb +6 -6
  255. data/lib/fog/aws/requests/compute/delete_route_table.rb +5 -5
  256. data/lib/fog/aws/requests/compute/delete_security_group.rb +9 -9
  257. data/lib/fog/aws/requests/compute/delete_snapshot.rb +4 -4
  258. data/lib/fog/aws/requests/compute/delete_spot_datafeed_subscription.rb +3 -3
  259. data/lib/fog/aws/requests/compute/delete_subnet.rb +4 -4
  260. data/lib/fog/aws/requests/compute/delete_tags.rb +3 -3
  261. data/lib/fog/aws/requests/compute/delete_volume.rb +5 -5
  262. data/lib/fog/aws/requests/compute/delete_vpc.rb +4 -4
  263. data/lib/fog/aws/requests/compute/deregister_image.rb +4 -4
  264. data/lib/fog/aws/requests/compute/describe_account_attributes.rb +3 -3
  265. data/lib/fog/aws/requests/compute/describe_addresses.rb +3 -3
  266. data/lib/fog/aws/requests/compute/describe_availability_zones.rb +3 -3
  267. data/lib/fog/aws/requests/compute/describe_classic_link_instances.rb +3 -3
  268. data/lib/fog/aws/requests/compute/describe_dhcp_options.rb +3 -3
  269. data/lib/fog/aws/requests/compute/describe_image_attribute.rb +74 -0
  270. data/lib/fog/aws/requests/compute/describe_images.rb +3 -3
  271. data/lib/fog/aws/requests/compute/describe_instance_attribute.rb +4 -4
  272. data/lib/fog/aws/requests/compute/describe_instance_status.rb +3 -3
  273. data/lib/fog/aws/requests/compute/describe_instances.rb +4 -4
  274. data/lib/fog/aws/requests/compute/describe_internet_gateways.rb +3 -3
  275. data/lib/fog/aws/requests/compute/describe_key_pairs.rb +3 -3
  276. data/lib/fog/aws/requests/compute/describe_network_acls.rb +3 -3
  277. data/lib/fog/aws/requests/compute/describe_network_interface_attribute.rb +5 -5
  278. data/lib/fog/aws/requests/compute/describe_network_interfaces.rb +3 -3
  279. data/lib/fog/aws/requests/compute/describe_placement_groups.rb +3 -3
  280. data/lib/fog/aws/requests/compute/describe_regions.rb +3 -3
  281. data/lib/fog/aws/requests/compute/describe_reserved_instances.rb +3 -3
  282. data/lib/fog/aws/requests/compute/describe_reserved_instances_offerings.rb +3 -3
  283. data/lib/fog/aws/requests/compute/describe_route_tables.rb +3 -3
  284. data/lib/fog/aws/requests/compute/describe_security_groups.rb +15 -4
  285. data/lib/fog/aws/requests/compute/describe_snapshots.rb +3 -3
  286. data/lib/fog/aws/requests/compute/describe_spot_datafeed_subscription.rb +3 -3
  287. data/lib/fog/aws/requests/compute/describe_spot_instance_requests.rb +3 -3
  288. data/lib/fog/aws/requests/compute/describe_spot_price_history.rb +5 -5
  289. data/lib/fog/aws/requests/compute/describe_subnets.rb +3 -3
  290. data/lib/fog/aws/requests/compute/describe_tags.rb +3 -3
  291. data/lib/fog/aws/requests/compute/describe_volume_status.rb +3 -3
  292. data/lib/fog/aws/requests/compute/describe_volumes.rb +3 -3
  293. data/lib/fog/aws/requests/compute/describe_volumes_modifications.rb +3 -3
  294. data/lib/fog/aws/requests/compute/describe_vpc_attribute.rb +5 -5
  295. data/lib/fog/aws/requests/compute/describe_vpc_classic_link.rb +4 -4
  296. data/lib/fog/aws/requests/compute/describe_vpc_classic_link_dns_support.rb +3 -3
  297. data/lib/fog/aws/requests/compute/describe_vpcs.rb +3 -3
  298. data/lib/fog/aws/requests/compute/detach_classic_link_vpc.rb +5 -5
  299. data/lib/fog/aws/requests/compute/detach_internet_gateway.rb +4 -4
  300. data/lib/fog/aws/requests/compute/detach_network_interface.rb +4 -4
  301. data/lib/fog/aws/requests/compute/detach_volume.rb +5 -5
  302. data/lib/fog/aws/requests/compute/disable_vpc_classic_link.rb +4 -4
  303. data/lib/fog/aws/requests/compute/disable_vpc_classic_link_dns_support.rb +4 -4
  304. data/lib/fog/aws/requests/compute/disassociate_address.rb +5 -5
  305. data/lib/fog/aws/requests/compute/disassociate_route_table.rb +5 -5
  306. data/lib/fog/aws/requests/compute/enable_vpc_classic_link.rb +4 -4
  307. data/lib/fog/aws/requests/compute/enable_vpc_classic_link_dns_support.rb +4 -4
  308. data/lib/fog/aws/requests/compute/get_console_output.rb +4 -4
  309. data/lib/fog/aws/requests/compute/get_password_data.rb +4 -4
  310. data/lib/fog/aws/requests/compute/import_key_pair.rb +4 -4
  311. data/lib/fog/aws/requests/compute/modify_image_attribute.rb +4 -4
  312. data/lib/fog/aws/requests/compute/modify_instance_attribute.rb +3 -3
  313. data/lib/fog/aws/requests/compute/modify_instance_placement.rb +33 -0
  314. data/lib/fog/aws/requests/compute/modify_network_interface_attribute.rb +8 -8
  315. data/lib/fog/aws/requests/compute/modify_snapshot_attribute.rb +3 -3
  316. data/lib/fog/aws/requests/compute/modify_subnet_attribute.rb +3 -3
  317. data/lib/fog/aws/requests/compute/modify_volume.rb +5 -5
  318. data/lib/fog/aws/requests/compute/modify_volume_attribute.rb +4 -4
  319. data/lib/fog/aws/requests/compute/modify_vpc_attribute.rb +7 -7
  320. data/lib/fog/aws/requests/compute/monitor_instances.rb +4 -4
  321. data/lib/fog/aws/requests/compute/move_address_to_vpc.rb +4 -4
  322. data/lib/fog/aws/requests/compute/purchase_reserved_instances_offering.rb +3 -3
  323. data/lib/fog/aws/requests/compute/reboot_instances.rb +4 -4
  324. data/lib/fog/aws/requests/compute/register_image.rb +4 -4
  325. data/lib/fog/aws/requests/compute/release_address.rb +5 -5
  326. data/lib/fog/aws/requests/compute/replace_network_acl_association.rb +5 -5
  327. data/lib/fog/aws/requests/compute/replace_network_acl_entry.rb +5 -5
  328. data/lib/fog/aws/requests/compute/replace_route.rb +10 -10
  329. data/lib/fog/aws/requests/compute/request_spot_instances.rb +8 -8
  330. data/lib/fog/aws/requests/compute/reset_network_interface_attribute.rb +6 -6
  331. data/lib/fog/aws/requests/compute/restore_address_to_classic.rb +5 -5
  332. data/lib/fog/aws/requests/compute/revoke_security_group_egress.rb +4 -4
  333. data/lib/fog/aws/requests/compute/revoke_security_group_ingress.rb +4 -4
  334. data/lib/fog/aws/requests/compute/run_instances.rb +24 -4
  335. data/lib/fog/aws/requests/compute/start_instances.rb +4 -4
  336. data/lib/fog/aws/requests/compute/stop_instances.rb +15 -7
  337. data/lib/fog/aws/requests/compute/terminate_instances.rb +4 -4
  338. data/lib/fog/aws/requests/compute/unmonitor_instances.rb +4 -4
  339. data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +6 -139
  340. data/lib/fog/aws/requests/dns/create_health_check.rb +3 -3
  341. data/lib/fog/aws/requests/dns/create_hosted_zone.rb +4 -4
  342. data/lib/fog/aws/requests/dns/delete_health_check.rb +2 -2
  343. data/lib/fog/aws/requests/dns/delete_hosted_zone.rb +4 -4
  344. data/lib/fog/aws/requests/dns/get_change.rb +4 -4
  345. data/lib/fog/aws/requests/dns/get_health_check.rb +3 -3
  346. data/lib/fog/aws/requests/dns/get_hosted_zone.rb +4 -4
  347. data/lib/fog/aws/requests/dns/list_health_checks.rb +3 -3
  348. data/lib/fog/aws/requests/dns/list_hosted_zones.rb +3 -3
  349. data/lib/fog/aws/requests/dns/list_resource_record_sets.rb +5 -5
  350. data/lib/fog/aws/requests/dynamodb/update_item.rb +6 -5
  351. data/lib/fog/aws/requests/efs/create_file_system.rb +15 -3
  352. data/lib/fog/aws/requests/elb/create_load_balancer.rb +7 -7
  353. data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +1 -1
  354. data/lib/fog/aws/requests/elb/describe_instance_health.rb +1 -1
  355. data/lib/fog/aws/requests/elb/describe_tags.rb +1 -1
  356. data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +1 -1
  357. data/lib/fog/aws/requests/elbv2/add_tags.rb +45 -0
  358. data/lib/fog/aws/requests/elbv2/create_load_balancer.rb +160 -0
  359. data/lib/fog/aws/requests/elbv2/describe_listeners.rb +38 -0
  360. data/lib/fog/aws/requests/elbv2/describe_load_balancers.rb +100 -0
  361. data/lib/fog/aws/requests/elbv2/describe_tags.rb +50 -0
  362. data/lib/fog/aws/requests/elbv2/remove_tags.rb +45 -0
  363. data/lib/fog/aws/requests/lambda/invoke.rb +7 -7
  364. data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +1 -1
  365. data/lib/fog/aws/requests/rds/create_db_instance.rb +1 -1
  366. data/lib/fog/aws/requests/rds/create_db_subnet_group.rb +2 -2
  367. data/lib/fog/aws/requests/rds/modify_db_instance.rb +1 -1
  368. data/lib/fog/aws/requests/rds/revoke_db_security_group_ingress.rb +1 -1
  369. data/lib/fog/aws/requests/storage/abort_multipart_upload.rb +3 -3
  370. data/lib/fog/aws/requests/storage/acl_utils.rb +3 -3
  371. data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +4 -4
  372. data/lib/fog/aws/requests/storage/copy_object.rb +3 -3
  373. data/lib/fog/aws/requests/storage/cors_utils.rb +3 -3
  374. data/lib/fog/aws/requests/storage/delete_bucket.rb +2 -2
  375. data/lib/fog/aws/requests/storage/delete_bucket_cors.rb +2 -2
  376. data/lib/fog/aws/requests/storage/delete_bucket_lifecycle.rb +2 -2
  377. data/lib/fog/aws/requests/storage/delete_bucket_policy.rb +2 -2
  378. data/lib/fog/aws/requests/storage/delete_bucket_tagging.rb +2 -2
  379. data/lib/fog/aws/requests/storage/delete_bucket_website.rb +2 -2
  380. data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +21 -11
  381. data/lib/fog/aws/requests/storage/delete_object.rb +2 -2
  382. data/lib/fog/aws/requests/storage/delete_object_url.rb +2 -2
  383. data/lib/fog/aws/requests/storage/get_bucket.rb +3 -3
  384. data/lib/fog/aws/requests/storage/get_bucket_acl.rb +4 -4
  385. data/lib/fog/aws/requests/storage/get_bucket_cors.rb +4 -4
  386. data/lib/fog/aws/requests/storage/get_bucket_lifecycle.rb +3 -3
  387. data/lib/fog/aws/requests/storage/get_bucket_location.rb +5 -6
  388. data/lib/fog/aws/requests/storage/get_bucket_logging.rb +3 -3
  389. data/lib/fog/aws/requests/storage/get_bucket_notification.rb +3 -3
  390. data/lib/fog/aws/requests/storage/get_bucket_object_versions.rb +3 -3
  391. data/lib/fog/aws/requests/storage/get_bucket_policy.rb +2 -2
  392. data/lib/fog/aws/requests/storage/get_bucket_tagging.rb +3 -3
  393. data/lib/fog/aws/requests/storage/get_bucket_versioning.rb +3 -3
  394. data/lib/fog/aws/requests/storage/get_bucket_website.rb +3 -3
  395. data/lib/fog/aws/requests/storage/get_object.rb +2 -2
  396. data/lib/fog/aws/requests/storage/get_object_acl.rb +4 -4
  397. data/lib/fog/aws/requests/storage/get_object_http_url.rb +2 -2
  398. data/lib/fog/aws/requests/storage/get_object_https_url.rb +2 -2
  399. data/lib/fog/aws/requests/storage/get_object_tagging.rb +41 -0
  400. data/lib/fog/aws/requests/storage/get_object_torrent.rb +2 -2
  401. data/lib/fog/aws/requests/storage/get_object_url.rb +2 -2
  402. data/lib/fog/aws/requests/storage/get_request_payment.rb +3 -3
  403. data/lib/fog/aws/requests/storage/get_service.rb +5 -5
  404. data/lib/fog/aws/requests/storage/head_bucket.rb +2 -2
  405. data/lib/fog/aws/requests/storage/head_object.rb +2 -2
  406. data/lib/fog/aws/requests/storage/head_object_url.rb +2 -2
  407. data/lib/fog/aws/requests/storage/initiate_multipart_upload.rb +4 -4
  408. data/lib/fog/aws/requests/storage/list_multipart_uploads.rb +3 -3
  409. data/lib/fog/aws/requests/storage/list_parts.rb +3 -3
  410. data/lib/fog/aws/requests/storage/post_object_hidden_fields.rb +2 -2
  411. data/lib/fog/aws/requests/storage/post_object_restore.rb +2 -2
  412. data/lib/fog/aws/requests/storage/put_bucket.rb +2 -2
  413. data/lib/fog/aws/requests/storage/put_bucket_acl.rb +4 -4
  414. data/lib/fog/aws/requests/storage/put_bucket_cors.rb +4 -4
  415. data/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb +2 -2
  416. data/lib/fog/aws/requests/storage/put_bucket_logging.rb +2 -2
  417. data/lib/fog/aws/requests/storage/put_bucket_notification.rb +2 -2
  418. data/lib/fog/aws/requests/storage/put_bucket_policy.rb +2 -2
  419. data/lib/fog/aws/requests/storage/put_bucket_tagging.rb +2 -2
  420. data/lib/fog/aws/requests/storage/put_bucket_versioning.rb +2 -2
  421. data/lib/fog/aws/requests/storage/put_bucket_website.rb +2 -2
  422. data/lib/fog/aws/requests/storage/put_object.rb +9 -7
  423. data/lib/fog/aws/requests/storage/put_object_acl.rb +4 -4
  424. data/lib/fog/aws/requests/storage/put_object_tagging.rb +42 -0
  425. data/lib/fog/aws/requests/storage/put_object_url.rb +2 -2
  426. data/lib/fog/aws/requests/storage/put_request_payment.rb +2 -2
  427. data/lib/fog/aws/requests/storage/shared_mock_methods.rb +4 -3
  428. data/lib/fog/aws/requests/storage/sync_clock.rb +2 -2
  429. data/lib/fog/aws/requests/storage/upload_part.rb +3 -3
  430. data/lib/fog/aws/requests/storage/upload_part_copy.rb +119 -0
  431. data/lib/fog/aws/requests/sts/assume_role_with_web_identity.rb +7 -6
  432. data/lib/fog/aws/service_mapper.rb +5 -5
  433. data/lib/fog/aws/storage.rb +50 -19
  434. data/lib/fog/aws/version.rb +1 -1
  435. data/tests/credentials_tests.rb +102 -39
  436. data/tests/helper.rb +2 -2
  437. data/tests/helpers/collection_helper.rb +3 -4
  438. data/tests/helpers/compute/flavors_helper.rb +1 -5
  439. data/tests/helpers/compute/server_helper.rb +1 -3
  440. data/tests/helpers/compute/servers_helper.rb +0 -2
  441. data/tests/helpers/dns_helper.rb +32 -31
  442. data/tests/helpers/formats_helper.rb +58 -56
  443. data/tests/helpers/formats_helper_tests.rb +22 -25
  444. data/tests/helpers/mock_helper.rb +96 -96
  445. data/tests/helpers/model_helper.rb +4 -5
  446. data/tests/helpers/responds_to_helper.rb +1 -1
  447. data/tests/helpers/schema_validator_tests.rb +21 -24
  448. data/tests/helpers/succeeds_helper.rb +2 -2
  449. data/tests/models/compute/address_tests.rb +1 -1
  450. data/tests/models/compute/network_acl_tests.rb +4 -4
  451. data/tests/models/compute/security_group_tests.rb +1 -1
  452. data/tests/models/compute/volume_tests.rb +1 -1
  453. data/tests/models/elb/model_tests.rb +1 -1
  454. data/tests/models/storage/directory_tests.rb +113 -2
  455. data/tests/models/storage/files_tests.rb +32 -0
  456. data/tests/parsers/compute/describe_images_tests.rb +2 -2
  457. data/tests/parsers/elb/describe_load_balancers.rb +1 -1
  458. data/tests/parsers/elbv2/create_load_balancer_tests.rb +48 -0
  459. data/tests/parsers/elbv2/describe_listeners_tests.rb +76 -0
  460. data/tests/parsers/elbv2/describe_load_balancers_tests.rb +54 -0
  461. data/tests/parsers/elbv2/describe_tags_tests.rb +35 -0
  462. data/tests/requests/auto_scaling/auto_scaling_tests.rb +8 -0
  463. data/tests/requests/compute/address_tests.rb +9 -9
  464. data/tests/requests/compute/assign_private_ip_tests.rb +3 -3
  465. data/tests/requests/compute/image_tests.rb +11 -2
  466. data/tests/requests/compute/instance_attrib_tests.rb +1 -1
  467. data/tests/requests/compute/instance_tests.rb +5 -5
  468. data/tests/requests/compute/internet_gateway_tests.rb +1 -1
  469. data/tests/requests/compute/key_pair_tests.rb +1 -1
  470. data/tests/requests/compute/network_acl_tests.rb +2 -2
  471. data/tests/requests/compute/network_interface_tests.rb +6 -6
  472. data/tests/requests/compute/placement_group_tests.rb +2 -2
  473. data/tests/requests/compute/region_tests.rb +4 -4
  474. data/tests/requests/compute/route_tests.rb +24 -24
  475. data/tests/requests/compute/security_group_tests.rb +14 -14
  476. data/tests/requests/compute/snapshot_tests.rb +1 -1
  477. data/tests/requests/compute/spot_datafeed_subscription_tests.rb +1 -1
  478. data/tests/requests/compute/subnet_tests.rb +3 -3
  479. data/tests/requests/compute/tag_tests.rb +3 -3
  480. data/tests/requests/compute/volume_tests.rb +11 -11
  481. data/tests/requests/compute/vpc_tests.rb +9 -3
  482. data/tests/requests/dns/change_resource_record_sets_tests.rb +3 -3
  483. data/tests/requests/efs/helper.rb +2 -0
  484. data/tests/requests/elbv2/helper.rb +66 -0
  485. data/tests/requests/elbv2/load_balancer_tests.rb +50 -0
  486. data/tests/requests/glacier/tree_hash_tests.rb +29 -0
  487. data/tests/requests/storage/acl_utils_tests.rb +24 -24
  488. data/tests/requests/storage/bucket_tests.rb +1 -1
  489. data/tests/requests/storage/cors_utils_tests.rb +14 -14
  490. data/tests/requests/storage/multipart_copy_tests.rb +93 -0
  491. data/tests/requests/storage/object_tests.rb +7 -0
  492. data/tests/requests/storage/versioning_tests.rb +38 -0
  493. data/tests/requests/sts/assume_role_with_web_identity_tests.rb +2 -0
  494. data/tests/signaturev4_tests.rb +21 -22
  495. data/tests/signed_params_tests.rb +7 -7
  496. data/tests/storage_tests.rb +1 -1
  497. metadata +61 -17
  498. data/.travis.yml +0 -55
  499. data/gemfiles/Gemfile-ruby-2.0 +0 -7
@@ -7,15 +7,15 @@ module Fog
7
7
  #
8
8
  # ==== Parameters
9
9
  # * 'table_name'<~String> - name of table for item
10
- # * 'key'<~Hash> - list of elements to be updated and their value
10
+ # * 'key'<~Hash> - list of Key attributes
11
11
  # {
12
12
  # "ForumName": {"S": "Amazon DynamoDB"},
13
13
  # "Subject": {"S": "Maximum number of items?"}
14
14
  # }
15
15
  #
16
16
  # * 'options'<~Hash>:
17
- # * 'KeyConditionExpression'<~String> - the condition elements need to match
18
- # * 'ExpressionAttributeValues'<~Hash> - values to be used in the key condition expression
17
+ # * 'UpdateExpression'<~String> - the expression that will update the item
18
+ # * 'ExpressionAttributeValues'<~Hash> - values to be used in the update expression
19
19
  # * 'ReturnValues'<~String> - data to return in %w{ALL_NEW ALL_OLD NONE UPDATED_NEW UPDATED_OLD}, defaults to NONE
20
20
  #
21
21
  # ==== Returns
@@ -29,13 +29,14 @@ module Fog
29
29
  if deprecated_attribute_updates
30
30
  raise DeprecatedAttributeUpdates, "The `20111205` DynamoDB API is deprecated. You need to use `ExpressionAttributeValues` instead of `AttributeUpdates`."
31
31
  attribute_updates = options
32
- options = deprecated_attribute_updates
32
+ options = deprecated_attribute_updates.merge(
33
+ 'AttributeUpdates' => attribute_updates,
34
+ )
33
35
  end
34
36
 
35
37
  body = {
36
38
  'Key' => key,
37
39
  'TableName' => table_name,
38
- 'AttributeUpdates' => attribute_updates,
39
40
  }.merge(options)
40
41
 
41
42
  request(
@@ -7,17 +7,27 @@ module Fog
7
7
  # ==== Parameters
8
8
  # * CreationToken <~String> - String of up to 64 ASCII characters. Amazon EFS uses this to ensure idempotent creation.
9
9
  # * PerformanceMode <~String> - (Optional) The PerformanceMode of the file system. We recommend generalPurpose performance mode for most file systems. File systems using the maxIO performance mode can scale to higher levels of aggregate throughput and operations per second with a tradeoff of slightly higher latencies for most file operations. This can't be changed after the file system has been created.
10
+ # * Encrypted <~Boolean> - (Optional) A Boolean value that, if true, creates an encrypted file system. When creating an encrypted file system, you have the option of specifying a CreateFileSystem:KmsKeyId for an existing AWS Key Management Service (AWS KMS) customer master key (CMK). If you don't specify a CMK, then the default CMK for Amazon EFS, /aws/elasticfilesystem, is used to protect the encrypted file system.
11
+ # * KmsKeyId <~String> - (Optional) The ID of the AWS KMS CMK to be used to protect the encrypted file system. This parameter is only required if you want to use a non-default CMK. If this parameter is not specified, the default CMK for Amazon EFS is used. This ID can be in one of the following formats:
12
+ # - Key ID - A unique identifier of the key, for example, 1234abcd-12ab-34cd-56ef-1234567890ab.
13
+ # - ARN - An Amazon Resource Name (ARN) for the key, for example, arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.
14
+ # - Key alias - A previously created display name for a key. For example, alias/projectKey1.
15
+ # - Key alias ARN - An ARN for a key alias, for example, arn:aws:kms:us-west-2:444455556666:alias/projectKey1.
16
+ # If KmsKeyId is specified, the CreateFileSystem:Encrypted parameter must be set to true.
10
17
  # ==== Returns
11
18
  # * response<~Excon::Response>
12
19
  # * body<~Hash>
13
20
  def create_file_system(creation_token, options={})
14
- request({
21
+ params = {
15
22
  :path => "file-systems",
16
23
  :method => 'POST',
17
24
  :expects => 201,
18
25
  'CreationToken' => creation_token,
19
- 'PerformanceMode' => options[:peformance_mode] || 'generalPurpose'
20
- })
26
+ 'PerformanceMode' => options[:peformance_mode] || 'generalPurpose',
27
+ 'Encrypted' => options[:encrypted] || false
28
+ }
29
+ params[:kms_key_id] = options[:kms_key_id] if options.key?(:kms_key_id)
30
+ request(params)
21
31
  end
22
32
  end
23
33
 
@@ -30,6 +40,7 @@ module Fog
30
40
  "OwnerId" => Fog::AWS::Mock.owner_id,
31
41
  "CreationToken" => creation_token,
32
42
  "PerformanceMode" => options[:performance_mode] || "generalPurpose",
43
+ "Encrypted" => options[:encrypted] || false,
33
44
  "FileSystemId" => id,
34
45
  "CreationTime" => Time.now.to_i.to_f,
35
46
  "LifeCycleState" => "creating",
@@ -39,6 +50,7 @@ module Fog
39
50
  "Timestamp" => Time.now.to_i.to_f
40
51
  }
41
52
  }
53
+ file_system[:kms_key_id] = options[:kms_key_id] if options.key?(:kms_key_id)
42
54
 
43
55
  self.data[:file_systems][id] = file_system
44
56
  response.body = file_system
@@ -80,7 +80,7 @@ module Fog
80
80
  elsif subnet_ids.any?
81
81
  # using Hash here for Rubt 1.8.7 support.
82
82
  Hash[
83
- Fog::Compute::AWS::Mock.data.select do |_, region_data|
83
+ Fog::AWS::Compute::Mock.data.select do |_, region_data|
84
84
  region_data[@aws_access_key_id][:subnets].any? do |region_subnets|
85
85
  subnet_ids.include? region_subnets['subnetId']
86
86
  end
@@ -89,8 +89,8 @@ module Fog
89
89
  else
90
90
  'us-east-1'
91
91
  end
92
- supported_platforms = Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:account_attributes].find { |h| h["attributeName"] == "supported-platforms" }["values"]
93
- subnets = Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:subnets].select {|e| subnet_ids.include?(e["subnetId"]) }
92
+ supported_platforms = Fog::AWS::Compute::Mock.data[region][@aws_access_key_id][:account_attributes].find { |h| h["attributeName"] == "supported-platforms" }["values"]
93
+ subnets = Fog::AWS::Compute::Mock.data[region][@aws_access_key_id][:subnets].select {|e| subnet_ids.include?(e["subnetId"]) }
94
94
 
95
95
  # http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/default-vpc.html
96
96
  elb_location = if supported_platforms.include?("EC2")
@@ -109,21 +109,21 @@ module Fog
109
109
 
110
110
  security_group = case elb_location
111
111
  when 'EC2-Classic'
112
- Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups]['amazon-elb-sg']
112
+ Fog::AWS::Compute::Mock.data[region][@aws_access_key_id][:security_groups]['amazon-elb-sg']
113
113
  when 'EC2-VPC-Default'
114
- compute = Fog::Compute::AWS::new(:aws_access_key_id => @aws_access_key_id, :aws_secret_access_key => @aws_secret_access_key)
114
+ compute = Fog::AWS::Compute::new(:aws_access_key_id => @aws_access_key_id, :aws_secret_access_key => @aws_secret_access_key)
115
115
 
116
116
  vpc = compute.vpcs.all.first ||
117
117
  compute.vpcs.create('cidr_block' => '10.0.0.0/24')
118
118
 
119
- Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups].values.find { |sg|
119
+ Fog::AWS::Compute::Mock.data[region][@aws_access_key_id][:security_groups].values.find { |sg|
120
120
  sg['groupName'] =~ /^default_elb/ &&
121
121
  sg["vpcId"] == vpc.id
122
122
  }
123
123
  when 'EC2-VPC'
124
124
  vpc_id = subnets.first["vpcId"]
125
125
 
126
- Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups].values.find { |sg|
126
+ Fog::AWS::Compute::Mock.data[region][@aws_access_key_id][:security_groups].values.find { |sg|
127
127
  sg['groupName'] == 'default' &&
128
128
  sg["vpcId"] == vpc_id
129
129
  }
@@ -35,7 +35,7 @@ module Fog
35
35
  raise Fog::AWS::ELB::NotFound unless load_balancer = self.data[:load_balancers][lb_name]
36
36
  instance_ids = [*instance_ids]
37
37
  instance_ids.each do |instance|
38
- raise Fog::AWS::ELB::InvalidInstance unless Fog::Compute::AWS::Mock.data[@region][@aws_access_key_id][:instances][instance]
38
+ raise Fog::AWS::ELB::InvalidInstance unless Fog::AWS::Compute::Mock.data[@region][@aws_access_key_id][:instances][instance]
39
39
  end
40
40
 
41
41
  response = Excon::Response.new
@@ -38,7 +38,7 @@ module Fog
38
38
  instance_ids = [*instance_ids]
39
39
  instance_ids = load_balancer['Instances'].map { |i| i['InstanceId'] } unless instance_ids.any?
40
40
  data = instance_ids.map do |id|
41
- unless Fog::Compute::AWS::Mock.data[@region][@aws_access_key_id][:instances][id]
41
+ unless Fog::AWS::Compute::Mock.data[@region][@aws_access_key_id][:instances][id]
42
42
  raise Fog::AWS::ELB::InvalidInstance
43
43
  end
44
44
 
@@ -24,7 +24,7 @@ module Fog
24
24
  # request({
25
25
  # 'Action' => 'DescribeTags',
26
26
  # :idempotent => true,
27
- # :parser => Fog::Parsers::Compute::AWS::DescribeTags.new
27
+ # :parser => Fog::Parsers::AWS::Compute::DescribeTags.new
28
28
  # }.merge!(params))
29
29
  # end
30
30
 
@@ -35,7 +35,7 @@ module Fog
35
35
  raise Fog::AWS::ELB::NotFound unless load_balancer = self.data[:load_balancers][lb_name]
36
36
  instance_ids = [*instance_ids]
37
37
  instances = instance_ids.map do |instance|
38
- raise Fog::AWS::ELB::InvalidInstance unless Fog::Compute::AWS::Mock.data[@region][@aws_access_key_id][:instances][instance]
38
+ raise Fog::AWS::ELB::InvalidInstance unless Fog::AWS::Compute::Mock.data[@region][@aws_access_key_id][:instances][instance]
39
39
  {'InstanceId' => instance}
40
40
  end
41
41
 
@@ -0,0 +1,45 @@
1
+ module Fog
2
+ module AWS
3
+ class ELBV2
4
+ class Real
5
+ require 'fog/aws/parsers/elbv2/empty'
6
+
7
+ # adds tags to a load balancer instance
8
+ # http://docs.aws.amazon.com/ElasticLoadBalancing/latest/APIReference/API_AddTags.html
9
+ # ==== Parameters
10
+ # * resource_arn <~String> - The Amazon Resource Name (ARN) of the resource
11
+ # * tags <~Hash> A Hash of (String) key-value pairs
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ def add_tags(resource_arn, tags)
16
+ keys = tags.keys.sort
17
+ values = keys.map {|key| tags[key]}
18
+ request({
19
+ 'Action' => 'AddTags',
20
+ 'ResourceArns.member.1' => resource_arn,
21
+ :parser => Fog::Parsers::AWS::ELBV2::Empty.new,
22
+ }.merge(Fog::AWS.indexed_param('Tags.member.%d.Key', keys))
23
+ .merge(Fog::AWS.indexed_param('Tags.member.%d.Value', values)))
24
+ end
25
+
26
+ end
27
+
28
+ class Mock
29
+ def add_tags(resource_arn, tags)
30
+ response = Excon::Response.new
31
+ if self.data[:load_balancers_v2][resource_arn]
32
+ self.data[:tags][resource_arn].merge! tags
33
+ response.status = 200
34
+ response.body = {
35
+ "ResponseMetadata"=>{ "RequestId"=> Fog::AWS::Mock.request_id }
36
+ }
37
+ response
38
+ else
39
+ raise Fog::AWS::ELBV2::NotFound.new("Elastic load balancer #{resource_arn} not found")
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,160 @@
1
+ module Fog
2
+ module AWS
3
+ class ELBV2
4
+ class Real
5
+ require 'fog/aws/parsers/elbv2/create_load_balancer'
6
+
7
+ # Create a new Elastic Load Balancer
8
+ #
9
+ # ==== Parameters
10
+ # * name<~String> - The name of the load balancer.
11
+ # This name must be unique per region per account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens,
12
+ # must not begin or end with a hyphen, and must not begin with "internal-".
13
+ # - Required: Yes
14
+ # * options<~Hash>:
15
+ # * ip_address_type<~String> - [Application Load Balancers] The type of IP addresses used by the subnets for your load balancer.
16
+ # The possible values are ipv4 (for IPv4 addresses) and dualstack (for IPv4 and IPv6 addresses).
17
+ # Internal load balancers must use ipv4.
18
+ # - Required: No
19
+ # * scheme<~String> - The default is an Internet-facing load balancer. Valid Values: internet-facing | internal
20
+ # - Required: No
21
+ # * security_groups<~Array> - The IDs of the security groups for the load balancer.
22
+ # - Required: No
23
+ # * subnet_mappings<~Array> - The IDs of the public subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings.
24
+ # - [Application Load Balancers] You must specify subnets from at least two Availability Zones.
25
+ # You cannot specify Elastic IP addresses for your subnets.
26
+ # - [Network Load Balancers] You can specify subnets from one or more Availability Zones.
27
+ # You can specify one Elastic IP address per subnet if you need static IP addresses for your internet-facing load balancer.
28
+ # For internal load balancers, you can specify one private IP address per subnet from the IPv4 range of the subnet.
29
+ # - Required: No
30
+ # * subnets<~Array> - The IDs of the public subnets. You can specify only one subnet per Availability Zone. You must specify either subnets or subnet mappings.
31
+ # - [Application Load Balancers] You must specify subnets from at least two Availability Zones.
32
+ # - [Network Load Balancers] You can specify subnets from one or more Availability Zones.
33
+ # - Required: No
34
+ # * tags<~Hash> - One or more tags to assign to the load balancer.
35
+ # - Required: No
36
+ # * type<~String> - The type of load balancer. The default is application. Valid Values: application | network
37
+ # - Required: No
38
+ # ==== Returns
39
+ # * response<~Excon::Response>:
40
+ # * body<~Hash>:
41
+ # * 'ResponseMetadata'<~Hash>:
42
+ # * 'RequestId'<~String> - Id of request
43
+ # * 'CreateLoadBalancerResult'<~Hash>:
44
+ # * 'LoadBalancers'<~Array>
45
+ # * 'AvailabilityZones'<~Array>:
46
+ # * 'SubnetId'<~String> - ID of the subnet
47
+ # * 'ZoneName'<~String> - Name of the Availability Zone
48
+ # * 'LoadBalancerAddresses'<~Array>:
49
+ # * 'IpAddress'<~String> - IP address
50
+ # * 'AllocationId'<~String> - ID of the AWS allocation
51
+ # * 'CanonicalHostedZoneName'<~String> - name of the Route 53 hosted zone associated with the load balancer
52
+ # * 'CanonicalHostedZoneNameID'<~String> - ID of the Route 53 hosted zone associated with the load balancer
53
+ # * 'CreatedTime'<~Time> - time load balancer was created
54
+ # * 'DNSName'<~String> - external DNS name of load balancer
55
+ # * 'LoadBalancerName'<~String> - name of load balancer
56
+ # * 'SecurityGroups'<~Array> - array of security group id
57
+ def create_load_balancer(name, options = {})
58
+ params = {}
59
+ params.merge!(Fog::AWS.indexed_param('Subnets.member.%d', options[:subnets]))
60
+ params.merge!(Fog::AWS.indexed_param('SecurityGroups.member.%d', options[:security_groups]))
61
+ params.merge!(Fog::AWS.serialize_keys('Scheme', options[:scheme]))
62
+ params.merge!(Fog::AWS.serialize_keys('Type', options[:type]))
63
+ params.merge!(Fog::AWS.serialize_keys('IpAddressType', options[:ip_address_type]))
64
+
65
+
66
+ unless options[:tags].nil?
67
+ tag_keys = options[:tags].keys.sort
68
+ tag_values = tag_keys.map { |key| options[:tags][key] }
69
+ params.merge!(Fog::AWS.indexed_param('Tags.member.%d.Key', tag_keys))
70
+ params.merge!(Fog::AWS.indexed_param('Tags.member.%d.Value', tag_values))
71
+ end
72
+
73
+ unless options[:subnet_mappings].nil?
74
+ subnet_ids = []
75
+ allocation_ids = []
76
+ private_ipv4_address = []
77
+ options[:subnet_mappings].each do |subnet_mapping|
78
+ subnet_ids.push(subnet_mapping[:subnet_id])
79
+ allocation_ids.push(subnet_mapping[:allocation_id])
80
+ private_ipv4_address.push(subnet_mapping[:private_ipv4_address])
81
+ end
82
+ params.merge!(Fog::AWS.indexed_param('SubnetMappings.member.%d.SubnetId', subnet_ids))
83
+ params.merge!(Fog::AWS.indexed_param('SubnetMappings.member.%d.AllocationId', allocation_ids))
84
+ params.merge!(Fog::AWS.indexed_param('SubnetMappings.member.%d.PrivateIPv4Address', private_ipv4_address))
85
+ end
86
+
87
+
88
+ request({
89
+ 'Action' => 'CreateLoadBalancer',
90
+ 'Name' => name,
91
+ :parser => Fog::Parsers::AWS::ELBV2::CreateLoadBalancer.new
92
+ }.merge!(params))
93
+ end
94
+ end
95
+
96
+ class Mock
97
+ def create_load_balancer(name, options = {})
98
+ response = Excon::Response.new
99
+ response.status = 200
100
+
101
+ raise Fog::AWS::ELBV2::IdentifierTaken if self.data[:load_balancers_v2].key? name
102
+
103
+ dns_name = Fog::AWS::ELBV2::Mock.dns_name(name, @region)
104
+ type = options[:type] || 'application'
105
+ load_balancer_arn = Fog::AWS::Mock.arn('elasticloadbalancing', self.data[:owner_id], "loadbalancer/#{type[0..2]}/#{name}/#{Fog::AWS::Mock.key_id}")
106
+
107
+ subnet_ids = options[:subnets] || []
108
+ region = if subnet_ids.any?
109
+ # using Hash here for Rubt 1.8.7 support.
110
+ Hash[
111
+ Fog::AWS::Compute::Mock.data.select do |_, region_data|
112
+ unless region_data[@aws_access_key_id].nil?
113
+ region_data[@aws_access_key_id][:subnets].any? do |region_subnets|
114
+ subnet_ids.include? region_subnets['subnetId']
115
+ end
116
+ end
117
+ end
118
+ ].keys[0]
119
+ else
120
+ 'us-east-1'
121
+ end
122
+
123
+ subnets = Fog::AWS::Compute::Mock.data[region][@aws_access_key_id][:subnets].select {|e| subnet_ids.include?(e["subnetId"]) }
124
+ availability_zones = subnets.map do |subnet|
125
+ { "LoadBalancerAddresses"=>[], "SubnetId"=>subnet["subnetId"], "ZoneName"=>subnet["availabilityZone"]}
126
+ end
127
+ vpc_id = subnets.first['vpcId']
128
+
129
+ self.data[:tags] ||= {}
130
+ self.data[:tags][load_balancer_arn] = options[:tags] || {}
131
+
132
+ load_balancer = {
133
+ 'AvailabilityZones' => availability_zones || [],
134
+ 'Scheme' => options[:scheme] || 'internet-facing',
135
+ 'SecurityGroups' => options[:security_groups] || [],
136
+ 'CanonicalHostedZoneId' => '',
137
+ 'CreatedTime' => Time.now,
138
+ 'DNSName' => dns_name,
139
+ 'VpcId' => vpc_id,
140
+ 'Type' => type,
141
+ 'State' => {'Code' => 'provisioning'},
142
+ 'LoadBalancerArn' => load_balancer_arn,
143
+ 'LoadBalancerName' => name
144
+ }
145
+ self.data[:load_balancers_v2][load_balancer_arn] = load_balancer
146
+ response.body = {
147
+ 'ResponseMetadata' => {
148
+ 'RequestId' => Fog::AWS::Mock.request_id
149
+ },
150
+ 'CreateLoadBalancerResult' => {
151
+ 'LoadBalancers' => [load_balancer]
152
+ }
153
+ }
154
+
155
+ response
156
+ end
157
+ end
158
+ end
159
+ end
160
+ end
@@ -0,0 +1,38 @@
1
+ module Fog
2
+ module AWS
3
+ class ELBV2
4
+ class Real
5
+ require 'fog/aws/parsers/elbv2/describe_listeners'
6
+
7
+ # Describe all or specified load balancers
8
+ #
9
+ # ==== Parameters
10
+ # * 'LoadBalancerArn'<~String> - The Amazon Resource Name (ARN) of the load balancer
11
+ # * options<~Hash>
12
+ # * 'Marker'<String> - Indicates where to begin in your list of load balancers
13
+ #
14
+ # ==== Returns
15
+ # * response<~Excon::Response>:
16
+ # * body<~Hash>:
17
+ # * 'ResponseMetadata'<~Hash>:
18
+ # * 'RequestId'<~String> - Id of request
19
+ # * 'DescribeListenersResult'<~Hash>:
20
+ # * 'Listeners'<~Array>
21
+ # * 'LoadBalancerArn'<~String> - The Amazon Resource Name (ARN) of the load balancer
22
+ # * 'Protocol'<~String> - The protocol for connections from clients to the load balancer
23
+ # * 'Port'<~String> - The port on which the load balancer is listening
24
+ # * 'DefaultActions'<~Array> - The default actions for the listener
25
+ # * 'Type'<~String> - The type of action
26
+ # * 'TargetGroupArn'<~String> - The Amazon Resource Name (ARN) of the target group. Specify only when Type is forward
27
+ # * 'NextMarker'<~String> - Marker to specify for next page
28
+ def describe_listeners(load_balancer_arn, options = {})
29
+ request({
30
+ 'Action' => 'DescribeListeners',
31
+ 'LoadBalancerArn' => load_balancer_arn,
32
+ :parser => Fog::Parsers::AWS::ELBV2::DescribeListeners.new
33
+ }.merge!(options))
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,100 @@
1
+ module Fog
2
+ module AWS
3
+ class ELBV2
4
+ class Real
5
+ require 'fog/aws/parsers/elbv2/describe_load_balancers'
6
+
7
+ # Describe all or specified load balancers
8
+ #
9
+ # ==== Parameters
10
+ # * options<~Hash>
11
+ # * 'LoadBalancerNames'<~Array> - List of load balancer names to describe, defaults to all
12
+ # * 'Marker'<String> - Indicates where to begin in your list of load balancers
13
+ #
14
+ # ==== Returns
15
+ # * response<~Excon::Response>:
16
+ # * body<~Hash>:
17
+ # * 'ResponseMetadata'<~Hash>:
18
+ # * 'RequestId'<~String> - Id of request
19
+ # * 'DescribeLoadBalancersResult'<~Hash>:
20
+ # * 'LoadBalancers'<~Array>
21
+ # * 'AvailabilityZones'<~Array>:
22
+ # * 'SubnetId'<~String> - ID of the subnet
23
+ # * 'ZoneName'<~String> - Name of the Availability Zone
24
+ # * 'LoadBalancerAddresses'<~Array>:
25
+ # * 'IpAddress'<~String> - IP address
26
+ # * 'AllocationId'<~String> - ID of the AWS allocation
27
+ # * 'CanonicalHostedZoneName'<~String> - name of the Route 53 hosted zone associated with the load balancer
28
+ # * 'CanonicalHostedZoneNameID'<~String> - ID of the Route 53 hosted zone associated with the load balancer
29
+ # * 'CreatedTime'<~Time> - time load balancer was created
30
+ # * 'DNSName'<~String> - external DNS name of load balancer
31
+ # * 'LoadBalancerName'<~String> - name of load balancer
32
+ # * 'SecurityGroups'<~Array> - array of security group id
33
+ # * 'NextMarker'<~String> - Marker to specify for next page
34
+ def describe_load_balancers(options = {})
35
+ unless options.is_a?(Hash)
36
+ Fog::Logger.deprecation("describe_load_balancers with #{options.class} is deprecated, use all('LoadBalancerNames' => []) instead [light_black](#{caller.first})[/]")
37
+ options = { 'LoadBalancerNames' => [options].flatten }
38
+ end
39
+
40
+ if names = options.delete('LoadBalancerNames')
41
+ options.update(Fog::AWS.indexed_param('LoadBalancerNames.member', [*names]))
42
+ end
43
+
44
+ request({
45
+ 'Action' => 'DescribeLoadBalancers',
46
+ :parser => Fog::Parsers::AWS::ELBV2::DescribeLoadBalancers.new
47
+ }.merge!(options))
48
+ end
49
+ end
50
+
51
+ class Mock
52
+ def describe_load_balancers(options = {})
53
+ unless options.is_a?(Hash)
54
+ Fog::Logger.deprecation("describe_load_balancers with #{options.class} is deprecated, use all('LoadBalancerNames' => []) instead [light_black](#{caller.first})[/]")
55
+ options = { 'LoadBalancerNames' => [options].flatten }
56
+ end
57
+
58
+ lb_names = options['LoadBalancerNames'] || []
59
+
60
+ lb_names = [*lb_names]
61
+ load_balancers = if lb_names.any?
62
+ lb_names.map do |lb_name|
63
+ lb = self.data[:load_balancers_v2].find { |name, data| name == lb_name }
64
+ raise Fog::AWS::ELBV2::NotFound unless lb
65
+ lb[1].dup
66
+ end.compact
67
+ else
68
+ self.data[:load_balancers_v2].map { |lb, values| values.dup }
69
+ end
70
+
71
+ marker = options.fetch('Marker', 0).to_i
72
+ if load_balancers.count - marker > 400
73
+ next_marker = marker + 400
74
+ load_balancers = load_balancers[marker...next_marker]
75
+ else
76
+ next_marker = nil
77
+ end
78
+
79
+ response = Excon::Response.new
80
+ response.status = 200
81
+
82
+ response.body = {
83
+ 'ResponseMetadata' => {
84
+ 'RequestId' => Fog::AWS::Mock.request_id
85
+ },
86
+ 'DescribeLoadBalancersResult' => {
87
+ 'LoadBalancers' => load_balancers
88
+ }
89
+ }
90
+
91
+ if next_marker
92
+ response.body['DescribeLoadBalancersResult']['NextMarker'] = next_marker.to_s
93
+ end
94
+
95
+ response
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end