fog-aws 3.5.0 → 3.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -765
  3. data/LICENSE.md +1 -1
  4. data/README.md +117 -7
  5. data/fog-aws.gemspec +14 -11
  6. data/lib/fog/aws/auto_scaling.rb +1 -1
  7. data/lib/fog/aws/beanstalk.rb +1 -1
  8. data/lib/fog/aws/cdn.rb +1 -1
  9. data/lib/fog/aws/cloud_formation.rb +1 -1
  10. data/lib/fog/aws/cloud_watch.rb +1 -1
  11. data/lib/fog/aws/compute.rb +8 -5
  12. data/lib/fog/aws/credential_fetcher.rb +89 -7
  13. data/lib/fog/aws/data_pipeline.rb +1 -1
  14. data/lib/fog/aws/dns.rb +137 -1
  15. data/lib/fog/aws/dynamodb.rb +1 -1
  16. data/lib/fog/aws/ecs.rb +1 -1
  17. data/lib/fog/aws/elasticache.rb +6 -4
  18. data/lib/fog/aws/elb.rb +2 -2
  19. data/lib/fog/aws/elbv2.rb +72 -0
  20. data/lib/fog/aws/emr.rb +1 -1
  21. data/lib/fog/aws/glacier.rb +84 -22
  22. data/lib/fog/aws/iam.rb +1 -1
  23. data/lib/fog/aws/kinesis.rb +24 -16
  24. data/lib/fog/aws/kms.rb +1 -1
  25. data/lib/fog/aws/lambda.rb +1 -1
  26. data/lib/fog/aws/models/compute/dhcp_option.rb +1 -1
  27. data/lib/fog/aws/models/compute/flavors.rb +3803 -531
  28. data/lib/fog/aws/models/compute/network_interfaces.rb +1 -1
  29. data/lib/fog/aws/models/compute/security_group.rb +13 -5
  30. data/lib/fog/aws/models/compute/server.rb +6 -2
  31. data/lib/fog/aws/models/compute/servers.rb +2 -0
  32. data/lib/fog/aws/models/compute/snapshot.rb +7 -6
  33. data/lib/fog/aws/models/compute/vpc.rb +8 -2
  34. data/lib/fog/aws/models/elasticache/cluster.rb +1 -1
  35. data/lib/fog/aws/models/storage/directories.rb +1 -0
  36. data/lib/fog/aws/models/storage/directory.rb +0 -1
  37. data/lib/fog/aws/models/storage/file.rb +168 -23
  38. data/lib/fog/aws/models/storage/files.rb +33 -2
  39. data/lib/fog/aws/parsers/compute/create_snapshot.rb +1 -1
  40. data/lib/fog/aws/parsers/compute/create_subnet.rb +33 -6
  41. data/lib/fog/aws/parsers/compute/describe_security_groups.rb +18 -4
  42. data/lib/fog/aws/parsers/compute/describe_subnets.rb +33 -6
  43. data/lib/fog/aws/parsers/dns/create_hosted_zone.rb +1 -1
  44. data/lib/fog/aws/parsers/dns/get_hosted_zone.rb +3 -3
  45. data/lib/fog/aws/parsers/dns/list_hosted_zones.rb +3 -1
  46. data/lib/fog/aws/parsers/elbv2/create_load_balancer.rb +88 -0
  47. data/lib/fog/aws/parsers/elbv2/describe_listeners.rb +110 -0
  48. data/lib/fog/aws/parsers/elbv2/describe_load_balancers.rb +88 -0
  49. data/lib/fog/aws/parsers/elbv2/describe_tags.rb +53 -0
  50. data/lib/fog/aws/parsers/elbv2/empty.rb +10 -0
  51. data/lib/fog/aws/parsers/iam/get_group_policy.rb +1 -1
  52. data/lib/fog/aws/parsers/iam/get_role_policy.rb +1 -1
  53. data/lib/fog/aws/parsers/iam/get_user_policy.rb +1 -1
  54. data/lib/fog/aws/parsers/iam/list_server_certificates.rb +1 -1
  55. data/lib/fog/aws/parsers/iam/policy_version.rb +1 -1
  56. data/lib/fog/aws/parsers/rds/db_cluster_parser.rb +1 -1
  57. data/lib/fog/aws/parsers/rds/db_parser.rb +1 -1
  58. data/lib/fog/aws/parsers/rds/modify_db_subnet_group.rb +1 -1
  59. data/lib/fog/aws/parsers/redshift/cluster_subnet_group_parser.rb +1 -1
  60. data/lib/fog/aws/parsers/storage/get_object_tagging.rb +33 -0
  61. data/lib/fog/aws/parsers/storage/upload_part_copy_object.rb +18 -0
  62. data/lib/fog/aws/parsers/sts/assume_role_with_web_identity.rb +1 -1
  63. data/lib/fog/aws/rds.rb +1 -1
  64. data/lib/fog/aws/redshift.rb +1 -1
  65. data/lib/fog/aws/requests/auto_scaling/attach_load_balancer_target_groups.rb +1 -1
  66. data/lib/fog/aws/requests/auto_scaling/describe_scaling_activities.rb +1 -1
  67. data/lib/fog/aws/requests/auto_scaling/put_scheduled_update_group_action.rb +1 -1
  68. data/lib/fog/aws/requests/cloud_formation/create_change_set.rb +1 -1
  69. data/lib/fog/aws/requests/cloud_formation/create_stack.rb +1 -1
  70. data/lib/fog/aws/requests/cloud_formation/get_template_summary.rb +1 -1
  71. data/lib/fog/aws/requests/cloud_formation/update_stack.rb +1 -1
  72. data/lib/fog/aws/requests/cloud_watch/list_metrics.rb +1 -1
  73. data/lib/fog/aws/requests/compute/authorize_security_group_egress.rb +1 -1
  74. data/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb +16 -1
  75. data/lib/fog/aws/requests/compute/create_network_interface.rb +8 -5
  76. data/lib/fog/aws/requests/compute/create_subnet.rb +3 -3
  77. data/lib/fog/aws/requests/compute/create_vpc.rb +3 -3
  78. data/lib/fog/aws/requests/compute/describe_network_interfaces.rb +2 -2
  79. data/lib/fog/aws/requests/compute/describe_security_groups.rb +2 -0
  80. data/lib/fog/aws/requests/compute/modify_network_interface_attribute.rb +1 -1
  81. data/lib/fog/aws/requests/compute/modify_volume.rb +1 -1
  82. data/lib/fog/aws/requests/compute/request_spot_instances.rb +1 -1
  83. data/lib/fog/aws/requests/compute/revoke_security_group_egress.rb +1 -1
  84. data/lib/fog/aws/requests/compute/revoke_security_group_ingress.rb +1 -1
  85. data/lib/fog/aws/requests/compute/run_instances.rb +64 -0
  86. data/lib/fog/aws/requests/compute/stop_instances.rb +11 -3
  87. data/lib/fog/aws/requests/data_pipeline/deactivate_pipeline.rb +1 -1
  88. data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +0 -133
  89. data/lib/fog/aws/requests/ecs/list_task_definitions.rb +1 -1
  90. data/lib/fog/aws/requests/efs/create_file_system.rb +1 -1
  91. data/lib/fog/aws/requests/elasticache/authorize_cache_security_group_ingress.rb +1 -1
  92. data/lib/fog/aws/requests/elasticache/create_cache_cluster.rb +2 -2
  93. data/lib/fog/aws/requests/elasticache/describe_engine_default_parameters.rb +1 -1
  94. data/lib/fog/aws/requests/elb/delete_load_balancer_listeners.rb +1 -1
  95. data/lib/fog/aws/requests/elbv2/add_tags.rb +45 -0
  96. data/lib/fog/aws/requests/elbv2/create_load_balancer.rb +160 -0
  97. data/lib/fog/aws/requests/elbv2/describe_listeners.rb +38 -0
  98. data/lib/fog/aws/requests/elbv2/describe_load_balancers.rb +100 -0
  99. data/lib/fog/aws/requests/elbv2/describe_tags.rb +50 -0
  100. data/lib/fog/aws/requests/elbv2/remove_tags.rb +45 -0
  101. data/lib/fog/aws/requests/glacier/initiate_job.rb +1 -1
  102. data/lib/fog/aws/requests/glacier/initiate_multipart_upload.rb +1 -1
  103. data/lib/fog/aws/requests/kinesis/list_streams.rb +1 -1
  104. data/lib/fog/aws/requests/lambda/invoke.rb +7 -7
  105. data/lib/fog/aws/requests/rds/add_tags_to_resource.rb +12 -10
  106. data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +2 -2
  107. data/lib/fog/aws/requests/rds/create_db_cluster.rb +1 -1
  108. data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +1 -1
  109. data/lib/fog/aws/requests/rds/list_tags_for_resource.rb +10 -7
  110. data/lib/fog/aws/requests/rds/modify_db_instance.rb +1 -1
  111. data/lib/fog/aws/requests/rds/modify_db_parameter_group.rb +1 -1
  112. data/lib/fog/aws/requests/rds/remove_tags_from_resource.rb +9 -8
  113. data/lib/fog/aws/requests/ses/send_raw_email.rb +1 -1
  114. data/lib/fog/aws/requests/sqs/change_message_visibility.rb +1 -1
  115. data/lib/fog/aws/requests/sqs/delete_message.rb +1 -1
  116. data/lib/fog/aws/requests/storage/copy_object.rb +2 -1
  117. data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +18 -8
  118. data/lib/fog/aws/requests/storage/get_bucket.rb +2 -2
  119. data/lib/fog/aws/requests/storage/get_bucket_object_versions.rb +2 -2
  120. data/lib/fog/aws/requests/storage/get_object.rb +1 -1
  121. data/lib/fog/aws/requests/storage/get_object_tagging.rb +41 -0
  122. data/lib/fog/aws/requests/storage/get_service.rb +1 -1
  123. data/lib/fog/aws/requests/storage/list_parts.rb +1 -1
  124. data/lib/fog/aws/requests/storage/put_bucket.rb +0 -4
  125. data/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb +1 -1
  126. data/lib/fog/aws/requests/storage/put_bucket_notification.rb +1 -1
  127. data/lib/fog/aws/requests/storage/put_object.rb +1 -1
  128. data/lib/fog/aws/requests/storage/put_object_tagging.rb +42 -0
  129. data/lib/fog/aws/requests/storage/shared_mock_methods.rb +2 -1
  130. data/lib/fog/aws/requests/storage/sync_clock.rb +9 -1
  131. data/lib/fog/aws/requests/storage/upload_part_copy.rb +119 -0
  132. data/lib/fog/aws/requests/sts/assume_role_with_web_identity.rb +7 -6
  133. data/lib/fog/aws/ses.rb +20 -17
  134. data/lib/fog/aws/signaturev4.rb +1 -1
  135. data/lib/fog/aws/simpledb.rb +1 -1
  136. data/lib/fog/aws/sns.rb +1 -1
  137. data/lib/fog/aws/sqs.rb +1 -1
  138. data/lib/fog/aws/storage.rb +78 -13
  139. data/lib/fog/aws/support.rb +1 -1
  140. data/lib/fog/aws/version.rb +1 -1
  141. data/lib/fog/aws.rb +11 -2
  142. metadata +49 -294
  143. data/.gitignore +0 -16
  144. data/.travis.yml +0 -53
  145. data/Gemfile +0 -14
  146. data/Rakefile +0 -14
  147. data/gemfiles/Gemfile-edge +0 -14
  148. data/gemfiles/Gemfile-ruby-2.0 +0 -7
  149. data/stale.yml +0 -17
  150. data/tests/credentials_tests.rb +0 -87
  151. data/tests/helper.rb +0 -29
  152. data/tests/helpers/collection_helper.rb +0 -90
  153. data/tests/helpers/compute/flavors_helper.rb +0 -28
  154. data/tests/helpers/compute/server_helper.rb +0 -23
  155. data/tests/helpers/compute/servers_helper.rb +0 -8
  156. data/tests/helpers/dns_helper.rb +0 -56
  157. data/tests/helpers/formats_helper.rb +0 -100
  158. data/tests/helpers/formats_helper_tests.rb +0 -107
  159. data/tests/helpers/mock_helper.rb +0 -109
  160. data/tests/helpers/model_helper.rb +0 -30
  161. data/tests/helpers/responds_to_helper.rb +0 -11
  162. data/tests/helpers/schema_validator_tests.rb +0 -104
  163. data/tests/helpers/succeeds_helper.rb +0 -9
  164. data/tests/lorem.txt +0 -1
  165. data/tests/models/auto_scaling/activities_tests.rb +0 -6
  166. data/tests/models/auto_scaling/configuration_test.rb +0 -13
  167. data/tests/models/auto_scaling/configurations_tests.rb +0 -11
  168. data/tests/models/auto_scaling/groups_test.rb +0 -27
  169. data/tests/models/auto_scaling/helper.rb +0 -0
  170. data/tests/models/auto_scaling/instance_tests.rb +0 -15
  171. data/tests/models/auto_scaling/instances_tests.rb +0 -6
  172. data/tests/models/beanstalk/application_tests.rb +0 -69
  173. data/tests/models/beanstalk/applications_tests.rb +0 -7
  174. data/tests/models/beanstalk/environment_tests.rb +0 -131
  175. data/tests/models/beanstalk/environments_tests.rb +0 -34
  176. data/tests/models/beanstalk/template_tests.rb +0 -47
  177. data/tests/models/beanstalk/templates_tests.rb +0 -62
  178. data/tests/models/beanstalk/version_tests.rb +0 -66
  179. data/tests/models/beanstalk/versions_tests.rb +0 -60
  180. data/tests/models/cdn/distribution_tests.rb +0 -15
  181. data/tests/models/cdn/distributions_tests.rb +0 -15
  182. data/tests/models/cdn/invalidation_tests.rb +0 -31
  183. data/tests/models/cdn/invalidations_tests.rb +0 -14
  184. data/tests/models/cdn/streaming_distribution_tests.rb +0 -15
  185. data/tests/models/cdn/streaming_distributions_tests.rb +0 -15
  186. data/tests/models/cloud_watch/alarm_data_tests.rb +0 -42
  187. data/tests/models/cloud_watch/alarm_history_tests.rb +0 -22
  188. data/tests/models/cloud_watch/metric_statistics_tests.rb +0 -51
  189. data/tests/models/cloud_watch/metrics_tests.rb +0 -32
  190. data/tests/models/compute/address_tests.rb +0 -43
  191. data/tests/models/compute/addresses_tests.rb +0 -5
  192. data/tests/models/compute/dhcp_option_tests.rb +0 -3
  193. data/tests/models/compute/dhcp_options_tests.rb +0 -3
  194. data/tests/models/compute/internet_gateway_tests.rb +0 -3
  195. data/tests/models/compute/internet_gateways_tests.rb +0 -3
  196. data/tests/models/compute/key_pair_tests.rb +0 -26
  197. data/tests/models/compute/key_pairs_tests.rb +0 -5
  198. data/tests/models/compute/network_acl_tests.rb +0 -109
  199. data/tests/models/compute/network_acls_tests.rb +0 -20
  200. data/tests/models/compute/network_interfaces_test.rb +0 -12
  201. data/tests/models/compute/security_group_tests.rb +0 -98
  202. data/tests/models/compute/security_groups_tests.rb +0 -5
  203. data/tests/models/compute/server_tests.rb +0 -94
  204. data/tests/models/compute/snapshot_tests.rb +0 -10
  205. data/tests/models/compute/snapshots_tests.rb +0 -10
  206. data/tests/models/compute/subnet_tests.rb +0 -13
  207. data/tests/models/compute/subnets_tests.rb +0 -5
  208. data/tests/models/compute/volume_tests.rb +0 -65
  209. data/tests/models/compute/volumes_tests.rb +0 -5
  210. data/tests/models/compute/vpc_tests.rb +0 -26
  211. data/tests/models/compute/vpcs_tests.rb +0 -19
  212. data/tests/models/data_pipeline/pipeline_tests.rb +0 -8
  213. data/tests/models/data_pipeline/pipelines_tests.rb +0 -8
  214. data/tests/models/dns/record_tests.rb +0 -33
  215. data/tests/models/dns/records_tests.rb +0 -41
  216. data/tests/models/dns/zone_tests.rb +0 -4
  217. data/tests/models/dns/zones_tests.rb +0 -4
  218. data/tests/models/efs/file_system_tests.rb +0 -12
  219. data/tests/models/efs/mount_target_tests.rb +0 -45
  220. data/tests/models/efs/mount_targets_tests.rb +0 -30
  221. data/tests/models/elasticache/cluster_tests.rb +0 -30
  222. data/tests/models/elasticache/parameter_groups_tests.rb +0 -15
  223. data/tests/models/elasticache/security_groups_tests.rb +0 -52
  224. data/tests/models/elasticache/subnet_groups_tests.rb +0 -43
  225. data/tests/models/elb/model_tests.rb +0 -360
  226. data/tests/models/elb/tagging_tests.rb +0 -15
  227. data/tests/models/glacier/model_tests.rb +0 -47
  228. data/tests/models/iam/access_keys_tests.rb +0 -53
  229. data/tests/models/iam/groups_tests.rb +0 -59
  230. data/tests/models/iam/instance_profile_tests.rb +0 -18
  231. data/tests/models/iam/managed_policies_tests.rb +0 -89
  232. data/tests/models/iam/policies_tests.rb +0 -57
  233. data/tests/models/iam/roles_tests.rb +0 -71
  234. data/tests/models/iam/users_tests.rb +0 -119
  235. data/tests/models/rds/cluster_tests.rb +0 -54
  236. data/tests/models/rds/clusters_tests.rb +0 -5
  237. data/tests/models/rds/event_subscription_tests.rb +0 -9
  238. data/tests/models/rds/event_subscriptions_tests.rb +0 -6
  239. data/tests/models/rds/helper.rb +0 -25
  240. data/tests/models/rds/instance_option_tests.rb +0 -14
  241. data/tests/models/rds/parameter_group_tests.rb +0 -24
  242. data/tests/models/rds/parameter_groups_tests.rb +0 -8
  243. data/tests/models/rds/security_group_tests.rb +0 -77
  244. data/tests/models/rds/security_groups_tests.rb +0 -5
  245. data/tests/models/rds/server_tests.rb +0 -131
  246. data/tests/models/rds/servers_tests.rb +0 -24
  247. data/tests/models/rds/snapshot_tests.rb +0 -12
  248. data/tests/models/rds/snapshots_tests.rb +0 -12
  249. data/tests/models/rds/tagging_tests.rb +0 -20
  250. data/tests/models/sns/topic_tests.rb +0 -15
  251. data/tests/models/sns/topics_tests.rb +0 -6
  252. data/tests/models/storage/directory_tests.rb +0 -91
  253. data/tests/models/storage/file_tests.rb +0 -129
  254. data/tests/models/storage/files_tests.rb +0 -58
  255. data/tests/models/storage/url_tests.rb +0 -25
  256. data/tests/models/storage/version_tests.rb +0 -52
  257. data/tests/models/storage/versions_tests.rb +0 -51
  258. data/tests/models/support/trusted_advisor_tests.rb +0 -25
  259. data/tests/parsers/compute/describe_images_tests.rb +0 -33
  260. data/tests/parsers/elb/describe_load_balancers.rb +0 -65
  261. data/tests/requests/auto_scaling/auto_scaling_tests.rb +0 -111
  262. data/tests/requests/auto_scaling/describe_types_tests.rb +0 -102
  263. data/tests/requests/auto_scaling/helper.rb +0 -229
  264. data/tests/requests/auto_scaling/model_tests.rb +0 -235
  265. data/tests/requests/auto_scaling/notification_configuration_tests.rb +0 -124
  266. data/tests/requests/auto_scaling/tag_tests.rb +0 -63
  267. data/tests/requests/beanstalk/application_tests.rb +0 -140
  268. data/tests/requests/beanstalk/solution_stack_tests.rb +0 -22
  269. data/tests/requests/cdn/cdn_tests.rb +0 -252
  270. data/tests/requests/cloud_formation/stack_tests.rb +0 -167
  271. data/tests/requests/cloud_watch/get_metric_statistics_tests.rb +0 -28
  272. data/tests/requests/cloud_watch/list_metrics_test.rb +0 -64
  273. data/tests/requests/cloud_watch/put_metric_data_tests.rb +0 -36
  274. data/tests/requests/compute/address_tests.rb +0 -144
  275. data/tests/requests/compute/assign_private_ip_tests.rb +0 -55
  276. data/tests/requests/compute/availability_zone_tests.rb +0 -25
  277. data/tests/requests/compute/client_tests.rb +0 -25
  278. data/tests/requests/compute/dhcp_options_tests.rb +0 -39
  279. data/tests/requests/compute/helper.rb +0 -27
  280. data/tests/requests/compute/image_tests.rb +0 -169
  281. data/tests/requests/compute/instance_attrib_tests.rb +0 -168
  282. data/tests/requests/compute/instance_tests.rb +0 -338
  283. data/tests/requests/compute/internet_gateway_tests.rb +0 -49
  284. data/tests/requests/compute/key_pair_tests.rb +0 -67
  285. data/tests/requests/compute/network_acl_tests.rb +0 -112
  286. data/tests/requests/compute/network_interface_tests.rb +0 -239
  287. data/tests/requests/compute/placement_group_tests.rb +0 -48
  288. data/tests/requests/compute/region_tests.rb +0 -52
  289. data/tests/requests/compute/route_tests.rb +0 -341
  290. data/tests/requests/compute/security_group_tests.rb +0 -446
  291. data/tests/requests/compute/snapshot_tests.rb +0 -77
  292. data/tests/requests/compute/spot_datafeed_subscription_tests.rb +0 -47
  293. data/tests/requests/compute/spot_instance_tests.rb +0 -55
  294. data/tests/requests/compute/spot_price_history_tests.rb +0 -23
  295. data/tests/requests/compute/subnet_tests.rb +0 -87
  296. data/tests/requests/compute/tag_tests.rb +0 -101
  297. data/tests/requests/compute/volume_tests.rb +0 -263
  298. data/tests/requests/compute/vpc_tests.rb +0 -216
  299. data/tests/requests/data_pipeline/helper.rb +0 -78
  300. data/tests/requests/data_pipeline/pipeline_tests.rb +0 -80
  301. data/tests/requests/dns/change_resource_record_sets_tests.rb +0 -34
  302. data/tests/requests/dns/dns_tests.rb +0 -240
  303. data/tests/requests/dns/health_check_tests.rb +0 -159
  304. data/tests/requests/dns/helper.rb +0 -21
  305. data/tests/requests/dynamodb/item_tests.rb +0 -137
  306. data/tests/requests/dynamodb/table_tests.rb +0 -99
  307. data/tests/requests/ecs/cluster_tests.rb +0 -112
  308. data/tests/requests/ecs/container_instance_tests.rb +0 -119
  309. data/tests/requests/ecs/helper.rb +0 -276
  310. data/tests/requests/ecs/sample_task_definition1.json +0 -56
  311. data/tests/requests/ecs/service_tests.rb +0 -132
  312. data/tests/requests/ecs/task_definitions_tests.rb +0 -97
  313. data/tests/requests/ecs/task_tests.rb +0 -145
  314. data/tests/requests/efs/file_system_tests.rb +0 -152
  315. data/tests/requests/efs/helper.rb +0 -44
  316. data/tests/requests/elasticache/cache_cluster_tests.rb +0 -137
  317. data/tests/requests/elasticache/describe_events.rb +0 -17
  318. data/tests/requests/elasticache/describe_reserved_cache_nodes.rb +0 -17
  319. data/tests/requests/elasticache/helper.rb +0 -103
  320. data/tests/requests/elasticache/parameter_group_tests.rb +0 -105
  321. data/tests/requests/elasticache/security_group_tests.rb +0 -108
  322. data/tests/requests/elasticache/subnet_group_tests.rb +0 -52
  323. data/tests/requests/elb/helper.rb +0 -91
  324. data/tests/requests/elb/listener_tests.rb +0 -68
  325. data/tests/requests/elb/load_balancer_tests.rb +0 -89
  326. data/tests/requests/elb/policy_tests.rb +0 -132
  327. data/tests/requests/emr/helper.rb +0 -167
  328. data/tests/requests/emr/instance_group_tests.rb +0 -106
  329. data/tests/requests/emr/job_flow_tests.rb +0 -88
  330. data/tests/requests/federation/get_signin_token_tests.rb +0 -11
  331. data/tests/requests/glacier/archive_tests.rb +0 -13
  332. data/tests/requests/glacier/multipart_upload_tests.rb +0 -29
  333. data/tests/requests/glacier/tree_hash_tests.rb +0 -62
  334. data/tests/requests/glacier/vault_tests.rb +0 -35
  335. data/tests/requests/iam/access_key_tests.rb +0 -53
  336. data/tests/requests/iam/account_policy_tests.rb +0 -20
  337. data/tests/requests/iam/account_tests.rb +0 -34
  338. data/tests/requests/iam/group_policy_tests.rb +0 -48
  339. data/tests/requests/iam/group_tests.rb +0 -44
  340. data/tests/requests/iam/helper.rb +0 -154
  341. data/tests/requests/iam/instance_profile_tests.rb +0 -44
  342. data/tests/requests/iam/login_profile_tests.rb +0 -62
  343. data/tests/requests/iam/managed_policy_tests.rb +0 -110
  344. data/tests/requests/iam/mfa_tests.rb +0 -23
  345. data/tests/requests/iam/role_tests.rb +0 -156
  346. data/tests/requests/iam/server_certificate_tests.rb +0 -130
  347. data/tests/requests/iam/user_policy_tests.rb +0 -45
  348. data/tests/requests/iam/user_tests.rb +0 -78
  349. data/tests/requests/iam/versioned_managed_policy_tests.rb +0 -105
  350. data/tests/requests/kinesis/helper.rb +0 -111
  351. data/tests/requests/kinesis/stream_tests.rb +0 -169
  352. data/tests/requests/kms/helper.rb +0 -27
  353. data/tests/requests/kms/key_tests.rb +0 -23
  354. data/tests/requests/lambda/function_sample_1.js +0 -9
  355. data/tests/requests/lambda/function_sample_2.js +0 -9
  356. data/tests/requests/lambda/function_tests.rb +0 -460
  357. data/tests/requests/lambda/helper.rb +0 -81
  358. data/tests/requests/rds/cluster_snapshot_tests.rb +0 -43
  359. data/tests/requests/rds/cluster_tests.rb +0 -37
  360. data/tests/requests/rds/db_engine_versions.rb +0 -7
  361. data/tests/requests/rds/db_snapshot_tests.rb +0 -62
  362. data/tests/requests/rds/describe_events.rb +0 -16
  363. data/tests/requests/rds/event_subscription_tests.rb +0 -30
  364. data/tests/requests/rds/helper.rb +0 -406
  365. data/tests/requests/rds/instance_option_tests.rb +0 -27
  366. data/tests/requests/rds/instance_tests.rb +0 -149
  367. data/tests/requests/rds/log_file_tests.rb +0 -19
  368. data/tests/requests/rds/parameter_group_tests.rb +0 -62
  369. data/tests/requests/rds/parameter_request_tests.rb +0 -32
  370. data/tests/requests/rds/security_group_tests.rb +0 -101
  371. data/tests/requests/rds/subnet_groups_tests.rb +0 -52
  372. data/tests/requests/rds/tagging_tests.rb +0 -78
  373. data/tests/requests/redshift/cluster_parameter_group_tests.rb +0 -76
  374. data/tests/requests/redshift/cluster_security_group_tests.rb +0 -42
  375. data/tests/requests/redshift/cluster_snapshot_tests.rb +0 -73
  376. data/tests/requests/redshift/cluster_tests.rb +0 -80
  377. data/tests/requests/ses/helper.rb +0 -9
  378. data/tests/requests/ses/verified_domain_identity_tests.rb +0 -16
  379. data/tests/requests/ses/verified_email_address_tests.rb +0 -27
  380. data/tests/requests/simpledb/attributes_tests.rb +0 -86
  381. data/tests/requests/simpledb/domain_tests.rb +0 -51
  382. data/tests/requests/simpledb/helper.rb +0 -10
  383. data/tests/requests/sns/helper.rb +0 -9
  384. data/tests/requests/sns/subscription_tests.rb +0 -86
  385. data/tests/requests/sns/topic_tests.rb +0 -53
  386. data/tests/requests/sqs/helper.rb +0 -9
  387. data/tests/requests/sqs/message_tests.rb +0 -51
  388. data/tests/requests/sqs/queue_tests.rb +0 -50
  389. data/tests/requests/storage/acl_utils_tests.rb +0 -209
  390. data/tests/requests/storage/bucket_tests.rb +0 -416
  391. data/tests/requests/storage/cors_utils_tests.rb +0 -108
  392. data/tests/requests/storage/delete_multiple_objects_tests.rb +0 -12
  393. data/tests/requests/storage/multipart_upload_tests.rb +0 -121
  394. data/tests/requests/storage/object_tests.rb +0 -262
  395. data/tests/requests/storage/versioning_tests.rb +0 -262
  396. data/tests/requests/sts/assume_role_tests.rb +0 -19
  397. data/tests/requests/sts/assume_role_with_saml_tests.rb +0 -18
  398. data/tests/requests/sts/assume_role_with_web_identity_tests.rb +0 -28
  399. data/tests/requests/sts/get_federation_token_tests.rb +0 -20
  400. data/tests/requests/sts/session_token_tests.rb +0 -16
  401. data/tests/requests/support/helper.rb +0 -43
  402. data/tests/requests/support/trusted_advisor_check_tests.rb +0 -16
  403. data/tests/signaturev4_tests.rb +0 -106
  404. data/tests/signed_params_tests.rb +0 -17
  405. data/tests/storage_tests.rb +0 -7
