aws-sdk 1.8.5 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (386) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +1 -0
  3. data/README.rdoc +8 -0
  4. data/lib/aws-sdk.rb +39 -35
  5. data/lib/aws/api_config/CloudFront-2012-07-01.yml +2398 -0
  6. data/lib/aws/api_config/DirectConnect-2012-10-25.yml +475 -0
  7. data/lib/aws/api_config/DynamoDB-2011-12-05.yml +8 -0
  8. data/lib/aws/api_config/DynamoDB-2012-08-10.yml +1516 -0
  9. data/lib/aws/api_config/OpsWorks-2013-02-18.yml +2 -2
  10. data/lib/aws/auto_scaling.rb +44 -44
  11. data/lib/aws/auto_scaling/activity.rb +1 -1
  12. data/lib/aws/auto_scaling/activity_collection.rb +14 -15
  13. data/lib/aws/auto_scaling/client.rb +277 -277
  14. data/lib/aws/auto_scaling/config.rb +1 -1
  15. data/lib/aws/auto_scaling/group.rb +35 -36
  16. data/lib/aws/auto_scaling/group_collection.rb +10 -10
  17. data/lib/aws/auto_scaling/group_options.rb +19 -19
  18. data/lib/aws/auto_scaling/instance.rb +27 -27
  19. data/lib/aws/auto_scaling/instance_collection.rb +10 -10
  20. data/lib/aws/auto_scaling/launch_configuration.rb +3 -3
  21. data/lib/aws/auto_scaling/launch_configuration_collection.rb +1 -1
  22. data/lib/aws/auto_scaling/notification_configuration.rb +2 -2
  23. data/lib/aws/auto_scaling/notification_configuration_collection.rb +37 -38
  24. data/lib/aws/auto_scaling/scaling_policy.rb +3 -3
  25. data/lib/aws/auto_scaling/scaling_policy_collection.rb +6 -6
  26. data/lib/aws/auto_scaling/scaling_policy_options.rb +8 -7
  27. data/lib/aws/auto_scaling/scheduled_action.rb +3 -3
  28. data/lib/aws/auto_scaling/scheduled_action_collection.rb +28 -28
  29. data/lib/aws/auto_scaling/tag_collection.rb +30 -28
  30. data/lib/aws/cloud_formation.rb +95 -94
  31. data/lib/aws/cloud_formation/client.rb +136 -133
  32. data/lib/aws/cloud_formation/config.rb +1 -1
  33. data/lib/aws/cloud_formation/stack.rb +37 -37
  34. data/lib/aws/cloud_formation/stack_collection.rb +28 -27
  35. data/lib/aws/cloud_formation/stack_event.rb +9 -11
  36. data/lib/aws/cloud_formation/stack_output.rb +1 -1
  37. data/lib/aws/cloud_formation/stack_resource.rb +6 -6
  38. data/lib/aws/cloud_formation/stack_resource_collection.rb +11 -12
  39. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +11 -11
  40. data/lib/aws/cloud_formation/stack_summary_collection.rb +39 -39
  41. data/lib/aws/cloud_front.rb +21 -21
  42. data/lib/aws/cloud_front/client.rb +853 -652
  43. data/lib/aws/cloud_front/request.rb +3 -0
  44. data/lib/aws/cloud_search.rb +22 -22
  45. data/lib/aws/cloud_search/client.rb +322 -315
  46. data/lib/aws/cloud_search/config.rb +1 -1
  47. data/lib/aws/cloud_watch.rb +39 -39
  48. data/lib/aws/cloud_watch/alarm.rb +55 -37
  49. data/lib/aws/cloud_watch/alarm_collection.rb +18 -18
  50. data/lib/aws/cloud_watch/alarm_history_item_collection.rb +2 -2
  51. data/lib/aws/cloud_watch/client.rb +360 -146
  52. data/lib/aws/cloud_watch/config.rb +1 -1
  53. data/lib/aws/cloud_watch/metric.rb +15 -15
  54. data/lib/aws/cloud_watch/metric_alarm_collection.rb +17 -17
  55. data/lib/aws/cloud_watch/metric_collection.rb +16 -16
  56. data/lib/aws/cloud_watch/metric_statistics.rb +11 -11
  57. data/lib/aws/core.rb +243 -225
  58. data/lib/aws/core/async_handle.rb +13 -13
  59. data/lib/aws/core/cacheable.rb +14 -15
  60. data/lib/aws/core/client.rb +40 -15
  61. data/lib/aws/core/collection.rb +42 -46
  62. data/lib/aws/core/collection/with_limit_and_next_token.rb +1 -1
  63. data/lib/aws/core/collection/with_next_token.rb +1 -1
  64. data/lib/aws/core/configuration.rb +97 -133
  65. data/lib/aws/core/credential_providers.rb +16 -16
  66. data/lib/aws/core/data.rb +23 -23
  67. data/lib/aws/core/http/connection_pool.rb +348 -0
  68. data/lib/aws/core/http/net_http_handler.rb +17 -26
  69. data/lib/aws/core/http/patch.rb +102 -0
  70. data/lib/aws/core/http/request.rb +13 -19
  71. data/lib/aws/core/http/response.rb +2 -2
  72. data/lib/aws/core/lazy_error_classes.rb +17 -17
  73. data/lib/aws/core/log_formatter.rb +70 -104
  74. data/lib/aws/core/options/json_serializer.rb +1 -1
  75. data/lib/aws/core/options/validator.rb +4 -4
  76. data/lib/aws/core/page_result.rb +8 -8
  77. data/lib/aws/core/policy.rb +49 -49
  78. data/lib/aws/core/region.rb +72 -0
  79. data/lib/aws/core/region_collection.rb +106 -0
  80. data/lib/aws/core/resource.rb +5 -5
  81. data/lib/aws/core/response.rb +20 -17
  82. data/lib/aws/core/rest_request_builder.rb +4 -4
  83. data/lib/aws/core/service_interface.rb +24 -2
  84. data/lib/aws/core/signature/version_3.rb +2 -2
  85. data/lib/aws/core/uri_escape.rb +1 -1
  86. data/lib/aws/core/xml/frame_stack.rb +1 -1
  87. data/lib/aws/core/xml/grammar.rb +3 -4
  88. data/lib/aws/core/xml/sax_handlers/libxml.rb +2 -2
  89. data/lib/aws/core/xml/sax_handlers/nokogiri.rb +3 -3
  90. data/lib/aws/core/xml/sax_handlers/rexml.rb +5 -5
  91. data/lib/aws/core/xml/stub.rb +9 -9
  92. data/lib/aws/data_pipeline.rb +21 -21
  93. data/lib/aws/data_pipeline/client.rb +189 -133
  94. data/lib/aws/data_pipeline/config.rb +1 -1
  95. data/lib/aws/direct_connect.rb +74 -0
  96. data/lib/aws/direct_connect/client.rb +253 -0
  97. data/lib/aws/direct_connect/config.rb +18 -0
  98. data/lib/aws/direct_connect/errors.rb +22 -0
  99. data/lib/aws/direct_connect/request.rb +27 -0
  100. data/lib/aws/dynamo_db.rb +71 -69
  101. data/lib/aws/dynamo_db/attribute_collection.rb +53 -58
  102. data/lib/aws/dynamo_db/batch_get.rb +23 -23
  103. data/lib/aws/dynamo_db/batch_write.rb +43 -43
  104. data/lib/aws/dynamo_db/binary.rb +9 -9
  105. data/lib/aws/dynamo_db/client.rb +494 -509
  106. data/lib/aws/dynamo_db/client_base.rb +91 -0
  107. data/lib/aws/dynamo_db/client_v2.rb +825 -0
  108. data/lib/aws/dynamo_db/config.rb +1 -1
  109. data/lib/aws/dynamo_db/item.rb +10 -10
  110. data/lib/aws/dynamo_db/item_collection.rb +75 -75
  111. data/lib/aws/dynamo_db/table.rb +85 -85
  112. data/lib/aws/dynamo_db/table_collection.rb +13 -13
  113. data/lib/aws/ec2.rb +132 -142
  114. data/lib/aws/ec2/attachment.rb +31 -36
  115. data/lib/aws/ec2/attachment_collection.rb +1 -1
  116. data/lib/aws/ec2/availability_zone.rb +4 -4
  117. data/lib/aws/ec2/client.rb +2272 -2125
  118. data/lib/aws/ec2/config.rb +1 -1
  119. data/lib/aws/ec2/customer_gateway.rb +6 -6
  120. data/lib/aws/ec2/customer_gateway_collection.rb +6 -6
  121. data/lib/aws/ec2/dhcp_options.rb +3 -3
  122. data/lib/aws/ec2/dhcp_options_collection.rb +10 -10
  123. data/lib/aws/ec2/elastic_ip.rb +15 -15
  124. data/lib/aws/ec2/elastic_ip_collection.rb +11 -15
  125. data/lib/aws/ec2/export_task.rb +4 -4
  126. data/lib/aws/ec2/export_task_collection.rb +11 -11
  127. data/lib/aws/ec2/filtered_collection.rb +6 -8
  128. data/lib/aws/ec2/image.rb +46 -40
  129. data/lib/aws/ec2/image_collection.rb +44 -52
  130. data/lib/aws/ec2/instance.rb +64 -62
  131. data/lib/aws/ec2/instance_collection.rb +47 -50
  132. data/lib/aws/ec2/internet_gateway.rb +6 -6
  133. data/lib/aws/ec2/internet_gateway/attachment.rb +13 -13
  134. data/lib/aws/ec2/internet_gateway_collection.rb +3 -3
  135. data/lib/aws/ec2/key_pair.rb +3 -3
  136. data/lib/aws/ec2/key_pair_collection.rb +12 -12
  137. data/lib/aws/ec2/network_acl.rb +39 -39
  138. data/lib/aws/ec2/network_acl/association.rb +2 -2
  139. data/lib/aws/ec2/network_acl/entry.rb +22 -22
  140. data/lib/aws/ec2/network_acl_collection.rb +2 -2
  141. data/lib/aws/ec2/network_interface.rb +13 -4
  142. data/lib/aws/ec2/network_interface/attachment.rb +3 -3
  143. data/lib/aws/ec2/network_interface_collection.rb +5 -5
  144. data/lib/aws/ec2/permission_collection.rb +1 -1
  145. data/lib/aws/ec2/region.rb +6 -6
  146. data/lib/aws/ec2/region_collection.rb +1 -1
  147. data/lib/aws/ec2/reserved_instances_collection.rb +2 -2
  148. data/lib/aws/ec2/reserved_instances_offering_collection.rb +2 -2
  149. data/lib/aws/ec2/resource_tag_collection.rb +5 -5
  150. data/lib/aws/ec2/route_table.rb +14 -14
  151. data/lib/aws/ec2/route_table/association.rb +22 -22
  152. data/lib/aws/ec2/route_table/route.rb +8 -8
  153. data/lib/aws/ec2/route_table_collection.rb +3 -3
  154. data/lib/aws/ec2/security_group.rb +39 -41
  155. data/lib/aws/ec2/security_group_collection.rb +19 -21
  156. data/lib/aws/ec2/snapshot.rb +3 -3
  157. data/lib/aws/ec2/snapshot_collection.rb +11 -12
  158. data/lib/aws/ec2/subnet.rb +2 -2
  159. data/lib/aws/ec2/subnet_collection.rb +17 -17
  160. data/lib/aws/ec2/tag_collection.rb +1 -1
  161. data/lib/aws/ec2/tagged_collection.rb +7 -7
  162. data/lib/aws/ec2/tagged_item.rb +10 -10
  163. data/lib/aws/ec2/volume.rb +16 -16
  164. data/lib/aws/ec2/volume_collection.rb +9 -12
  165. data/lib/aws/ec2/vpc.rb +6 -6
  166. data/lib/aws/ec2/vpc_collection.rb +10 -10
  167. data/lib/aws/ec2/vpn_connection.rb +4 -4
  168. data/lib/aws/ec2/vpn_connection/telemetry.rb +1 -1
  169. data/lib/aws/ec2/vpn_connection_collection.rb +6 -6
  170. data/lib/aws/ec2/vpn_gateway.rb +2 -2
  171. data/lib/aws/ec2/vpn_gateway_collection.rb +5 -5
  172. data/lib/aws/elastic_beanstalk.rb +12 -12
  173. data/lib/aws/elastic_beanstalk/client.rb +376 -368
  174. data/lib/aws/elastic_beanstalk/config.rb +1 -1
  175. data/lib/aws/elastic_transcoder.rb +5 -5
  176. data/lib/aws/elastic_transcoder/client.rb +283 -283
  177. data/lib/aws/elastic_transcoder/config.rb +1 -1
  178. data/lib/aws/elasticache.rb +12 -12
  179. data/lib/aws/elasticache/client.rb +484 -479
  180. data/lib/aws/elasticache/config.rb +1 -1
  181. data/lib/aws/elb.rb +23 -23
  182. data/lib/aws/elb/availability_zone_collection.rb +34 -34
  183. data/lib/aws/elb/backend_server_policy_collection.rb +24 -24
  184. data/lib/aws/elb/client.rb +153 -153
  185. data/lib/aws/elb/config.rb +1 -1
  186. data/lib/aws/elb/errors.rb +1 -1
  187. data/lib/aws/elb/instance_collection.rb +20 -25
  188. data/lib/aws/elb/listener.rb +3 -3
  189. data/lib/aws/elb/listener_collection.rb +8 -8
  190. data/lib/aws/elb/load_balancer.rb +15 -16
  191. data/lib/aws/elb/load_balancer_collection.rb +36 -24
  192. data/lib/aws/elb/load_balancer_policy.rb +1 -1
  193. data/lib/aws/elb/load_balancer_policy_collection.rb +5 -5
  194. data/lib/aws/emr.rb +28 -26
  195. data/lib/aws/emr/client.rb +165 -149
  196. data/lib/aws/emr/config.rb +1 -1
  197. data/lib/aws/emr/instance_group.rb +1 -1
  198. data/lib/aws/emr/instance_group_collection.rb +1 -1
  199. data/lib/aws/emr/job_flow.rb +27 -26
  200. data/lib/aws/emr/job_flow_collection.rb +34 -34
  201. data/lib/aws/errors.rb +7 -7
  202. data/lib/aws/glacier.rb +21 -21
  203. data/lib/aws/glacier/archive_collection.rb +2 -2
  204. data/lib/aws/glacier/client.rb +139 -140
  205. data/lib/aws/glacier/config.rb +1 -1
  206. data/lib/aws/glacier/vault.rb +2 -2
  207. data/lib/aws/glacier/vault_collection.rb +1 -1
  208. data/lib/aws/iam.rb +133 -144
  209. data/lib/aws/iam/access_key.rb +17 -17
  210. data/lib/aws/iam/access_key_collection.rb +22 -22
  211. data/lib/aws/iam/account_alias_collection.rb +2 -2
  212. data/lib/aws/iam/client.rb +429 -420
  213. data/lib/aws/iam/collection.rb +1 -1
  214. data/lib/aws/iam/config.rb +2 -2
  215. data/lib/aws/iam/group.rb +8 -8
  216. data/lib/aws/iam/group_collection.rb +16 -16
  217. data/lib/aws/iam/group_policy_collection.rb +6 -6
  218. data/lib/aws/iam/group_user_collection.rb +3 -3
  219. data/lib/aws/iam/mfa_device.rb +1 -1
  220. data/lib/aws/iam/mfa_device_collection.rb +9 -9
  221. data/lib/aws/iam/policy_collection.rb +4 -4
  222. data/lib/aws/iam/resource.rb +2 -2
  223. data/lib/aws/iam/server_certificate.rb +1 -1
  224. data/lib/aws/iam/server_certificate_collection.rb +15 -15
  225. data/lib/aws/iam/signing_certificate.rb +29 -29
  226. data/lib/aws/iam/signing_certificate_collection.rb +23 -23
  227. data/lib/aws/iam/user.rb +33 -38
  228. data/lib/aws/iam/user_collection.rb +27 -27
  229. data/lib/aws/iam/user_group_collection.rb +3 -3
  230. data/lib/aws/iam/user_policy_collection.rb +6 -6
  231. data/lib/aws/iam/virtual_mfa_device.rb +12 -12
  232. data/lib/aws/iam/virtual_mfa_device_collection.rb +4 -4
  233. data/lib/aws/import_export.rb +22 -21
  234. data/lib/aws/import_export/client.rb +47 -43
  235. data/lib/aws/ops_works.rb +5 -5
  236. data/lib/aws/ops_works/client.rb +484 -438
  237. data/lib/aws/ops_works/config.rb +1 -1
  238. data/lib/aws/rails.rb +34 -34
  239. data/lib/aws/rds.rb +18 -18
  240. data/lib/aws/rds/client.rb +1286 -1277
  241. data/lib/aws/rds/config.rb +1 -1
  242. data/lib/aws/rds/db_instance.rb +15 -4
  243. data/lib/aws/rds/db_snapshot.rb +1 -1
  244. data/lib/aws/record.rb +50 -24
  245. data/lib/aws/record/abstract_base.rb +52 -60
  246. data/lib/aws/record/attributes.rb +79 -79
  247. data/lib/aws/record/conversion.rb +1 -1
  248. data/lib/aws/record/dirty_tracking.rb +69 -67
  249. data/lib/aws/record/errors.rb +21 -21
  250. data/lib/aws/record/exceptions.rb +2 -2
  251. data/lib/aws/record/hash_model.rb +20 -21
  252. data/lib/aws/record/hash_model/attributes.rb +13 -15
  253. data/lib/aws/record/hash_model/finder_methods.rb +46 -46
  254. data/lib/aws/record/hash_model/scope.rb +31 -31
  255. data/lib/aws/record/model.rb +136 -136
  256. data/lib/aws/record/model/attributes.rb +57 -59
  257. data/lib/aws/record/model/finder_methods.rb +67 -67
  258. data/lib/aws/record/model/scope.rb +48 -49
  259. data/lib/aws/record/naming.rb +1 -1
  260. data/lib/aws/record/scope.rb +23 -19
  261. data/lib/aws/record/validations.rb +253 -271
  262. data/lib/aws/record/validator.rb +3 -3
  263. data/lib/aws/record/validators/acceptance.rb +1 -3
  264. data/lib/aws/record/validators/block.rb +1 -3
  265. data/lib/aws/record/validators/confirmation.rb +1 -3
  266. data/lib/aws/record/validators/count.rb +2 -4
  267. data/lib/aws/record/validators/exclusion.rb +2 -4
  268. data/lib/aws/record/validators/format.rb +2 -4
  269. data/lib/aws/record/validators/inclusion.rb +1 -3
  270. data/lib/aws/record/validators/length.rb +5 -7
  271. data/lib/aws/record/validators/method.rb +1 -3
  272. data/lib/aws/record/validators/numericality.rb +6 -8
  273. data/lib/aws/record/validators/presence.rb +1 -3
  274. data/lib/aws/redshift.rb +14 -14
  275. data/lib/aws/redshift/client.rb +596 -592
  276. data/lib/aws/redshift/config.rb +1 -1
  277. data/lib/aws/route_53.rb +30 -30
  278. data/lib/aws/route_53/change_batch.rb +7 -7
  279. data/lib/aws/route_53/client.rb +188 -152
  280. data/lib/aws/route_53/hosted_zone.rb +4 -4
  281. data/lib/aws/route_53/hosted_zone_collection.rb +7 -7
  282. data/lib/aws/route_53/resource_record_set.rb +10 -10
  283. data/lib/aws/route_53/resource_record_set_collection.rb +6 -6
  284. data/lib/aws/s3.rb +79 -79
  285. data/lib/aws/s3/access_control_list.rb +44 -36
  286. data/lib/aws/s3/acl_options.rb +51 -51
  287. data/lib/aws/s3/bucket.rb +146 -146
  288. data/lib/aws/s3/bucket_collection.rb +21 -21
  289. data/lib/aws/s3/bucket_lifecycle_configuration.rb +81 -82
  290. data/lib/aws/s3/bucket_tag_collection.rb +4 -2
  291. data/lib/aws/s3/cipher_io.rb +5 -4
  292. data/lib/aws/s3/client.rb +89 -84
  293. data/lib/aws/s3/client/xml.rb +1 -1
  294. data/lib/aws/s3/config.rb +7 -1
  295. data/lib/aws/s3/cors_rule.rb +2 -0
  296. data/lib/aws/s3/cors_rule_collection.rb +42 -40
  297. data/lib/aws/s3/data_options.rb +16 -11
  298. data/lib/aws/s3/encryption_utils.rb +2 -2
  299. data/lib/aws/s3/errors.rb +7 -7
  300. data/lib/aws/s3/multipart_upload.rb +30 -33
  301. data/lib/aws/s3/multipart_upload_collection.rb +8 -6
  302. data/lib/aws/s3/object_collection.rb +35 -35
  303. data/lib/aws/s3/object_metadata.rb +6 -6
  304. data/lib/aws/s3/object_version.rb +4 -4
  305. data/lib/aws/s3/object_version_collection.rb +15 -15
  306. data/lib/aws/s3/policy.rb +2 -2
  307. data/lib/aws/s3/prefixed_collection.rb +9 -5
  308. data/lib/aws/s3/presigned_post.rb +39 -37
  309. data/lib/aws/s3/request.rb +11 -11
  310. data/lib/aws/s3/s3_object.rb +210 -200
  311. data/lib/aws/s3/tree.rb +25 -27
  312. data/lib/aws/s3/tree/child_collection.rb +3 -3
  313. data/lib/aws/s3/tree/leaf_node.rb +2 -2
  314. data/lib/aws/s3/tree/parent.rb +1 -1
  315. data/lib/aws/s3/website_configuration.rb +13 -13
  316. data/lib/aws/simple_db.rb +83 -83
  317. data/lib/aws/simple_db/attribute.rb +9 -7
  318. data/lib/aws/simple_db/attribute_collection.rb +22 -13
  319. data/lib/aws/simple_db/client.rb +107 -107
  320. data/lib/aws/simple_db/config.rb +7 -1
  321. data/lib/aws/simple_db/consistent_read_option.rb +5 -5
  322. data/lib/aws/simple_db/domain.rb +4 -2
  323. data/lib/aws/simple_db/domain_collection.rb +4 -4
  324. data/lib/aws/simple_db/domain_metadata.rb +5 -5
  325. data/lib/aws/simple_db/errors.rb +9 -9
  326. data/lib/aws/simple_db/item.rb +5 -5
  327. data/lib/aws/simple_db/item_collection.rb +83 -81
  328. data/lib/aws/simple_db/item_data.rb +4 -4
  329. data/lib/aws/simple_db/put_attributes.rb +3 -3
  330. data/lib/aws/simple_email_service.rb +140 -140
  331. data/lib/aws/simple_email_service/client.rb +82 -76
  332. data/lib/aws/simple_email_service/config.rb +1 -2
  333. data/lib/aws/simple_email_service/email_address_collection.rb +3 -3
  334. data/lib/aws/simple_email_service/identity.rb +8 -8
  335. data/lib/aws/simple_email_service/quotas.rb +8 -6
  336. data/lib/aws/simple_workflow.rb +106 -106
  337. data/lib/aws/simple_workflow/activity_task.rb +15 -22
  338. data/lib/aws/simple_workflow/activity_task_collection.rb +15 -15
  339. data/lib/aws/simple_workflow/activity_type.rb +23 -23
  340. data/lib/aws/simple_workflow/activity_type_collection.rb +23 -23
  341. data/lib/aws/simple_workflow/client.rb +1004 -956
  342. data/lib/aws/simple_workflow/config.rb +1 -1
  343. data/lib/aws/simple_workflow/count.rb +5 -5
  344. data/lib/aws/simple_workflow/decision_task.rb +129 -129
  345. data/lib/aws/simple_workflow/decision_task_collection.rb +59 -59
  346. data/lib/aws/simple_workflow/domain.rb +11 -11
  347. data/lib/aws/simple_workflow/domain_collection.rb +26 -26
  348. data/lib/aws/simple_workflow/history_event.rb +32 -32
  349. data/lib/aws/simple_workflow/history_event_collection.rb +3 -3
  350. data/lib/aws/simple_workflow/option_formatters.rb +5 -5
  351. data/lib/aws/simple_workflow/request.rb +1 -1
  352. data/lib/aws/simple_workflow/resource.rb +1 -1
  353. data/lib/aws/simple_workflow/type.rb +8 -8
  354. data/lib/aws/simple_workflow/type_collection.rb +15 -15
  355. data/lib/aws/simple_workflow/workflow_execution.rb +70 -72
  356. data/lib/aws/simple_workflow/workflow_execution_collection.rb +130 -130
  357. data/lib/aws/simple_workflow/workflow_type.rb +27 -25
  358. data/lib/aws/simple_workflow/workflow_type_collection.rb +20 -20
  359. data/lib/aws/sns.rb +25 -25
  360. data/lib/aws/sns/client.rb +55 -55
  361. data/lib/aws/sns/config.rb +1 -1
  362. data/lib/aws/sns/policy.rb +1 -1
  363. data/lib/aws/sns/subscription.rb +7 -7
  364. data/lib/aws/sns/subscription_collection.rb +5 -5
  365. data/lib/aws/sns/topic.rb +49 -49
  366. data/lib/aws/sns/topic_collection.rb +2 -2
  367. data/lib/aws/sns/topic_subscription_collection.rb +5 -5
  368. data/lib/aws/sqs.rb +20 -20
  369. data/lib/aws/sqs/client.rb +78 -78
  370. data/lib/aws/sqs/config.rb +1 -1
  371. data/lib/aws/sqs/errors.rb +12 -12
  372. data/lib/aws/sqs/queue.rb +66 -67
  373. data/lib/aws/sqs/queue_collection.rb +16 -8
  374. data/lib/aws/sqs/received_message.rb +7 -6
  375. data/lib/aws/storage_gateway.rb +21 -21
  376. data/lib/aws/storage_gateway/client.rb +269 -202
  377. data/lib/aws/storage_gateway/config.rb +1 -1
  378. data/lib/aws/sts.rb +10 -8
  379. data/lib/aws/sts/client.rb +35 -35
  380. data/lib/aws/sts/session.rb +3 -3
  381. data/lib/aws/version.rb +1 -2
  382. metadata +23 -21
  383. data/lib/aws/core/autoloader.rb +0 -64
  384. data/lib/net/http/connection_pool.rb +0 -226
  385. data/lib/net/http/connection_pool/connection.rb +0 -189
  386. data/lib/net/http/connection_pool/session.rb +0 -126