@@ -16,7 +16,7 @@ module Fog
16
16
  # * UsePreviousTemplate [Boolean] Reuse the template that is associated with the stack to create the change set.
17
17
  # * NotificationARNs [Array] List of SNS topics to publish events to.
18
18
  # * Parameters [Hash] Hash of providers to supply to template.
19
- # * Capabilities [Array] List of capabilties the stack is granted. Currently CAPABILITY_IAM for allowing the creation of IAM resources.
19
+ # * Capabilities [Array] List of capabilities the stack is granted. Currently CAPABILITY_IAM for allowing the creation of IAM resources.
20
20
  #
21
21
  # @return [Excon::Response]:
22
22
  # * body [Hash:
@@ -16,7 +16,7 @@ module Fog
16
16
  # * NotificationARNs [Array] List of SNS topics to publish events to.
17
17
  # * Parameters [Hash] Hash of providers to supply to template
18
18
  # * TimeoutInMinutes [Integer] Minutes to wait before status is set to CREATE_FAILED
19
- # * Capabilities [Array] List of capabilties the stack is granted. Currently CAPABILITY_IAM for allowing the creation of IAM resources
19
+ # * Capabilities [Array] List of capabilities the stack is granted. Currently CAPABILITY_IAM for allowing the creation of IAM resources
20
20
  # * StackPolicyBody [String] Structure containing the stack policy body.
21
21
  # * StackPolicyURL [String] URL of file containing the stack policy.
22
22
  # * Tags [Array] Key-value pairs to associate with this stack.
@@ -15,7 +15,7 @@ module Fog
15
15
  #
16
16
  # @return [Excon::Response]:
17
17
  # * body [Hash:
18
- # * Capabilities [Array] List of capabilties in the template.
18
+ # * Capabilities [Array] List of capabilities in the template.
19
19
  # * CapabilitiesReason [String] The list of resources that generated the values in the Capabilities response element.
20
20
  # * Description [String] Template Description.
21
21
  # * Metadata [String] Template Metadata.
@@ -12,7 +12,7 @@ module Fog
12
12
  # or (one of the two Template parameters is required)
13
13
  # * TemplateURL [String] URL of file containing the template body.
14
14
  # * Parameters [Hash] Hash of providers to supply to template.
15
- # * Capabilities [Array] List of capabilties the stack is granted. Currently CAPABILITY_IAM for allowing the creation of IAM resources.
15
+ # * Capabilities [Array] List of capabilities the stack is granted. Currently CAPABILITY_IAM for allowing the creation of IAM resources.
16
16
  # * NotificationARNs [Array] List of SNS topics to publish events to.
17
17
  # * ResourceTypes [Array] The template resource types that you have permissions to work.