@@ -17,48 +17,48 @@ module AWS
17
17
  # Data is a light wrapper around a Ruby hash that provides
18
18
  # method missing access to the hash contents.
19
19
  #
20
- # == Method Missing Access
20
+ # ## Method Missing Access
21
21
  #
22
22
  # You can access hash content with methods if their keys
23
23
  # are symbols.
24
24
  #
25
- # data = AWS::Core::Data.new({ :a => 1, :b => 2, :c => true })
26
- # data.a #=> 1
27
- # data.b #=> 2
28
- # data.c #=> true
29
- # data.d #=> raises NoMethodError
25
+ # data = AWS::Core::Data.new({ :a => 1, :b => 2, :c => true })
26
+ # data.a #=> 1
27
+ # data.b #=> 2
28
+ # data.c #=> true
29
+ # data.d #=> raises NoMethodError
30
30
  #
31
- # == Boolean Methods
31
+ # ## Boolean Methods
32
32
  #
33
33
  # Given the structure above you can also use question-mark methods.
34
34
  #
35
- # data.c? #=> true
36
- # data.d? #=> raises NoMethodError
35
+ # data.c? #=> true
36
+ # data.d? #=> raises NoMethodError
37
37
  #
38
- # == Nested Hashes
38
+ # ## Nested Hashes
39
39
  #