18
18
  # * StackPolicyBody [String] Structure containing the stack policy body.
@@ -4,7 +4,7 @@ module Fog
4
4
  class Real
5
5
  require 'fog/aws/parsers/cloud_watch/list_metrics'
6
6
 
7
- # List availabe metrics
7
+ # List available metrics
8
8
  #
9
9
  # ==== Options
10
10
  # * Dimensions<~Array>: a list of dimensions to filter against,
@@ -7,7 +7,7 @@ module Fog
7
7
  # Add permissions to a security group
8
8
  #
9
9
  # ==== Parameters
10
- # * group_name<~String> - Name of group, optional (can also be specifed as GroupName in options)
10
+ # * group_name<~String> - Name of group, optional (can also be specified as GroupName in options)
11
11
  # * options<~Hash>:
12
12
  # * 'GroupName'<~String> - Name of security group to modify
13
13
  # * 'GroupId'<~String> - Id of security group to modify
@@ -7,7 +7,7 @@ module Fog
7
7
  # Add permissions to a security group
8
8
  #
9
9
  # ==== Parameters
10
- # * group_name<~String> - Name of group, optional (can also be specifed as GroupName in options)
10
+ # * group_name<~String> - Name of group, optional (can also be specified as GroupName in options)
11
11
  # * options<~Hash>:
12
12
  # * 'GroupName'<~String> - Name of security group to modify
13
13
  # * 'GroupId'<~String> - Id of security group to modify
@@ -30,6 +30,9 @@ module Fog
30
30
  # * 'IpRanges'<~Array>:
31
31
  # * ip_range<~Hash>:
32
32
  # * 'CidrIp'<~String> - CIDR range
33
+ # * 'Ipv6Ranges'<~Array>:
34
+ # * ip_range<~Hash>:
35
+ # * 'CidrIpv6'<~String> - CIDR range
33
36
  # * 'ToPort'<~Integer> - End of port range (or -1 for ICMP wildcard)
34
37
  #
35
38
  # === Returns
@@ -72,6 +75,10 @@ module Fog
72
75
  range_index += 1
73
76
  params[format('IpPermissions.%d.IpRanges.%d.CidrIp', key_index, range_index)] = ip_range['CidrIp']
74
77
  end
78
+ (permission['Ipv6Ranges'] || []).each_with_index do |ip_range, range_index|
79
+ range_index += 1
80
+ params[format('IpPermissions.%d.Ipv6Ranges.%d.CidrIpv6', key_index, range_index)] = ip_range['CidrIpv6']
81
+ end
75
82
  end
76
83
  params.reject {|k, v| v.nil? }
77
84
  end
@@ -186,6 +193,14 @@ module Fog
186
193
  'groups' => [],
187
194
  'ipRanges' => [{'cidrIp' => options['CidrIp']}]
188
195
  }
196
+ elsif options['CidrIpv6']
197
+ normalized_permissions << {
198
+ 'ipProtocol' => options['IpProtocol'],
199
+ 'fromPort' => Integer(options['FromPort']),
200
+ 'toPort' => Integer(options['ToPort']),
201
+ 'groups' => [],
202
+ 'ipv6Ranges' => [{'cidrIpv6' => options['CidrIpv6']}]
203
+ }
189
204
  elsif options['IpPermissions']
190
205
  options['IpPermissions'].each do |permission|
191
206
 
@@ -2,6 +2,7 @@ module Fog
2
2
  module AWS
3
3
  class Compute
4
4
  class Real
5
+ require 'ipaddr'
5
6
  require 'fog/aws/parsers/compute/create_network_interface'
6
7
 
7
8
  # Creates a network interface
@@ -24,7 +25,7 @@ module Fog
24
25
  # * 'availabilityZone'<~String> - The availability zone
25
26
  # * 'description'<~String> - The description
26
27
  # * 'ownerId'<~String> - The ID of the person who created the interface
27
- # * 'requesterId'<~String> - The ID ot teh entity requesting this interface
28
+ # * 'requesterId'<~String> - The ID or the entity requesting this interface
28
29
  # * 'requesterManaged'<~String> -
29
30
  # * 'status'<~String> - "available" or "in-use"
30
31
  # * 'macAddress'<~String> -
@@ -68,7 +69,7 @@ module Fog
68
69
  raise Fog::AWS::Compute::Error.new("Unknown subnet '#{subnetId}' specified")
69
70
  else
70
71
  id = Fog::AWS::Mock.network_interface_id
71
- cidr_block = IPAddress.parse(subnet['cidrBlock'])
72
+ cidr_block = IPAddr.new(subnet['cidrBlock'])
72
73
 
73
74
  groups = {}
74
75
  if options['GroupSet']
@@ -82,12 +83,14 @@ module Fog
82
83
  end
83
84
 
84
85
  if options['PrivateIpAddress'].nil?
86
+ range = cidr_block.to_range
85
87
  # Here we try to act like a DHCP server and pick the first
86
88
  # available IP (not including the first in the cidr block,
87
89
  # which is typically reserved for the gateway).
88
- cidr_block.each_host do |p_ip|
89
- unless self.data[:network_interfaces].map{ |ni, ni_conf| ni_conf['privateIpAddress'] }.include?p_ip.to_s ||
90
- cidr_block.first == p_ip
90
+ range = range.drop(2)[0..-2] if cidr_block.ipv4?
91
+
92
+ range.each do |p_ip|
93
+ unless self.data[:network_interfaces].map{ |ni, ni_conf| ni_conf['privateIpAddress'] }.include?p_ip.to_s
91
94
  options['PrivateIpAddress'] = p_ip.to_s
92
95
  break
93
96
  end
@@ -2,7 +2,7 @@ module Fog
2
2
  module AWS
3
3
  class Compute
4
4
  class Real
5
- require 'ipaddress'
5
+ require 'ipaddr'
6
6
  require 'fog/aws/parsers/compute/create_subnet'
7
7
 
8
8
  # Creates a Subnet with the CIDR block you specify.
@@ -50,11 +50,11 @@ module Fog
50
50
  if vpc.nil?
51
51
  raise Fog::AWS::Compute::NotFound.new("The vpc ID '#{vpcId}' does not exist")
52
52
  end
53
- if ! ::IPAddress.parse(vpc['cidrBlock']).include?(::IPAddress.parse(cidrBlock))
53
+ if ! ::IPAddr.new(vpc['cidrBlock']).include?(::IPAddr.new(cidrBlock))
54
54
  raise Fog::AWS::Compute::Error.new("Range => The CIDR '#{cidrBlock}' is invalid.")
55
55
  end
56
56
  self.data[:subnets].select{ |s| s['vpcId'] == vpcId }.each do |subnet|
57
- if ::IPAddress.parse(subnet['cidrBlock']).include?(::IPAddress.parse(cidrBlock))
57
+ if ::IPAddr.new(subnet['cidrBlock']).include?(::IPAddr.new(cidrBlock))
58
58
  raise Fog::AWS::Compute::Error.new("Conflict => The CIDR '#{cidrBlock}' conflicts with another subnet")
59
59
  end
60
60
  end
@@ -11,7 +11,6 @@ module Fog
11
11
  # * options<~Hash>:
12
12
  # * InstanceTenancy<~String> - The allowed tenancy of instances launched into the VPC. A value of default
13
13
  # means instances can be launched with any tenancy; a value of dedicated means instances must be launched with tenancy as dedicated.
14
- # please not that the documentation is incorrect instanceTenancy will not work while InstanceTenancy will
15
14
  #
16
15
  # === Returns
17
16
  # * response<~Excon::Response>:
@@ -54,7 +53,8 @@ module Fog
54
53
  'classicLinkEnabled' => false,