40
40
  # If the data contains nested hashes you can chain methods into
41
41
  # the structure.
42
42
  #
43
- # data = AWS::Core::Data.new(:a => { :b => { :c => 'abc' }})
44
- # data.a.b.c #=> 'abc'
43
+ # data = AWS::Core::Data.new(:a => { :b => { :c => 'abc' }})
44
+ # data.a.b.c #=> 'abc'
45
45
  #
46
- # == Nested Arrays
46
+ # ## Nested Arrays
47
47
  #
48
48
  # Arrays are wrapped in {Data::List} objects. They ensure any
49
49
  # data returned is correctly wrapped so you can continue using
50
50
  # method-missing access.
51
51
  #
52
- # data = AWS::Core::Data.new(
53
- # :people => [
54
- # {:name => 'john'},
55
- # {:name => 'jane'},
56
- # ]})
52
+ # data = AWS::Core::Data.new(
53
+ # :people => [
54
+ # {:name => 'john'},
55
+ # {:name => 'jane'},
56
+ # ]})
57
57
  #
58
- # data.people[0].name #=> 'john'
59
- # data.people[1].name #=> 'jane'
58
+ # data.people[0].name #=> 'john'
59
+ # data.people[1].name #=> 'jane'
60
60
  #
61
- # data.people.map(&:name) #=> ['john','jane']
61
+ # data.people.map(&:name) #=> ['john','jane']
62
62
  #