55
54
  'classicLinkDnsSupport' => false,
56
55
  'cidrBlockAssociationSet' => [{ 'cidrBlock' => cidrBlock, 'state' => 'associated', 'associationId' => "vpc-cidr-assoc-#{vpc_id}" }],
57
- 'ipv6CidrBlockAssociationSet' => []
56
+ 'ipv6CidrBlockAssociationSet' => [],
57
+ 'instanceTenancy' => options['InstanceTenancy'] || 'default'
58
58
  }
59
59
  self.data[:vpcs].push(vpc)
60
60
 
@@ -67,7 +67,7 @@ module Fog
67
67
  route_table = self.data[:route_tables].find { |routetable| routetable["routeTableId"].eql? default_route.id }
68
68
 
69
69
  # This pushes a main route to the associationSet
70
- # add_route_association(routeTableId, subnetId, main=false) is declared in assocate_route_table.rb
70
+ # add_route_association(routeTableId, subnetId, main=false) is declared in associate_route_table.rb
71
71
  assoc = add_route_association(default_route.id, nil, true)
72
72
  route_table["associationSet"].push(assoc)
73
73
 
@@ -20,7 +20,7 @@ module Fog
20
20
  # * 'availabilityZone'<~String> - The availability zone
21
21
  # * 'description'<~String> - The description
22
22
  # * 'ownerId'<~String> - The ID of the person who created the interface
23
- # * 'requesterId'<~String> - The ID ot teh entity requesting this interface
23
+ # * 'requesterId'<~String> - The ID of the entity requesting this interface
24
24
  # * 'requesterManaged'<~String> -
25
25
  # * 'status'<~String> - "available" or "in-use"
26
26
  # * 'macAddress'<~String> -
@@ -49,7 +49,7 @@ module Fog
49
49
  # * 'privateIpAddresses' <~Array>:
50
50
  # * 'privateIpAddress'<~String> - One of the additional private ip address
51
51
  # * 'privateDnsName'<~String> - The private DNS associate to the ip address
52
- # * 'primay'<~String> - Whether main ip associate with NIC true of false
52
+ # * 'primary'<~String> - Whether main ip associate with NIC true of false
53
53
  #
54
54
  # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/2012-03-01/APIReference/index.html?ApiReference-query-DescribeNetworkInterfaces.html]
55
55
  def describe_network_interfaces(filters = {})
@@ -27,6 +27,8 @@ module Fog
27
27
  # * 'ipProtocol'<~String> - Ip protocol, must be in ['tcp', 'udp', 'icmp']
28
28
  # * 'ipRanges'<~Array>:
29
29
  # * 'cidrIp'<~String> - CIDR range
30
+ # * 'ipv6Ranges'<~Array>:
31
+ # * 'cidrIpv6'<~String> - CIDR ipv6 range
30
32
  # * 'toPort'<~Integer> - End of port range (or -1 for ICMP wildcard)
31
33
  # * 'ownerId'<~String> - AWS Access Key Id of the owner of the security group
32
34
  # * 'NextToken'<~String> - The token to retrieve the next page of results
@@ -9,7 +9,7 @@ module Fog
9
9
  # ==== Parameters
10
10
  # * network_interface_id<~String> - The ID of the network interface you want to describe an attribute of
11
11
  # * attribute<~String> - The attribute to modify, must be one of 'description', 'groupSet', 'sourceDestCheck' or 'attachment'
12
- # * value<~Object> - New value of attribute, the actual tyep depends on teh attribute:
12
+ # * value<~Object> - New value of attribute, the actual type depends on the attribute:
13
13
  # description - a string
14
14
  # groupSet - a list of group id's
15
15
  # sourceDestCheck - a boolean value
@@ -10,7 +10,7 @@ module Fog
10
10
  # * volume_id<~String> - The ID of the volume
11
11
  # * options<~Hash>:
12
12
  # * 'VolumeType'<~String> - Type of volume
13
- # * 'Size'<~Integer> - Size in GiBs fo the volume
13
+ # * 'Size'<~Integer> - Size in GiBs of the volume
14
14
  # * 'Iops'<~Integer> - Number of IOPS the volume supports
15
15
  #
16
16
  # ==== Response
@@ -113,7 +113,7 @@ module Fog
113
113
  raise Fog::AWS::Compute::Error.new(message)
114
114
  end
115
115
 
116
- if !image_id.match(/^ami-[a-f0-9]{8}$/)
116
+ if !image_id.match(/^ami-[a-f0-9]{8,17}$/)
117
117
  message = "The image id '[#{image_id}]' does not exist"
118
118
  raise Fog::AWS::Compute::NotFound.new(message)
119
119
  end
@@ -7,7 +7,7 @@ module Fog
7
7
  # Remove permissions from a security group
8
8
  #
9
9
  # ==== Parameters
10
- # * group_name<~String> - Name of group, optional (can also be specifed as GroupName in options)
10
+ # * group_name<~String> - Name of group, optional (can also be specified as GroupName in options)
11
11
  # * options<~Hash>:
12
12
  # * 'GroupName'<~String> - Name of security group to modify
13
13
  # * 'GroupId'<~String> - Id of security group to modify
@@ -7,7 +7,7 @@ module Fog
7
7
  # Remove permissions from a security group
8
8
  #
9
9
  # ==== Parameters
10
- # * group_name<~String> - Name of group, optional (can also be specifed as GroupName in options)
10
+ # * group_name<~String> - Name of group, optional (can also be specified as GroupName in options)
11
11
  # * options<~Hash>:
12
12
  # * 'GroupName'<~String> - Name of security group to modify
13
13
  # * 'GroupId'<~String> - Id of security group to modify
@@ -30,6 +30,8 @@ module Fog
30
30
  # * 'Ebs.Encrypted'<~Boolean> - specifies whether or not the volume is to be encrypted unless snapshot is specified
31
31
  # * 'Ebs.VolumeType'<~String> - Type of EBS volue. Valid options in ['standard', 'io1'] default is 'standard'.
32
32
  # * 'Ebs.Iops'<~String> - The number of I/O operations per second (IOPS) that the volume supports. Required when VolumeType is 'io1'
33
+ # * 'HibernationOptions'<~Array>: array of hashes
34
+ # * 'Configured'<~Boolean> - specifies whether or not the instance is configured for hibernation. This parameter is valid only if the instance meets the hibernation prerequisites.
33
35
  # * 'NetworkInterfaces'<~Array>: array of hashes
34
36
  # * 'NetworkInterfaceId'<~String> - An existing interface to attach to a single instance
35
37
  # * 'DeviceIndex'<~String> - The device index. Applies both to attaching an existing network interface and creating a network interface
@@ -42,6 +44,11 @@ module Fog
42
44
  # * 'PrivateIpAddresses.Primary'<~Bool> - Indicates whether the private IP address is the primary private IP address.
43
45
  # * 'SecondaryPrivateIpAddressCount'<~Bool> - The number of private IP addresses to assign to the network interface.
44
46
  # * 'AssociatePublicIpAddress'<~String> - Indicates whether to assign a public IP address to an instance in a VPC. The public IP address is assigned to a specific network interface
47
+ # * 'TagSpecifications'<~Array>: array of hashes
48
+ # * 'ResourceType'<~String> - Type of resource to apply tags on, e.g: instance or volume
49
+ # * 'Tags'<~Array> - List of hashes reprensenting tag to be set
50
+ # * 'Key'<~String> - Tag name
51
+ # * 'Value'<~String> - Tag value
45
52
  # * 'ClientToken'<~String> - unique case-sensitive token for ensuring idempotency
46
53
  # * 'DisableApiTermination'<~Boolean> - specifies whether or not to allow termination of the instance from the api
47
54
  # * 'SecurityGroup'<~Array> or <~String> - Name of security group(s) for instances (not supported for VPC)
@@ -75,6 +82,8 @@ module Fog
75
82
  # * 'deviceName'<~String> - specifies how volume is exposed to instance
76
83
  # * 'status'<~String> - status of attached volume
77
84
  # * 'volumeId'<~String> - Id of attached volume
85
+ # * 'hibernationOptions'<~Array>
86
+ # * 'configured'<~Boolean> - whether or not the instance is enabled for hibernation
78
87
  # * 'dnsName'<~String> - public dns name, blank until instance is running
79
88
  # * 'imageId'<~String> - image id of ami used to launch instance
80
89
  # * 'instanceId'<~String> - id of the instance
@@ -111,6 +120,13 @@ module Fog
111
120
  end
112
121
  end
113
122
  end
123
+ if hibernation_options = options.delete('HibernationOptions')
124
+ hibernation_options.each_with_index do |mapping, index|
125
+ for key, value in mapping
126
+ options.merge!({ format("HibernationOptions.%d.#{key}", index) => value })
127
+ end
128
+ end
129
+ end
114
130
  if security_groups = options.delete('SecurityGroup')
115
131
  options.merge!(Fog::AWS.indexed_param('SecurityGroup', [*security_groups]))
116
132
  end
@@ -133,6 +149,45 @@ module Fog
133
149
  end
134
150
  end
135
151
  end
152
+ if tag_specifications = options.delete('TagSpecifications')
153
+ # From https://docs.aws.amazon.com/sdk-for-ruby/v2/api/Aws/EC2/Client.html#run_instances-instance_method
154
+ # And https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html
155
+ # Discussed at https://github.com/fog/fog-aws/issues/603
156
+ #
157
+ # Example
158
+ #
159
+ # TagSpecifications: [
160
+ # {
161
+ # ResourceType: "instance",
162
+ # Tags: [
163
+ # {
164
+ # Key: "Project",
165
+ # Value: "MyProject",
166
+ # },
167
+ # ],
168
+ # },
169
+ # {
170
+ # ResourceType: "volume",
171
+ # Tags: [
172
+ # {
173
+ # Key: "Project",
174
+ # Value: "MyProject",
175
+ # },
176
+ # ],
177
+ # },
178
+ # ]
179
+ tag_specifications.each_with_index do |val, idx|
180
+ resource_type = val["ResourceType"]
181
+ tags = val["Tags"]
182
+ options["TagSpecification.#{idx}.ResourceType"] = resource_type
183
+ tags.each_with_index do |tag, tag_idx|
184
+ aws_tag_key = "TagSpecification.#{idx}.Tag.#{tag_idx}.Key"
185
+ aws_tag_value = "TagSpecification.#{idx}.Tag.#{tag_idx}.Value"
186
+ options[aws_tag_key] = tag["Key"]
187
+ options[aws_tag_value] = tag["Value"]
188
+ end
189
+ end
190
+ end
136
191
 
137
192
  idempotent = !(options['ClientToken'].nil? || options['ClientToken'].empty?)
138
193
 
@@ -182,6 +237,14 @@ module Fog
182
237
  }
183
238
  end
184
239
 
240
+ hibernation_options = (options['HibernationOptions'] || []).reduce([]) do |mapping, device|
241
+ configure = device.fetch("Configure", true)
242
+
243
+ mapping << {
244
+ "Configure" => configure,
245
+ }
246
+ end
247
+
185
248
  if options['SubnetId']
186
249
  if options['PrivateIpAddress']
187
250
  ni_options = {'PrivateIpAddress' => options['PrivateIpAddress']}
@@ -221,6 +284,7 @@ module Fog
221
284
  'associatePublicIP' => options['associatePublicIP'] || false,
222
285
  'architecture' => 'i386',
223
286
  'blockDeviceMapping' => block_device_mapping,
287
+ 'hibernationOptions' => hibernation_options,
224
288
  'networkInterfaces' => network_interfaces,
225
289
  'clientToken' => options['clientToken'],
226
290
  'dnsName' => nil,
@@ -16,9 +16,17 @@ module Fog
16
16
  # * TODO: fill in the blanks
17
17
  #
18
18
  # {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-StopInstances.html]
19
- def stop_instances(instance_id, force = false)
19
+ def stop_instances(instance_id, options = {})
20
20
  params = Fog::AWS.indexed_param('InstanceId', instance_id)