63
63
  class Data
64
64
 
@@ -149,8 +149,8 @@ module AWS
149
149
 
150
150
  # Returns an inspection string from the wrapped data.
151
151
  #
152
- # data = AWS::Core::Data.new({ :a => 1, :b => 2, :c => true })
153
- # data.inspect #=> '{:a=>1, :b=>2, :c=>true}'
152
+ # data = AWS::Core::Data.new({ :a => 1, :b => 2, :c => true })
153
+ # data.inspect #=> '{:a=>1, :b=>2, :c=>true}'
154
154
  #
155
155
  # @return [String]
156
156
  #
@@ -0,0 +1,348 @@
1
+ # Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ require 'net/http'
15
+ require 'net/https'
16
+ require 'thread'
17
+ require 'logger'
18
+
19
+ module AWS
20
+ module Core
21
+ module Http
22
+
23
+ # @attr_reader [URI::HTTP,nil] proxy_uri Returns the configured proxy uri.
24
+ # @attr_reader [Float,nil] http_continue_timeout
25
+ # @attr_reader [Integer,Float] http_idle_timeout
26
+ # @attr_reader [Integer,Float] http_open_timeout
27
+ # @attr_reader [Integer,Float] http_read_timeout
28
+ # @attr_reader [Boolean] http_wire_trace
29
+ # @attr_reader [Logger,nil] logger
30
+ # @attr_reader [Boolean] ssl_verify_peer
31
+ # @attr_reader [String,nil] ssl_ca_file
32
+ # @attr_reader [String,nil] ssl_ca_path
33
+ # @private
34
+ class ConnectionPool
35
+
36
+ @pools_mutex = Mutex.new
37
+ @pools = {}
38
+
39
+ # @private
40
+ OPTIONS = [
41
+ :proxy_uri,
42
+ :http_continue_timeout,
43
+ :http_idle_timeout,
44
+ :http_open_timeout,
45
+ :http_read_timeout,
46
+ :http_wire_trace,
47
+ :logger,
48
+ :ssl_verify_peer,
49
+ :ssl_ca_file,
50
+ :ssl_ca_path,
51
+ ]
52
+
53
+ OPTIONS.each do |attr_name|
54
+ attr_reader(attr_name)
55
+ end
56
+
57
+ alias_method :http_wire_trace?, :http_wire_trace
58
+
59
+ alias_method :ssl_verify_peer?, :ssl_verify_peer
60
+
61
+ # @private
62
+ def initialize options = {}
63
+ # user supplied options are filtered by the class .for method
64
+ options.each_pair do |opt_name, opt_value|
65
+ instance_variable_set("@#{opt_name}", opt_value)
66
+ end
67
+
68
+ # connection pool
69
+ @pool_mutex = Mutex.new
70
+ @pool = Hash.new do |pool,endpoint|
71
+ pool[endpoint] = []
72
+ pool[endpoint]
73
+ end
74
+ end
75
+
76
+ # @return [Hash] a read-only hash of options for this pool.
77
+ def options
78
+ OPTIONS.inject({}) do |options, opt_name|
79
+ options[opt_name] = send(opt_name)
80
+ options
81
+ end.freeze
82
+ end
83
+
84
+ # Makes an HTTP request, yielding a Net::HTTPResponse object.
85
+ #
86
+ # pool.request('http://google.com', Net::HTTP::Get.new('/')) do |resp|
87
+ # puts resp.code # status code
88
+ # puts resp.to_h.inspect # dump the headers
89
+ # puts resp.body
90
+ # end
91
+ #
92
+ # @param [URI::HTTP,URI::HTTPS,String] endpoint The HTTP(S) endpoint to
93
+ # connect to (e.g. 'https://domain.com').
94
+ #
95
+ # @param [Net::HTTPRequest] request The request to make. This can be
96
+ # any request object from Net::HTTP (e.g. Net::HTTP::Get,
97
+ # Net::HTTP::POST, etc).
98
+ #
99
+ # @yieldparam [Net::HTTPResponse] net_http_response
100
+ #
101
+ # @return (see #session_for
102
+ def request endpoint, request, &block
103
+ session_for(endpoint) do |http|
104
+ yield(http.request(request))
105
+ end
106
+ end
107
+
108
+ # @param [URI::HTTP,URI::HTTPS,String] endpoint The HTTP(S) endpoint to
109
+ # connect to (e.g. 'https://domain.com').
110
+ #
111
+ # @yieldparam [Net::HTTPSession] session
112
+ #
113
+ # @return [nil]
114
+ def session_for endpoint, &block
115
+ endpoint = endpoint.to_s
116
+ session = nil
117
+
118
+ # attempt to recycle an already open session
119
+ @pool_mutex.synchronize do
120
+ _clean
121
+ session = @pool[endpoint].shift
122
+ end
123
+
124
+ begin
125
+ session ||= start_session(endpoint)
126
+ session.read_timeout = http_read_timeout
127
+ session.continue_timeout = http_continue_timeout
128
+ yield(session)
129
+ rescue Exception => error
130
+ session.finish if session
131
+ raise error
132
+ else
133
+ # No error raised? Good, check the session into the pool.
134
+ @pool_mutex.synchronize { @pool[endpoint] << session }
135
+ end
136
+ nil
137
+ end
138
+
139
+ # @return [Integer] Returns the count of sessions currently in the pool,
140
+ # not counting those currently in use.
141
+ def size
142
+ @pool_mutex.synchronize do
143
+ size = 0
144
+ @pool.each_pair do |endpoint,sessions|
145
+ size += sessions.size
146
+ end
147
+ size
148
+ end
149
+ end
150
+
151
+ # Removes stale http sessions from the pool (that have exceeded
152
+ # the idle timeout).
153
+ # @return [nil]
154
+ def clean!
155
+ @pool_mutex.synchronize { _clean }
156
+ nil
157
+ end
158
+
159
+ # Closes and removes removes all sessions from the pool.
160
+ # If empty! is called while there are outstanding requests they may
161
+ # get checked back into the pool, leaving the pool in a non-empty state.
162
+ # @return [nil]
163
+ def empty!
164
+ @pool_mutex.synchronize do
165
+ @pool.each_pair do |endpoint,sessions|
166
+ sessions.each(&:finish)
167
+ end
168
+ @pool.clear
169
+ end
170
+ nil
171
+ end
172
+
173
+ class << self
174
+
175
+ # Returns a connection pool constructed from the given options.
176
+ # Calling this method twice with the same options will return
177
+ # the same pool.
178
+ #
179
+ # @option options [URI::HTTP,String] :proxy_uri A proxy to send
180
+ # requests through. Formatted like 'http://proxy.com:123'.
181
+ #
182
+ # @option options [Float] :http_continue_timeout (nil) The number of
183
+ # seconds to wait for a 100-continue response before sending the
184
+ # request body. This option has no effect unless the request has
185
+ # "Expect" header set to "100-continue". Defaults to `nil` which
186
+ # disables this behaviour. This value can safely be set per-request
187
+ # on the session yeidled by {#session_for}.
188
+ #
189
+ # @option options [Float] :http_idle_timeout (15) The number of
190
+ # seconds a connection is allowed to sit idble before it is
191
+ # considered stale. Stale connections are closed and removed
192
+ # from the pool before making a request.
193
+ #
194
+ # @option options [Float] :http_open_timeout (15) The number of
195
+ # seconds to wait when opening a HTTP session before rasing a
196
+ # `Timeout::Error`.
197
+ #
198
+ # @option options [Integer] :http_read_timeout (60) The default
199
+ # number of seconds to wait for response data. This value can
200
+ # safely be set
201
+ # per-request on the session yeidled by {#session_for}.
202
+ #
203
+ # @option options [Boolean] :http_wire_trace (false) When `true`, HTTP
204
+ # debug output will be sent to the `:logger`.
205
+ #
206
+ # @option options [Logger] :logger Where debug output is sent.
207
+ # Defaults to `nil` when `:http_wire_trace` is `false`.
208
+ # Defaults to `Logger.new($stdout)` when `:http_wire_trace` is
209
+ # `true`.
210
+ #
211
+ # @option options [Boolean] :ssl_verify_peer (true) When `true`, SSL
212
+ # peer certificates are verified when establishing a connection.
213
+ #
214
+ # @option options [String] :ssl_ca_file Full path to the SSL
215
+ # certificate authority bundle file that should be used when
216
+ # verifying peer certificates. If you do not pass
217
+ # `:ssl_ca_file` or `:ssl_ca_path` the the system default will be
218
+ # used if available.
219
+ #
220
+ # @option options [String] :ssl_ca_path Full path of the directory
221
+ # that contains the unbundled SSL certificate authority files#
222
+ # for verifying peer certificates. If you do not pass
223
+ # `:ssl_ca_file` or `:ssl_ca_path` the the system default will
224
+ # be used if available.
225
+ #
226
+ # @return [ConnectionPool]
227
+ def new options = {}
228
+ options = pool_options(options)
229
+ @pools_mutex.synchronize do
230
+ @pools[options] ||= super(options)
231
+ end
232
+ end
233
+
234
+ # @return [Array<ConnectionPool>] Returns a list of of the constructed
235
+ # connection pools.
236
+ def pools
237
+ @pools.values
238
+ end
239
+
240
+ private
241
+
242
+ # Filters an option hash, merging in default values.
243
+ # @return [Hash]
244
+ def pool_options options
245
+ wire_trace = !!options[:http_wire_trace]
246
+ logger = options[:logger] || Logger.new($stdout) if wire_trace
247
+ verify_peer = options.key?(:ssl_verify_peer) ?
248
+ !!options[:ssl_verify_peer] : true
249
+ {
250
+ :proxy_uri => URI.parse(options[:proxy_uri].to_s),
251
+ :http_continue_timeout => options[:http_continue_timeout],
252
+ :http_open_timeout => options[:http_open_timeout] || 15,
253
+ :http_idle_timeout => options[:http_idle_timeout] || 15,
254
+ :http_read_timeout => options[:http_read_timeout] || 60,
255
+ :http_wire_trace => wire_trace,
256
+ :logger => logger,
257
+ :ssl_verify_peer => verify_peer,
258
+ :ssl_ca_file => options[:ssl_ca_file],
259
+ :ssl_ca_path => options[:ssl_ca_path],
260
+ }
261
+ end
262
+
263
+ end
264
+
265
+ private
266
+
267
+ # Starts and returns a new HTTP(S) session.
268
+ # @param [String] endpoint
269
+ # @return [Net::HTTPSession]
270
+ def start_session endpoint
271
+
272
+ endpoint = URI.parse(endpoint)
273
+
274
+ args = []
275
+ args << endpoint.host
276
+ args << endpoint.port
277
+ args << proxy_uri.host
278
+ args << proxy_uri.port
279
+ args << proxy_uri.user
280
+ args << proxy_uri.password
281
+
282
+ http = Net::HTTP.new(*args.compact)
283
+ http.extend(SessionExtensions)
284
+ http.set_debug_output(logger) if http_wire_trace?
285
+ http.open_timeout = http_open_timeout
286
+
287
+ if endpoint.scheme == 'https'
288
+ http.use_ssl = true
289
+ if ssl_verify_peer?
290
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
291
+ http.ca_file = ssl_ca_file if ssl_ca_file
292
+ http.ca_path = ssl_ca_path if ssl_ca_path
293
+ else
294
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
295
+ end
296
+ else
297
+ http.use_ssl = false
298
+ end
299
+
300
+ http.start
301
+ http
302
+ end
303
+
304
+ # Removes stale sessions from the pool. This method *must* be called
305
+ # @note **Must** be called behind a `@pool_mutex` synchronize block.
306
+ def _clean
307
+ now = Time.now
308
+ @pool.each_pair do |endpoint,sessions|
309
+ sessions.delete_if do |session|
310
+ if
311
+ session.last_used.nil? or
312
+ now - session.last_used > http_idle_timeout
313
+ then
314
+ session.finish
315
+ true
316
+ end
317
+ end
318
+ end
319
+ end
320
+
321
+ # Helper methods extended onto Net::HTTPSession objects opend by the
322
+ # connection pool.
323
+ # @private
324
+ module SessionExtensions
325
+
326
+ # Sends the request and tracks that this session has been used.
327
+ def request *args, &block
328
+ @last_used = Time.now
329
+ super(*args, &block)
330
+ end
331
+
332
+ # @return [Time,nil]
333
+ def last_used
334
+ @last_used
335
+ end
336
+
337
+ # Attempts to close/finish the session without raising an error.
338
+ def finish
339
+ super
340
+ rescue IOError
341
+ nil
342
+ end
343
+
344
+ end
345
+ end
346
+ end
347
+ end
348
+ end
@@ -11,13 +11,11 @@
11
11
  # ANY KIND, either express or implied. See the License for the specific