21
- params.merge!('Force' => 'true') if force
21
+ unless options.is_a?(Hash)
22
+ Fog::Logger.warning("stop_instances with #{options.class} param is deprecated, use stop_instances('force' => boolean) instead [light_black](#{caller.first})[/]")
23
+ options = {'force' => options}
24
+ end
25
+ params.merge!('Force' => 'true') if options['force']
26
+ if options['hibernate']
27
+ params.merge!('Hibernate' => 'true')
28
+ params.merge!('Force' => 'false')
29
+ end
22
30
  request({
23
31
  'Action' => 'StopInstances',
24
32
  :idempotent => true,
@@ -28,7 +36,7 @@ module Fog
28
36
  end
29
37
 
30
38
  class Mock
31
- def stop_instances(instance_id, force = false)
39
+ def stop_instances(instance_id, options = {})
32
40
  instance_ids = Array(instance_id)
33
41
 
34
42
  instance_set = self.data[:instances].values
@@ -15,7 +15,7 @@ module Fog
15
15
 
16
16
  response = request({
17
17
  :body => Fog::JSON.encode(params),
18
- :headers => { 'X-Amz-Target' => 'DataPipeline.DectivatePipeline' }
18
+ :headers => { 'X-Amz-Target' => 'DataPipeline.DeactivatePipeline' }
19
19
  })
20
20
  end
21
21
  end
@@ -1,139 +1,6 @@
1
1
  module Fog
2
2
  module AWS
3
3
  class DNS
4
-
5
- def self.hosted_zone_for_alias_target(dns_name)
6
- hosted_zones = if dns_name.match(/^dualstack\./)
7
- elb_dualstack_hosted_zone_mapping
8
- else
9
- elb_hosted_zone_mapping
10
- end
11
-
12
- Hash[hosted_zones.select { |k, _|
13
- dns_name =~ /\A.+\.#{k}\.elb\.amazonaws\.com\.?\z/
14
- }].values.last
15
- end
16
-
17
- def self.elb_hosted_zone_mapping
18
- @elb_hosted_zone_mapping ||= {
19
- "ap-northeast-1" => "Z2YN17T5R711GT",
20
- "ap-southeast-1" => "Z1WI8VXHPB1R38",
21
- "ap-southeast-2" => "Z2999QAZ9SRTIC",
22
- "eu-west-1" => "Z3NF1Z3NOM5OY2",
23
- "eu-central-1" => "Z215JYRZR1TBD5",
24
- "sa-east-1" => "Z2ES78Y61JGQKS",
25
- "us-east-1" => "Z3DZXE0Q79N41H",
26
- "us-west-1" => "Z1M58G0W56PQJA",
27
- "us-west-2" => "Z33MTJ483KN6FU",
28
- }
29
- end
30
-
31
- # See https://docs.aws.amazon.com/general/latest/gr/rande.html#elb_region
32
- # This needs to be kept in sync manually sadly for now as seemingly this data is not available via an API
33
- def self.elb_dualstack_hosted_zone_mapping
34
- @elb_dualstack_hosted_zone_mapping ||= {
35
- "ap-northeast-1" => "Z14GRHDCWA56QT",
36
- "ap-northeast-2" => "ZWKZPGTI48KDX",
37
- "ap-northeast-3" => "Z5LXEXXYW11ES",
38
- "ap-south-1" => "ZP97RAFLXTNZK",
39
- "ap-southeast-1" => "Z1LMS91P8CMLE5",
40
- "ap-southeast-2" => "Z1GM3OXH4ZPM65",
41
- "ca-central-1" => "ZQSVJUPU6J1EY",
42
- "eu-central-1" => "Z215JYRZR1TBD5",
43
- "eu-west-1" => "Z32O12XQLNTSW2",
44
- "eu-west-2" => "ZHURV8PSTC4K8",
45
- "eu-west-3" => "Z3Q77PNBQS71R4",
46
- "us-east-1" => "Z35SXDOTRQ7X7K",
47
- "us-east-2" => "Z3AADJGX6KTTL2",
48
- "us-west-1" => "Z368ELLRRE2KJ0",
49
- "us-west-2" => "Z1H1FL5HABSF5",
50
- "sa-east-1" => "Z2P70J7HTTTPLU",
51
- }
52
- end
53
-
54
- # Returns the xml request for a given changeset
55
- def self.change_resource_record_sets_data(zone_id, change_batch, version, options = {})
56
- # AWS methods return zone_ids that looks like '/hostedzone/id'. Let the caller either use
57
- # that form or just the actual id (which is what this request needs)
58
- zone_id = zone_id.sub('/hostedzone/', '')
59
-
60
- optional_tags = ''
61
- options.each do |option, value|
62
- case option
63
- when :comment
64
- optional_tags += "<Comment>#{value}</Comment>"
65
- end
66
- end
67
-
68
- #build XML
69
- if change_batch.count > 0
70
-
71
- changes = "<ChangeBatch>#{optional_tags}<Changes>"
72
-
73
- change_batch.each do |change_item|
74
- action_tag = %Q{<Action>#{change_item[:action]}</Action>}
75
- name_tag = %Q{<Name>#{change_item[:name]}</Name>}
76
- type_tag = %Q{<Type>#{change_item[:type]}</Type>}
77
-
78
- # TTL must be omitted if using an alias record
79
- ttl_tag = ''
80
- ttl_tag += %Q{<TTL>#{change_item[:ttl]}</TTL>} unless change_item[:alias_target]
81
-
82
- weight_tag = ''
83
- set_identifier_tag = ''
84
- region_tag = ''
85
- if change_item[:set_identifier]
86
- set_identifier_tag += %Q{<SetIdentifier>#{change_item[:set_identifier]}</SetIdentifier>}
87
- if change_item[:weight] # Weighted Record
88
- weight_tag += %Q{<Weight>#{change_item[:weight]}</Weight>}
89
- elsif change_item[:region] # Latency record
90
- region_tag += %Q{<Region>#{change_item[:region]}</Region>}
91
- end
92
- end
93
-
94
- failover_tag = if change_item[:failover]
95
- %Q{<Failover>#{change_item[:failover]}</Failover>}
96
- end
97
-
98
- geolocation_tag = if change_item[:geo_location]
99
- xml_geo = change_item[:geo_location].map { |k,v| "<#{k}>#{v}</#{k}>" }.join
100
- %Q{<GeoLocation>#{xml_geo}</GeoLocation>}
101
- end
102
-
103
- resource_records = change_item[:resource_records] || []
104
- resource_record_tags = ''
105
- resource_records.each do |record|
106
- resource_record_tags += %Q{<ResourceRecord><Value>#{record}</Value></ResourceRecord>}
107
- end
108
-
109
- # ResourceRecords must be omitted if using an alias record
110
- resource_tag = ''
111
- resource_tag += %Q{<ResourceRecords>#{resource_record_tags}</ResourceRecords>} if resource_records.any?
112
-
113
- alias_target_tag = ''
114
- if change_item[:alias_target]
115
- # Accept either underscore or camel case for hash keys.
116
- dns_name = change_item[:alias_target][:dns_name] || change_item[:alias_target][:DNSName]
117
- hosted_zone_id = change_item[:alias_target][:hosted_zone_id] || change_item[:alias_target][:HostedZoneId] || AWS.hosted_zone_for_alias_target(dns_name)
118
- evaluate_target_health = change_item[:alias_target][:evaluate_target_health] || change_item[:alias_target][:EvaluateTargetHealth] || false
119
- evaluate_target_health_xml = !evaluate_target_health.nil? ? %Q{<EvaluateTargetHealth>#{evaluate_target_health}</EvaluateTargetHealth>} : ''
120
- alias_target_tag += %Q{<AliasTarget><HostedZoneId>#{hosted_zone_id}</HostedZoneId><DNSName>#{dns_name}</DNSName>#{evaluate_target_health_xml}</AliasTarget>}
121
- end
122
-
123
- health_check_id_tag = if change_item[:health_check_id]
124
- %Q{<HealthCheckId>#{change_item[:health_check_id]}</HealthCheckId>}
125
- end
126
-
127
- change_tags = %Q{<Change>#{action_tag}<ResourceRecordSet>#{name_tag}#{type_tag}#{set_identifier_tag}#{weight_tag}#{region_tag}#{failover_tag}#{geolocation_tag}#{ttl_tag}#{resource_tag}#{alias_target_tag}#{health_check_id_tag}</ResourceRecordSet></Change>}
128
- changes += change_tags
129
- end
130
-
131
- changes += '</Changes></ChangeBatch>'
132
- end
133
-
134
- %Q{<?xml version="1.0" encoding="UTF-8"?><ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/#{version}/">#{changes}</ChangeResourceRecordSetsRequest>}
135
- end
136
-
137
4
  class Real
138
5
  require 'fog/aws/parsers/dns/change_resource_record_sets'
139
6
 
@@ -13,7 +13,7 @@ module Fog
13
13
  # ==== Returns
14
14
  # * response<~Excon::Response>:
15
15
  # * body<~Hash>:
16
- # * 'TaskDefinitionArns' <~Array> - list of task definition Amazon Resource Name (ARN) entries for the ListTaskDefintions request.
16
+ # * 'TaskDefinitionArns' <~Array> - list of task definition Amazon Resource Name (ARN) entries for the ListTaskDefinitions request.
17
17
  # * 'NextToken' <~String> - nextToken value to include in a future ListTaskDefinitions request
18
18
  def list_task_definitions(params={})
19
19
  request({
@@ -23,7 +23,7 @@ module Fog
23
23
  :method => 'POST',
24
24
  :expects => 201,
25
25
  'CreationToken' => creation_token,
26
- 'PerformanceMode' => options[:peformance_mode] || 'generalPurpose',
26
+ 'PerformanceMode' => options[:performance_mode] || 'generalPurpose',
27
27
  'Encrypted' => options[:encrypted] || false
28
28
  }
29
29
  params[:kms_key_id] = options[:kms_key_id] if options.key?(:kms_key_id)
@@ -34,7 +34,7 @@ module Fog
34
34
  if sec_group = self.data[:security_groups][name]
35
35
 
36
36
  if sec_group['EC2SecurityGroups'].find{|h| h['EC2SecurityGroupName'] == opts['EC2SecurityGroupName']}
37
- raise Fog::AWS::Elasticache::AuthorizationAlreadyExists.new("AuthorizationAlreadyExists => #{opts['EC2SecurityGroupName']} is alreay defined")
37
+ raise Fog::AWS::Elasticache::AuthorizationAlreadyExists.new("AuthorizationAlreadyExists => #{opts['EC2SecurityGroupName']} is already defined")
38
38
  end
39
39
  sec_group['EC2SecurityGroups'] << opts.merge({'Status' => 'authorizing'})
40
40
 
@@ -19,7 +19,7 @@ module Fog
19
19
  # * :engine_version <~String> - The Cluster's caching software version
20
20
  # * :notification_topic_arn <~String> - Amazon SNS Resource Name
21
21
  # * :port <~Integer> - The memcached port number
22
- # * :preferred_availablility_zone <~String>
22
+ # * :preferred_availability_zone <~String>
23
23
  # * :preferred_maintenance_window <~String>
24
24
  # * :cache_subnet_group_name <~String>
25
25
  # * :s3_snapshot_location <~String> - Amazon resource location for snapshot
@@ -39,7 +39,7 @@ module Fog
39
39
  'EngineVersion' => options[:engine_version],
40
40
  'NotificationTopicArn' => options[:notification_topic_arn],
41
41
  'Port' => options[:port],
42
- 'PreferredAvailabilityZone' => options[:preferred_availablility_zone],
42
+ 'PreferredAvailabilityZone' => options[:preferred_availability_zone],
43
43
  'PreferredMaintenanceWindow' => options[:preferred_maintenance_window],
44
44
  :parser => Fog::Parsers::AWS::Elasticache::SingleCacheCluster.new
45
45
  }
@@ -24,7 +24,7 @@ module Fog
24
24
  end
25
25
 
26
26
  class Mock
27
- def describe_engine_defalut_parameters(options = {})
27
+ def describe_engine_default_parameters(options = {})
28
28
  Fog::Mock.not_implemented
29
29
  end
30
30
  end