12
12
  # language governing permissions and limitations under the License.
13
13
 
14
- require 'net/http/connection_pool'
15
-
16
14
  module AWS
17
15
  module Core
18
16
  module Http
19
17
 
20
- # = NetHttpHandler
18
+ # # NetHttpHandler
21
19
  #
22
20
  # This is the default HTTP handler for the aws-sdk gem. It uses
23
21
  # Ruby's Net::HTTP to make requests. It uses persistent connections
@@ -34,12 +32,12 @@ module AWS
34
32
  SystemStackError, RegexpError, IndexError,
35
33
  ]
36
34
 
37
- # (see Net::HTTP::ConnectionPool.new)
35
+ # (see ConnectionPool.new)
38
36
  def initialize options = {}
39
- @pool = Net::HTTP::ConnectionPool.new(options)
37
+ @pool = ConnectionPool.new(options)
40
38
  end
41
39
 
42
- # @return [Net::HTTP::ConnectionPool]
40
+ # @return [ConnectionPool]
43
41
  attr_reader :pool
44
42
 
45
43
  # Given a populated request object and an empty response object,
@@ -49,28 +47,23 @@ module AWS
49
47
  # @param [Response] response
50
48
  # @return [nil]
51
49
  def handle request, response, &read_block
52
-
53
- options = {}
54
- options[:port] = request.port
55
- options[:ssl] = request.use_ssl?
56
- options[:proxy_uri] = request.proxy_uri
57
- options[:ssl_verify_peer] = request.ssl_verify_peer?
58
- options[:ssl_ca_file] = request.ssl_ca_file if request.ssl_ca_file
59
- options[:ssl_ca_path] = request.ssl_ca_path if request.ssl_ca_path
60
-
61
50
  begin
62
51
 
63
- connection = pool.connection_for(request.host, options)
64
- connection.read_timeout = request.read_timeout
52
+ @pool.session_for(request.endpoint) do |http|
53
+
54
+ http.read_timeout = request.read_timeout
55
+ http.continue_timeout = request.continue_timeout
65
56
 
66
- connection.request(build_net_http_request(request)) do |http_resp|
67
- response.status = http_resp.code.to_i
68
- response.headers = http_resp.to_hash
69
- if block_given? and response.status < 300
70
- http_resp.read_body(&read_block)
71
- else
72
- response.body = http_resp.read_body
57
+ http.request(build_net_http_request(request)) do |net_http_resp|
58
+ response.status = net_http_resp.code.to_i
59
+ response.headers = net_http_resp.to_hash
60
+ if block_given? and response.status < 300
61
+ net_http_resp.read_body(&read_block)
62
+ else
63
+ response.body = net_http_resp.read_body
64
+ end
73
65
  end
66
+
74
67
  end
75
68
 
76
69
  # The first rescue clause is required because Timeout::Error is
@@ -83,9 +76,7 @@ module AWS
83
76
  rescue Exception => error
84
77
  response.network_error = error
85
78
  end
86
-
87
79
  nil
88
-
89
80
  end
90
81
 
91
82
  protected