aws-sdk-v1 1.52.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 (560) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +7 -0
  3. data/LICENSE.txt +12 -0
  4. data/README.md +337 -0
  5. data/bin/aws-rb +179 -0
  6. data/ca-bundle.crt +3554 -0
  7. data/endpoints.json +1671 -0
  8. data/lib/aws-sdk-v1.rb +2 -0
  9. data/lib/aws-sdk.rb +1 -0
  10. data/lib/aws.rb +14 -0
  11. data/lib/aws/api_config/AutoScaling-2011-01-01.yml +1070 -0
  12. data/lib/aws/api_config/CloudFormation-2010-05-15.yml +372 -0
  13. data/lib/aws/api_config/CloudFront-2013-05-12.yml +2448 -0
  14. data/lib/aws/api_config/CloudFront-2013-08-26.yml +2599 -0
  15. data/lib/aws/api_config/CloudFront-2013-09-27.yml +2765 -0
  16. data/lib/aws/api_config/CloudFront-2013-11-11.yml +2886 -0
  17. data/lib/aws/api_config/CloudFront-2013-11-22.yml +2918 -0
  18. data/lib/aws/api_config/CloudFront-2014-01-31.yml +2934 -0
  19. data/lib/aws/api_config/CloudFront-2014-05-31.yml +3100 -0
  20. data/lib/aws/api_config/CloudSearch-2011-02-01.yml +681 -0
  21. data/lib/aws/api_config/CloudSearch-2013-01-01.yml +1164 -0
  22. data/lib/aws/api_config/CloudTrail-2013-11-01.yml +130 -0
  23. data/lib/aws/api_config/CloudWatch-2010-08-01.yml +433 -0
  24. data/lib/aws/api_config/DataPipeline-2012-10-29.yml +422 -0
  25. data/lib/aws/api_config/DirectConnect-2012-10-25.yml +735 -0
  26. data/lib/aws/api_config/DynamoDB-2011-12-05.yml +1168 -0
  27. data/lib/aws/api_config/DynamoDB-2012-08-10.yml +2105 -0
  28. data/lib/aws/api_config/EC2-2013-08-15.yml +4708 -0
  29. data/lib/aws/api_config/EC2-2013-10-01.yml +4726 -0
  30. data/lib/aws/api_config/EC2-2013-10-15.yml +4651 -0
  31. data/lib/aws/api_config/EC2-2014-02-01.yml +4755 -0
  32. data/lib/aws/api_config/EC2-2014-05-01.yml +4812 -0
  33. data/lib/aws/api_config/ELB-2012-06-01.yml +766 -0
  34. data/lib/aws/api_config/EMR-2009-03-31.yml +972 -0
  35. data/lib/aws/api_config/ElastiCache-2013-06-15.yml +1188 -0
  36. data/lib/aws/api_config/ElastiCache-2014-03-24.yml +1375 -0
  37. data/lib/aws/api_config/ElastiCache-2014-07-15.yml +1385 -0
  38. data/lib/aws/api_config/ElasticBeanstalk-2010-12-01.yml +854 -0
  39. data/lib/aws/api_config/ElasticTranscoder-2012-09-25.yml +3082 -0
  40. data/lib/aws/api_config/Glacier-2012-06-01.yml +649 -0
  41. data/lib/aws/api_config/IAM-2010-05-08.yml +1339 -0
  42. data/lib/aws/api_config/ImportExport-2010-06-01.yml +109 -0
  43. data/lib/aws/api_config/Kinesis-2013-12-02.yml +201 -0
  44. data/lib/aws/api_config/OpsWorks-2013-02-18.yml +2025 -0
  45. data/lib/aws/api_config/RDS-2013-05-15.yml +2464 -0
  46. data/lib/aws/api_config/RDS-2013-09-09.yml +2640 -0
  47. data/lib/aws/api_config/Redshift-2012-12-01.yml +2161 -0
  48. data/lib/aws/api_config/Route53-2012-12-12.yml +547 -0
  49. data/lib/aws/api_config/Route53-2013-04-01.yml +889 -0
  50. data/lib/aws/api_config/SNS-2010-03-31.yml +448 -0
  51. data/lib/aws/api_config/SQS-2012-11-05.yml +404 -0
  52. data/lib/aws/api_config/STS-2011-06-15.yml +151 -0
  53. data/lib/aws/api_config/SimpleDB-2009-04-15.yml +306 -0
  54. data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +346 -0
  55. data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +2388 -0
  56. data/lib/aws/api_config/StorageGateway-2012-06-30.yml +748 -0
  57. data/lib/aws/api_config/StorageGateway-2013-06-30.yml +1025 -0
  58. data/lib/aws/api_config/Support-2013-04-15.yml +489 -0
  59. data/lib/aws/auto_scaling.rb +163 -0
  60. data/lib/aws/auto_scaling/activity.rb +102 -0
  61. data/lib/aws/auto_scaling/activity_collection.rb +81 -0
  62. data/lib/aws/auto_scaling/client.rb +48 -0
  63. data/lib/aws/auto_scaling/config.rb +18 -0
  64. data/lib/aws/auto_scaling/errors.rb +22 -0
  65. data/lib/aws/auto_scaling/group.rb +421 -0
  66. data/lib/aws/auto_scaling/group_collection.rb +96 -0
  67. data/lib/aws/auto_scaling/group_options.rb +155 -0
  68. data/lib/aws/auto_scaling/instance.rb +192 -0
  69. data/lib/aws/auto_scaling/instance_collection.rb +63 -0
  70. data/lib/aws/auto_scaling/launch_configuration.rb +162 -0
  71. data/lib/aws/auto_scaling/launch_configuration_collection.rb +160 -0
  72. data/lib/aws/auto_scaling/notification_configuration.rb +89 -0
  73. data/lib/aws/auto_scaling/notification_configuration_collection.rb +183 -0
  74. data/lib/aws/auto_scaling/scaling_policy.rb +142 -0
  75. data/lib/aws/auto_scaling/scaling_policy_collection.rb +72 -0
  76. data/lib/aws/auto_scaling/scaling_policy_options.rb +65 -0
  77. data/lib/aws/auto_scaling/scheduled_action.rb +141 -0
  78. data/lib/aws/auto_scaling/scheduled_action_collection.rb +202 -0
  79. data/lib/aws/auto_scaling/tag.rb +59 -0
  80. data/lib/aws/auto_scaling/tag_collection.rb +114 -0
  81. data/lib/aws/cloud_formation.rb +272 -0
  82. data/lib/aws/cloud_formation/client.rb +48 -0
  83. data/lib/aws/cloud_formation/config.rb +18 -0
  84. data/lib/aws/cloud_formation/errors.rb +22 -0
  85. data/lib/aws/cloud_formation/stack.rb +266 -0
  86. data/lib/aws/cloud_formation/stack_collection.rb +232 -0
  87. data/lib/aws/cloud_formation/stack_event.rb +73 -0
  88. data/lib/aws/cloud_formation/stack_event_collection.rb +47 -0
  89. data/lib/aws/cloud_formation/stack_options.rb +72 -0
  90. data/lib/aws/cloud_formation/stack_output.rb +53 -0
  91. data/lib/aws/cloud_formation/stack_resource.rb +117 -0
  92. data/lib/aws/cloud_formation/stack_resource_collection.rb +83 -0
  93. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +64 -0
  94. data/lib/aws/cloud_formation/stack_summary_collection.rb +123 -0
  95. data/lib/aws/cloud_front.rb +72 -0
  96. data/lib/aws/cloud_front/client.rb +57 -0
  97. data/lib/aws/cloud_front/config.rb +18 -0
  98. data/lib/aws/cloud_front/errors.rb +22 -0
  99. data/lib/aws/cloud_search.rb +73 -0
  100. data/lib/aws/cloud_search/client.rb +40 -0
  101. data/lib/aws/cloud_search/config.rb +18 -0
  102. data/lib/aws/cloud_search/errors.rb +22 -0
  103. data/lib/aws/cloud_trail.rb +72 -0
  104. data/lib/aws/cloud_trail/client.rb +35 -0
  105. data/lib/aws/cloud_trail/config.rb +18 -0
  106. data/lib/aws/cloud_trail/errors.rb +22 -0
  107. data/lib/aws/cloud_watch.rb +118 -0
  108. data/lib/aws/cloud_watch/alarm.rb +293 -0
  109. data/lib/aws/cloud_watch/alarm_collection.rb +153 -0
  110. data/lib/aws/cloud_watch/alarm_history_item.rb +50 -0
  111. data/lib/aws/cloud_watch/alarm_history_item_collection.rb +84 -0
  112. data/lib/aws/cloud_watch/client.rb +40 -0
  113. data/lib/aws/cloud_watch/config.rb +18 -0
  114. data/lib/aws/cloud_watch/errors.rb +22 -0
  115. data/lib/aws/cloud_watch/metric.rb +135 -0
  116. data/lib/aws/cloud_watch/metric_alarm_collection.rb +160 -0
  117. data/lib/aws/cloud_watch/metric_collection.rb +129 -0
  118. data/lib/aws/cloud_watch/metric_statistics.rb +69 -0
  119. data/lib/aws/core.rb +716 -0
  120. data/lib/aws/core/async_handle.rb +90 -0
  121. data/lib/aws/core/cacheable.rb +77 -0
  122. data/lib/aws/core/client.rb +787 -0
  123. data/lib/aws/core/collection.rb +263 -0
  124. data/lib/aws/core/collection/simple.rb +82 -0
  125. data/lib/aws/core/collection/with_limit_and_next_token.rb +71 -0
  126. data/lib/aws/core/collection/with_next_token.rb +97 -0
  127. data/lib/aws/core/configuration.rb +542 -0
  128. data/lib/aws/core/credential_providers.rb +639 -0
  129. data/lib/aws/core/data.rb +247 -0
  130. data/lib/aws/core/deprecations.rb +84 -0
  131. data/lib/aws/core/endpoints.rb +37 -0
  132. data/lib/aws/core/http/connection_pool.rb +369 -0
  133. data/lib/aws/core/http/curb_handler.rb +148 -0
  134. data/lib/aws/core/http/handler.rb +89 -0
  135. data/lib/aws/core/http/net_http_handler.rb +144 -0
  136. data/lib/aws/core/http/patch.rb +102 -0
  137. data/lib/aws/core/http/request.rb +259 -0
  138. data/lib/aws/core/http/response.rb +81 -0
  139. data/lib/aws/core/indifferent_hash.rb +88 -0
  140. data/lib/aws/core/inflection.rb +56 -0
  141. data/lib/aws/core/ini_parser.rb +42 -0
  142. data/lib/aws/core/json_client.rb +47 -0
  143. data/lib/aws/core/json_parser.rb +76 -0
  144. data/lib/aws/core/json_request_builder.rb +35 -0
  145. data/lib/aws/core/json_response_parser.rb +79 -0
  146. data/lib/aws/core/lazy_error_classes.rb +108 -0
  147. data/lib/aws/core/log_formatter.rb +428 -0
  148. data/lib/aws/core/managed_file.rb +32 -0
  149. data/lib/aws/core/meta_utils.rb +45 -0
  150. data/lib/aws/core/model.rb +62 -0
  151. data/lib/aws/core/naming.rb +30 -0
  152. data/lib/aws/core/option_grammar.rb +738 -0
  153. data/lib/aws/core/options/json_serializer.rb +82 -0
  154. data/lib/aws/core/options/validator.rb +155 -0
  155. data/lib/aws/core/options/xml_serializer.rb +118 -0
  156. data/lib/aws/core/page_result.rb +75 -0
  157. data/lib/aws/core/policy.rb +941 -0
  158. data/lib/aws/core/query_client.rb +41 -0
  159. data/lib/aws/core/query_error_parser.rb +24 -0
  160. data/lib/aws/core/query_request_builder.rb +47 -0
  161. data/lib/aws/core/query_response_parser.rb +35 -0
  162. data/lib/aws/core/region.rb +85 -0
  163. data/lib/aws/core/region_collection.rb +80 -0
  164. data/lib/aws/core/resource.rb +413 -0
  165. data/lib/aws/core/resource_cache.rb +40 -0
  166. data/lib/aws/core/response.rb +215 -0
  167. data/lib/aws/core/response_cache.rb +50 -0
  168. data/lib/aws/core/rest_error_parser.rb +24 -0
  169. data/lib/aws/core/rest_json_client.rb +40 -0
  170. data/lib/aws/core/rest_request_builder.rb +154 -0
  171. data/lib/aws/core/rest_response_parser.rb +66 -0
  172. data/lib/aws/core/rest_xml_client.rb +47 -0
  173. data/lib/aws/core/service_interface.rb +83 -0
  174. data/lib/aws/core/signers/base.rb +46 -0
  175. data/lib/aws/core/signers/cloud_front.rb +56 -0
  176. data/lib/aws/core/signers/s3.rb +159 -0
  177. data/lib/aws/core/signers/version_2.rb +72 -0
  178. data/lib/aws/core/signers/version_3.rb +86 -0
  179. data/lib/aws/core/signers/version_3_https.rb +61 -0
  180. data/lib/aws/core/signers/version_4.rb +228 -0
  181. data/lib/aws/core/signers/version_4/chunk_signed_stream.rb +191 -0
  182. data/lib/aws/core/uri_escape.rb +44 -0
  183. data/lib/aws/core/xml/frame.rb +245 -0
  184. data/lib/aws/core/xml/frame_stack.rb +85 -0
  185. data/lib/aws/core/xml/grammar.rb +307 -0
  186. data/lib/aws/core/xml/parser.rb +70 -0
  187. data/lib/aws/core/xml/root_frame.rb +65 -0
  188. data/lib/aws/core/xml/sax_handlers/libxml.rb +47 -0
  189. data/lib/aws/core/xml/sax_handlers/nokogiri.rb +56 -0
  190. data/lib/aws/core/xml/sax_handlers/ox.rb +41 -0
  191. data/lib/aws/core/xml/sax_handlers/rexml.rb +47 -0
  192. data/lib/aws/core/xml/stub.rb +123 -0
  193. data/lib/aws/data_pipeline.rb +72 -0
  194. data/lib/aws/data_pipeline/client.rb +36 -0
  195. data/lib/aws/data_pipeline/config.rb +18 -0
  196. data/lib/aws/data_pipeline/errors.rb +20 -0
  197. data/lib/aws/direct_connect.rb +73 -0
  198. data/lib/aws/direct_connect/client.rb +36 -0
  199. data/lib/aws/direct_connect/config.rb +18 -0
  200. data/lib/aws/direct_connect/errors.rb +22 -0
  201. data/lib/aws/dynamo_db.rb +230 -0
  202. data/lib/aws/dynamo_db/attribute_collection.rb +456 -0
  203. data/lib/aws/dynamo_db/batch_get.rb +213 -0
  204. data/lib/aws/dynamo_db/batch_write.rb +254 -0
  205. data/lib/aws/dynamo_db/binary.rb +35 -0
  206. data/lib/aws/dynamo_db/client.rb +129 -0
  207. data/lib/aws/dynamo_db/client/v20111205.rb +1266 -0
  208. data/lib/aws/dynamo_db/client/v20120810.rb +1409 -0
  209. data/lib/aws/dynamo_db/client_v2.rb +44 -0
  210. data/lib/aws/dynamo_db/config.rb +24 -0
  211. data/lib/aws/dynamo_db/errors.rb +20 -0
  212. data/lib/aws/dynamo_db/expectations.rb +40 -0
  213. data/lib/aws/dynamo_db/item.rb +133 -0
  214. data/lib/aws/dynamo_db/item_collection.rb +856 -0
  215. data/lib/aws/dynamo_db/item_data.rb +31 -0
  216. data/lib/aws/dynamo_db/keys.rb +41 -0
  217. data/lib/aws/dynamo_db/primary_key_element.rb +48 -0
  218. data/lib/aws/dynamo_db/resource.rb +33 -0
  219. data/lib/aws/dynamo_db/table.rb +492 -0
  220. data/lib/aws/dynamo_db/table_collection.rb +165 -0
  221. data/lib/aws/dynamo_db/types.rb +111 -0
  222. data/lib/aws/ec2.rb +428 -0
  223. data/lib/aws/ec2/attachment.rb +135 -0
  224. data/lib/aws/ec2/attachment_collection.rb +54 -0
  225. data/lib/aws/ec2/availability_zone.rb +86 -0
  226. data/lib/aws/ec2/availability_zone_collection.rb +43 -0
  227. data/lib/aws/ec2/block_device_mappings.rb +53 -0
  228. data/lib/aws/ec2/client.rb +154 -0
  229. data/lib/aws/ec2/collection.rb +36 -0
  230. data/lib/aws/ec2/config.rb +21 -0
  231. data/lib/aws/ec2/customer_gateway.rb +90 -0
  232. data/lib/aws/ec2/customer_gateway_collection.rb +73 -0
  233. data/lib/aws/ec2/dhcp_options.rb +106 -0
  234. data/lib/aws/ec2/dhcp_options_collection.rb +87 -0
  235. data/lib/aws/ec2/elastic_ip.rb +209 -0
  236. data/lib/aws/ec2/elastic_ip_collection.rb +93 -0
  237. data/lib/aws/ec2/errors.rb +32 -0
  238. data/lib/aws/ec2/export_task.rb +120 -0
  239. data/lib/aws/ec2/export_task_collection.rb +67 -0
  240. data/lib/aws/ec2/filtered_collection.rb +87 -0
  241. data/lib/aws/ec2/has_permissions.rb +44 -0
  242. data/lib/aws/ec2/image.rb +270 -0
  243. data/lib/aws/ec2/image_collection.rb +219 -0
  244. data/lib/aws/ec2/instance.rb +803 -0
  245. data/lib/aws/ec2/instance_collection.rb +402 -0
  246. data/lib/aws/ec2/internet_gateway.rb +122 -0
  247. data/lib/aws/ec2/internet_gateway/attachment.rb +78 -0
  248. data/lib/aws/ec2/internet_gateway_collection.rb +54 -0
  249. data/lib/aws/ec2/key_pair.rb +82 -0
  250. data/lib/aws/ec2/key_pair_collection.rb +99 -0
  251. data/lib/aws/ec2/network_acl.rb +256 -0
  252. data/lib/aws/ec2/network_acl/association.rb +56 -0
  253. data/lib/aws/ec2/network_acl/entry.rb +147 -0
  254. data/lib/aws/ec2/network_acl_collection.rb +64 -0
  255. data/lib/aws/ec2/network_interface.rb +237 -0
  256. data/lib/aws/ec2/network_interface/attachment.rb +100 -0
  257. data/lib/aws/ec2/network_interface_collection.rb +103 -0
  258. data/lib/aws/ec2/permission_collection.rb +174 -0
  259. data/lib/aws/ec2/region.rb +106 -0
  260. data/lib/aws/ec2/region_collection.rb +51 -0
  261. data/lib/aws/ec2/reserved_instances.rb +57 -0
  262. data/lib/aws/ec2/reserved_instances_collection.rb +40 -0
  263. data/lib/aws/ec2/reserved_instances_offering.rb +60 -0
  264. data/lib/aws/ec2/reserved_instances_offering_collection.rb +45 -0
  265. data/lib/aws/ec2/resource.rb +161 -0
  266. data/lib/aws/ec2/resource_tag_collection.rb +211 -0
  267. data/lib/aws/ec2/route_table.rb +205 -0
  268. data/lib/aws/ec2/route_table/association.rb +119 -0
  269. data/lib/aws/ec2/route_table/route.rb +119 -0
  270. data/lib/aws/ec2/route_table_collection.rb +72 -0
  271. data/lib/aws/ec2/security_group.rb +482 -0
  272. data/lib/aws/ec2/security_group/ip_permission.rb +135 -0
  273. data/lib/aws/ec2/security_group/ip_permission_collection.rb +82 -0
  274. data/lib/aws/ec2/security_group_collection.rb +133 -0
  275. data/lib/aws/ec2/snapshot.rb +143 -0
  276. data/lib/aws/ec2/snapshot_collection.rb +131 -0
  277. data/lib/aws/ec2/subnet.rb +161 -0
  278. data/lib/aws/ec2/subnet_collection.rb +119 -0
  279. data/lib/aws/ec2/tag.rb +81 -0
  280. data/lib/aws/ec2/tag_collection.rb +107 -0
  281. data/lib/aws/ec2/tagged_collection.rb +67 -0
  282. data/lib/aws/ec2/tagged_item.rb +85 -0
  283. data/lib/aws/ec2/volume.rb +185 -0
  284. data/lib/aws/ec2/volume_collection.rb +102 -0
  285. data/lib/aws/ec2/vpc.rb +174 -0
  286. data/lib/aws/ec2/vpc_collection.rb +70 -0
  287. data/lib/aws/ec2/vpn_connection.rb +99 -0
  288. data/lib/aws/ec2/vpn_connection/telemetry.rb +49 -0
  289. data/lib/aws/ec2/vpn_connection_collection.rb +96 -0
  290. data/lib/aws/ec2/vpn_gateway.rb +123 -0
  291. data/lib/aws/ec2/vpn_gateway/attachment.rb +45 -0
  292. data/lib/aws/ec2/vpn_gateway_collection.rb +77 -0
  293. data/lib/aws/elastic_beanstalk.rb +49 -0
  294. data/lib/aws/elastic_beanstalk/client.rb +36 -0
  295. data/lib/aws/elastic_beanstalk/config.rb +18 -0
  296. data/lib/aws/elastic_beanstalk/errors.rb +22 -0
  297. data/lib/aws/elastic_transcoder.rb +29 -0
  298. data/lib/aws/elastic_transcoder/client.rb +48 -0
  299. data/lib/aws/elastic_transcoder/config.rb +18 -0
  300. data/lib/aws/elastic_transcoder/errors.rb +23 -0
  301. data/lib/aws/elasticache.rb +49 -0
  302. data/lib/aws/elasticache/client.rb +41 -0
  303. data/lib/aws/elasticache/config.rb +18 -0
  304. data/lib/aws/elasticache/errors.rb +22 -0
  305. data/lib/aws/elb.rb +66 -0
  306. data/lib/aws/elb/availability_zone_collection.rb +138 -0
  307. data/lib/aws/elb/backend_server_policy_collection.rb +139 -0
  308. data/lib/aws/elb/client.rb +35 -0
  309. data/lib/aws/elb/config.rb +18 -0
  310. data/lib/aws/elb/errors.rb +26 -0
  311. data/lib/aws/elb/instance_collection.rb +168 -0
  312. data/lib/aws/elb/listener.rb +190 -0
  313. data/lib/aws/elb/listener_collection.rb +113 -0
  314. data/lib/aws/elb/listener_opts.rb +45 -0
  315. data/lib/aws/elb/load_balancer.rb +280 -0
  316. data/lib/aws/elb/load_balancer_collection.rb +146 -0
  317. data/lib/aws/elb/load_balancer_policy.rb +93 -0
  318. data/lib/aws/elb/load_balancer_policy_collection.rb +208 -0
  319. data/lib/aws/emr.rb +87 -0
  320. data/lib/aws/emr/client.rb +35 -0
  321. data/lib/aws/emr/config.rb +18 -0
  322. data/lib/aws/emr/errors.rb +22 -0
  323. data/lib/aws/emr/instance_group.rb +138 -0
  324. data/lib/aws/emr/instance_group_collection.rb +82 -0
  325. data/lib/aws/emr/job_flow.rb +307 -0
  326. data/lib/aws/emr/job_flow_collection.rb +183 -0
  327. data/lib/aws/errors.rb +162 -0
  328. data/lib/aws/glacier.rb +79 -0
  329. data/lib/aws/glacier/archive.rb +56 -0
  330. data/lib/aws/glacier/archive_collection.rb +146 -0
  331. data/lib/aws/glacier/client.rb +49 -0
  332. data/lib/aws/glacier/config.rb +19 -0
  333. data/lib/aws/glacier/errors.rb +22 -0
  334. data/lib/aws/glacier/resource.rb +30 -0
  335. data/lib/aws/glacier/vault.rb +145 -0
  336. data/lib/aws/glacier/vault_collection.rb +75 -0
  337. data/lib/aws/glacier/vault_notification_configuration.rb +29 -0
  338. data/lib/aws/iam.rb +408 -0
  339. data/lib/aws/iam/access_key.rb +185 -0
  340. data/lib/aws/iam/access_key_collection.rb +128 -0
  341. data/lib/aws/iam/account_alias_collection.rb +79 -0
  342. data/lib/aws/iam/client.rb +49 -0
  343. data/lib/aws/iam/collection.rb +83 -0
  344. data/lib/aws/iam/config.rb +18 -0
  345. data/lib/aws/iam/errors.rb +22 -0
  346. data/lib/aws/iam/group.rb +111 -0
  347. data/lib/aws/iam/group_collection.rb +132 -0
  348. data/lib/aws/iam/group_policy_collection.rb +47 -0
  349. data/lib/aws/iam/group_user_collection.rb +84 -0
  350. data/lib/aws/iam/login_profile.rb +111 -0
  351. data/lib/aws/iam/mfa_device.rb +52 -0
  352. data/lib/aws/iam/mfa_device_collection.rb +127 -0
  353. data/lib/aws/iam/policy.rb +46 -0
  354. data/lib/aws/iam/policy_collection.rb +188 -0
  355. data/lib/aws/iam/resource.rb +62 -0
  356. data/lib/aws/iam/server_certificate.rb +148 -0
  357. data/lib/aws/iam/server_certificate_collection.rb +138 -0
  358. data/lib/aws/iam/signing_certificate.rb +186 -0
  359. data/lib/aws/iam/signing_certificate_collection.rb +131 -0
  360. data/lib/aws/iam/user.rb +200 -0
  361. data/lib/aws/iam/user_collection.rb +133 -0
  362. data/lib/aws/iam/user_group_collection.rb +98 -0
  363. data/lib/aws/iam/user_policy.rb +90 -0
  364. data/lib/aws/iam/user_policy_collection.rb +45 -0
  365. data/lib/aws/iam/virtual_mfa_device.rb +139 -0
  366. data/lib/aws/iam/virtual_mfa_device_collection.rb +73 -0
  367. data/lib/aws/import_export.rb +73 -0
  368. data/lib/aws/import_export/client.rb +35 -0
  369. data/lib/aws/import_export/config.rb +19 -0
  370. data/lib/aws/import_export/errors.rb +22 -0
  371. data/lib/aws/kinesis.rb +53 -0
  372. data/lib/aws/kinesis/client.rb +35 -0
  373. data/lib/aws/kinesis/config.rb +18 -0
  374. data/lib/aws/kinesis/errors.rb +20 -0
  375. data/lib/aws/ops_works.rb +29 -0
  376. data/lib/aws/ops_works/client.rb +35 -0
  377. data/lib/aws/ops_works/config.rb +18 -0
  378. data/lib/aws/ops_works/errors.rb +20 -0
  379. data/lib/aws/rails.rb +195 -0
  380. data/lib/aws/rds.rb +70 -0
  381. data/lib/aws/rds/client.rb +42 -0
  382. data/lib/aws/rds/config.rb +18 -0
  383. data/lib/aws/rds/db_instance.rb +215 -0
  384. data/lib/aws/rds/db_instance_collection.rb +75 -0
  385. data/lib/aws/rds/db_snapshot.rb +163 -0
  386. data/lib/aws/rds/db_snapshot_collection.rb +89 -0
  387. data/lib/aws/rds/errors.rb +22 -0
  388. data/lib/aws/record.rb +139 -0
  389. data/lib/aws/record/abstract_base.rb +689 -0
  390. data/lib/aws/record/attributes.rb +388 -0
  391. data/lib/aws/record/conversion.rb +38 -0
  392. data/lib/aws/record/dirty_tracking.rb +287 -0
  393. data/lib/aws/record/errors.rb +143 -0
  394. data/lib/aws/record/exceptions.rb +51 -0
  395. data/lib/aws/record/hash_model.rb +204 -0
  396. data/lib/aws/record/hash_model/attributes.rb +195 -0
  397. data/lib/aws/record/hash_model/finder_methods.rb +172 -0
  398. data/lib/aws/record/hash_model/scope.rb +108 -0
  399. data/lib/aws/record/model.rb +453 -0
  400. data/lib/aws/record/model/attributes.rb +377 -0
  401. data/lib/aws/record/model/finder_methods.rb +232 -0
  402. data/lib/aws/record/model/scope.rb +212 -0
  403. data/lib/aws/record/naming.rb +31 -0
  404. data/lib/aws/record/scope.rb +203 -0
  405. data/lib/aws/record/validations.rb +694 -0
  406. data/lib/aws/record/validator.rb +246 -0
  407. data/lib/aws/record/validators/acceptance.rb +49 -0
  408. data/lib/aws/record/validators/block.rb +36 -0
  409. data/lib/aws/record/validators/confirmation.rb +41 -0
  410. data/lib/aws/record/validators/count.rb +106 -0
  411. data/lib/aws/record/validators/exclusion.rb +41 -0
  412. data/lib/aws/record/validators/format.rb +55 -0
  413. data/lib/aws/record/validators/inclusion.rb +54 -0
  414. data/lib/aws/record/validators/length.rb +105 -0
  415. data/lib/aws/record/validators/method.rb +31 -0
  416. data/lib/aws/record/validators/numericality.rb +136 -0
  417. data/lib/aws/record/validators/presence.rb +43 -0
  418. data/lib/aws/redshift.rb +51 -0
  419. data/lib/aws/redshift/client.rb +35 -0
  420. data/lib/aws/redshift/config.rb +18 -0
  421. data/lib/aws/redshift/errors.rb +22 -0
  422. data/lib/aws/route_53.rb +86 -0
  423. data/lib/aws/route_53/change_batch.rb +161 -0
  424. data/lib/aws/route_53/change_info.rb +72 -0
  425. data/lib/aws/route_53/client.rb +38 -0
  426. data/lib/aws/route_53/config.rb +18 -0
  427. data/lib/aws/route_53/errors.rb +22 -0
  428. data/lib/aws/route_53/hosted_zone.rb +134 -0
  429. data/lib/aws/route_53/hosted_zone_collection.rb +101 -0
  430. data/lib/aws/route_53/resource_record_set.rb +251 -0
  431. data/lib/aws/route_53/resource_record_set_collection.rb +110 -0
  432. data/lib/aws/s3.rb +156 -0
  433. data/lib/aws/s3/access_control_list.rb +265 -0
  434. data/lib/aws/s3/acl_object.rb +264 -0
  435. data/lib/aws/s3/acl_options.rb +204 -0
  436. data/lib/aws/s3/bucket.rb +742 -0
  437. data/lib/aws/s3/bucket_collection.rb +162 -0
  438. data/lib/aws/s3/bucket_lifecycle_configuration.rb +473 -0
  439. data/lib/aws/s3/bucket_tag_collection.rb +111 -0
  440. data/lib/aws/s3/bucket_version_collection.rb +79 -0
  441. data/lib/aws/s3/cipher_io.rb +120 -0
  442. data/lib/aws/s3/client.rb +2067 -0
  443. data/lib/aws/s3/client/xml.rb +266 -0
  444. data/lib/aws/s3/config.rb +48 -0
  445. data/lib/aws/s3/cors_rule.rb +108 -0
  446. data/lib/aws/s3/cors_rule_collection.rb +194 -0
  447. data/lib/aws/s3/data_options.rb +191 -0
  448. data/lib/aws/s3/encryption_utils.rb +146 -0
  449. data/lib/aws/s3/errors.rb +94 -0
  450. data/lib/aws/s3/multipart_upload.rb +353 -0
  451. data/lib/aws/s3/multipart_upload_collection.rb +76 -0
  452. data/lib/aws/s3/object_collection.rb +353 -0
  453. data/lib/aws/s3/object_metadata.rb +103 -0
  454. data/lib/aws/s3/object_upload_collection.rb +77 -0
  455. data/lib/aws/s3/object_version.rb +154 -0
  456. data/lib/aws/s3/object_version_collection.rb +89 -0
  457. data/lib/aws/s3/paginated_collection.rb +75 -0
  458. data/lib/aws/s3/policy.rb +74 -0
  459. data/lib/aws/s3/prefix_and_delimiter_collection.rb +47 -0
  460. data/lib/aws/s3/prefixed_collection.rb +85 -0
  461. data/lib/aws/s3/presign_v4.rb +136 -0
  462. data/lib/aws/s3/presigned_post.rb +554 -0
  463. data/lib/aws/s3/request.rb +62 -0
  464. data/lib/aws/s3/s3_object.rb +1784 -0
  465. data/lib/aws/s3/tree.rb +116 -0
  466. data/lib/aws/s3/tree/branch_node.rb +68 -0
  467. data/lib/aws/s3/tree/child_collection.rb +104 -0
  468. data/lib/aws/s3/tree/leaf_node.rb +94 -0
  469. data/lib/aws/s3/tree/node.rb +22 -0
  470. data/lib/aws/s3/tree/parent.rb +87 -0
  471. data/lib/aws/s3/uploaded_part.rb +82 -0
  472. data/lib/aws/s3/uploaded_part_collection.rb +84 -0
  473. data/lib/aws/s3/website_configuration.rb +102 -0
  474. data/lib/aws/simple_db.rb +218 -0
  475. data/lib/aws/simple_db/attribute.rb +156 -0
  476. data/lib/aws/simple_db/attribute_collection.rb +240 -0
  477. data/lib/aws/simple_db/client.rb +67 -0
  478. data/lib/aws/simple_db/config.rb +20 -0
  479. data/lib/aws/simple_db/consistent_read_option.rb +42 -0
  480. data/lib/aws/simple_db/delete_attributes.rb +62 -0
  481. data/lib/aws/simple_db/domain.rb +123 -0
  482. data/lib/aws/simple_db/domain_collection.rb +86 -0
  483. data/lib/aws/simple_db/domain_metadata.rb +110 -0
  484. data/lib/aws/simple_db/errors.rb +55 -0
  485. data/lib/aws/simple_db/expect_condition_option.rb +45 -0
  486. data/lib/aws/simple_db/item.rb +93 -0
  487. data/lib/aws/simple_db/item_collection.rb +654 -0
  488. data/lib/aws/simple_db/item_data.rb +73 -0
  489. data/lib/aws/simple_db/put_attributes.rb +60 -0
  490. data/lib/aws/simple_email_service.rb +443 -0
  491. data/lib/aws/simple_email_service/client.rb +37 -0
  492. data/lib/aws/simple_email_service/config.rb +18 -0
  493. data/lib/aws/simple_email_service/email_address_collection.rb +69 -0
  494. data/lib/aws/simple_email_service/errors.rb +22 -0
  495. data/lib/aws/simple_email_service/identity.rb +230 -0
  496. data/lib/aws/simple_email_service/identity_collection.rb +81 -0
  497. data/lib/aws/simple_email_service/quotas.rb +66 -0
  498. data/lib/aws/simple_workflow.rb +227 -0
  499. data/lib/aws/simple_workflow/activity_task.rb +178 -0
  500. data/lib/aws/simple_workflow/activity_task_collection.rb +123 -0
  501. data/lib/aws/simple_workflow/activity_type.rb +131 -0
  502. data/lib/aws/simple_workflow/activity_type_collection.rb +93 -0
  503. data/lib/aws/simple_workflow/client.rb +69 -0
  504. data/lib/aws/simple_workflow/config.rb +18 -0
  505. data/lib/aws/simple_workflow/count.rb +49 -0
  506. data/lib/aws/simple_workflow/decision_task.rb +603 -0
  507. data/lib/aws/simple_workflow/decision_task_collection.rb +223 -0
  508. data/lib/aws/simple_workflow/domain.rb +122 -0
  509. data/lib/aws/simple_workflow/domain_collection.rb +169 -0
  510. data/lib/aws/simple_workflow/errors.rb +20 -0
  511. data/lib/aws/simple_workflow/history_event.rb +276 -0
  512. data/lib/aws/simple_workflow/history_event_collection.rb +76 -0
  513. data/lib/aws/simple_workflow/option_formatters.rb +82 -0
  514. data/lib/aws/simple_workflow/resource.rb +94 -0
  515. data/lib/aws/simple_workflow/type.rb +89 -0
  516. data/lib/aws/simple_workflow/type_collection.rb +140 -0
  517. data/lib/aws/simple_workflow/workflow_execution.rb +384 -0
  518. data/lib/aws/simple_workflow/workflow_execution_collection.rb +617 -0
  519. data/lib/aws/simple_workflow/workflow_type.rb +177 -0
  520. data/lib/aws/simple_workflow/workflow_type_collection.rb +91 -0
  521. data/lib/aws/sns.rb +76 -0
  522. data/lib/aws/sns/client.rb +35 -0
  523. data/lib/aws/sns/config.rb +18 -0
  524. data/lib/aws/sns/errors.rb +22 -0
  525. data/lib/aws/sns/has_delivery_policy.rb +68 -0
  526. data/lib/aws/sns/message.rb +204 -0
  527. data/lib/aws/sns/originators/from_auto_scaling.rb +68 -0
  528. data/lib/aws/sns/policy.rb +47 -0
  529. data/lib/aws/sns/subscription.rb +165 -0
  530. data/lib/aws/sns/subscription_collection.rb +78 -0
  531. data/lib/aws/sns/topic.rb +403 -0
  532. data/lib/aws/sns/topic_collection.rb +62 -0
  533. data/lib/aws/sns/topic_subscription_collection.rb +54 -0
  534. data/lib/aws/sqs.rb +80 -0
  535. data/lib/aws/sqs/client.rb +53 -0
  536. data/lib/aws/sqs/config.rb +20 -0
  537. data/lib/aws/sqs/errors.rb +125 -0
  538. data/lib/aws/sqs/policy.rb +48 -0
  539. data/lib/aws/sqs/queue.rb +856 -0
  540. data/lib/aws/sqs/queue_collection.rb +186 -0
  541. data/lib/aws/sqs/received_message.rb +190 -0
  542. data/lib/aws/sqs/received_sns_message.rb +116 -0
  543. data/lib/aws/storage_gateway.rb +72 -0
  544. data/lib/aws/storage_gateway/client.rb +42 -0
  545. data/lib/aws/storage_gateway/config.rb +18 -0
  546. data/lib/aws/storage_gateway/errors.rb +22 -0
  547. data/lib/aws/sts.rb +164 -0
  548. data/lib/aws/sts/client.rb +55 -0
  549. data/lib/aws/sts/config.rb +18 -0
  550. data/lib/aws/sts/errors.rb +22 -0
  551. data/lib/aws/sts/federated_session.rb +56 -0
  552. data/lib/aws/sts/policy.rb +30 -0
  553. data/lib/aws/sts/session.rb +48 -0
  554. data/lib/aws/support.rb +29 -0
  555. data/lib/aws/support/client.rb +35 -0
  556. data/lib/aws/support/config.rb +18 -0
  557. data/lib/aws/support/errors.rb +20 -0
  558. data/lib/aws/version.rb +17 -0
  559. data/rails/init.rb +15 -0
  560. metadata +634 -0
@@ -0,0 +1,163 @@
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 'aws/core'
15
+ require 'aws/auto_scaling/config'
16
+
17
+ module AWS
18
+
19
+ # This class is the starting point for working with Auto Scaling.
20
+ #
21
+ # To use Auto Scaling you must first
22
+ # [sign up here](http://aws.amazon.com/autoscaling/).
23
+ #
24
+ # For more information about Auto Scaling:
25
+ #
26
+ # * [Auto Scaling](http://aws.amazon.com/autoscaling/)
27
+ # * [Auto Scaling Documentation](http://aws.amazon.com/documentation/autoscaling/)
28
+ #
29
+ # # Credentials
30
+ #
31
+ # You can setup default credentials for all AWS services via
32
+ # AWS.config:
33
+ #
34
+ # AWS.config(
35
+ # :access_key_id => 'YOUR_ACCESS_KEY_ID',
36
+ # :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
37
+ #
38
+ # Or you can set them directly on the AWS::AutoScaling interface:
39
+ #
40
+ # auto_scaling = AWS::AutoScaling.new(
41
+ # :access_key_id => 'YOUR_ACCESS_KEY_ID',
42
+ # :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
43
+ #
44
+ # # Launch Configurations
45
+ #
46
+ # You need to create a launch configuration before you can create
47
+ # an Auto Scaling Group.
48
+ #
49
+ # # needs a name, image id, and instance type
50
+ # launch_config = auto_scaling.launch_configurations.create(
51
+ # 'launch-config-name', 'ami-12345', 'm1.small')
52
+ #
53
+ # If you have previously created a launch configuration you can
54
+ # reference using the {LaunchConfigurationCollection}.
55
+ #
56
+ # launch_config = auto_scaling.launch_configurations['launch-config-name']
57
+ #
58
+ # # Auto Scaling Groups
59
+ #
60
+ # Given a launch configuration, you can now create an Auto Scaling {Group}.
61
+ #
62
+ # group = auto_scaling.groups.create('group-name',
63
+ # :launch_configuration => launch_config,
64
+ # :availability_zones => %w(us-west-2a us-west-2b),
65
+ # :min_size => 1,
66
+ # :max_size => 4)
67
+ #
68
+ # @!attribute [r] client
69
+ # @return [Client] the low-level AutoScaling client object
70
+ class AutoScaling
71
+
72
+ autoload :Activity, 'aws/auto_scaling/activity'
73
+ autoload :ActivityCollection, 'aws/auto_scaling/activity_collection'
74
+ autoload :Client, 'aws/auto_scaling/client'
75
+ autoload :Errors, 'aws/auto_scaling/errors'
76
+ autoload :Group, 'aws/auto_scaling/group'
77
+ autoload :GroupCollection, 'aws/auto_scaling/group_collection'
78
+ autoload :GroupOptions, 'aws/auto_scaling/group_options'
79
+ autoload :Instance, 'aws/auto_scaling/instance'
80
+ autoload :InstanceCollection, 'aws/auto_scaling/instance_collection'
81
+ autoload :LaunchConfiguration, 'aws/auto_scaling/launch_configuration'
82
+ autoload :LaunchConfigurationCollection, 'aws/auto_scaling/launch_configuration_collection'
83
+ autoload :NotificationConfiguration, 'aws/auto_scaling/notification_configuration'
84
+ autoload :NotificationConfigurationCollection, 'aws/auto_scaling/notification_configuration_collection'
85
+ autoload :ScalingPolicy, 'aws/auto_scaling/scaling_policy'
86
+ autoload :ScalingPolicyCollection, 'aws/auto_scaling/scaling_policy_collection'
87
+ autoload :ScalingPolicyOptions, 'aws/auto_scaling/scaling_policy_options'
88
+ autoload :ScheduledAction, 'aws/auto_scaling/scheduled_action'
89
+ autoload :ScheduledActionCollection, 'aws/auto_scaling/scheduled_action_collection'
90
+ autoload :Tag, 'aws/auto_scaling/tag'
91
+ autoload :TagCollection, 'aws/auto_scaling/tag_collection'
92
+
93
+ include Core::ServiceInterface
94
+
95
+ endpoint_prefix 'autoscaling'
96
+
97
+ # @return [LaunchConfigurationCollection]
98
+ def launch_configurations
99
+ LaunchConfigurationCollection.new(:config => config)
100
+ end
101
+
102
+ # @return [GroupCollection]
103
+ def groups
104
+ GroupCollection.new(:config => config)
105
+ end
106
+
107
+ # @return [TagCollection]
108
+ def tags
109
+ TagCollection.new(:config => config)
110
+ end
111
+
112
+ # @return [NotificationConfigurationCollection]
113
+ def notification_configurations
114
+ NotificationConfigurationCollection.new(:config => config)
115
+ end
116
+
117
+ # @return [AutoScaling::InstancesCollection] Returns a collection of
118
+ # {AutoScaling::Instance} objects. Each of these is a small
119
+ # wrapper around an {EC2::Instance} with additional attributes.
120
+ def instances
121
+ InstanceCollection.new(:config => config)
122
+ end
123
+
124
+ # @return [ActivityCollection]
125
+ def activities
126
+ ActivityCollection.new(:config => config)
127
+ end
128
+
129
+ # @return [ScheduledActionCollection]
130
+ def scheduled_actions
131
+ ScheduledActionCollection.new(:config => config)
132
+ end
133
+
134
+ # Returns a list of all notification types that are supported by
135
+ # Auto Scaling.
136
+ # @return [Array<String>]
137
+ def notification_types
138
+ resp = client.describe_auto_scaling_notification_types
139
+ resp.auto_scaling_notification_types
140
+ end
141
+
142
+ # @return [Array<String>] Returns the list of valid adjustment types.
143
+ def adjustment_types
144
+ client.describe_adjustment_types.adjustment_types.map(&:adjustment_type)
145
+ end
146
+
147
+ # @return [Array<String>] Returns the list of valid scaling process types.
148
+ def scaling_process_types
149
+ client.describe_scaling_process_types.processes.map(&:process_name)
150
+ end
151
+
152
+ # @return [Array<String>] Returns the list of valid metric collection types.
153
+ def metric_collection_types
154
+ client.describe_metric_collection_types.metrics.map(&:metric)
155
+ end
156
+
157
+ # @return [Array<String>] Returns the list of valid metric granularities.
158
+ def metric_collection_granularities
159
+ client.describe_metric_collection_types.granularities.map(&:granularity)
160
+ end
161
+
162
+ end
163
+ end
@@ -0,0 +1,102 @@
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
+
15
+ module AWS
16
+ class AutoScaling
17
+
18
+ # @attr_reader [String] auto_scaling_group_name
19
+ #
20
+ # @attr_reader [String] cause
21
+ #
22
+ # @attr_reader [nil,String] description
23
+ #
24
+ # @attr_reader [String] details
25
+ #
26
+ # @attr_reader [Time] start_time
27
+ #
28
+ # @attr_reader [nil,Time] end_time
29
+ #
30
+ # @attr_reader [Integer] progress
31
+ #
32
+ # @attr_reader [nil,String] status_code
33
+ #
34
+ # @attr_reader [nil,String] status_message
35
+ #
36
+ class Activity < Core::Resource
37
+
38
+ # @api private
39
+ def initialize activity_id, options = {}
40
+ @activity_id = activity_id
41
+ super
42
+ end
43
+
44
+ # @return [String]
45
+ attr_reader :activity_id
46
+
47
+ alias_method :id, :activity_id
48
+
49
+ attribute :auto_scaling_group_name, :static => true
50
+
51
+ attribute :cause, :static => true
52
+
53
+ attribute :description, :static => true
54
+
55
+ attribute :details
56
+
57
+ attribute :start_time, :static => true
58
+
59
+ attribute :end_time
60
+
61
+ attribute :progress
62
+
63
+ attribute :status_code
64
+
65
+ attribute :status_message
66
+
67
+ populates_from(:describe_scaling_activities) do |resp|
68
+ resp.activities.find {|a| a.activity_id == activity_id }
69
+ end
70
+
71
+ populates_from(:terminate_instance_in_auto_scaling_group) do |resp|
72
+ resp.activity if resp.activity.activity_id == activity_id
73
+ end
74
+
75
+ # @return [Group]
76
+ def group
77
+ Group.new(auto_scaling_group_name, :config => config)
78
+ end
79
+
80
+ # @return [Boolean]
81
+ def exists?
82
+ client_opts = {}
83
+ client_opts[:activity_ids] = [activity_id]
84
+ resp = client.describe_scaling_activities(client_opts)
85
+ !resp.activities.empty?
86
+ end
87
+
88
+ protected
89
+
90
+ def get_resource attr_name = nil
91
+ client_opts = {}
92
+ client_opts[:activity_ids] = [activity_id]
93
+ client.describe_scaling_activities(client_opts)
94
+ end
95
+
96
+ def resource_identifiers
97
+ [[:activity_id, activity_id]]
98
+ end
99
+
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,81 @@
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
+ module AWS
15
+ class AutoScaling
16
+
17
+ # Allows you to enumerate Auto Scaling activities
18
+ #
19
+ # Enumerating ALL activities:
20
+ #
21
+ # auto_scaling = AWS::AutoScaling.new
22
+ # auto_scaling.activities.each do |activity|
23
+ # # ...
24
+ # end
25
+ #
26
+ # Enumerating activities for a single Auto Scaling group:
27
+ #
28
+ # group = auto_scaling.groups['group-name']
29
+ # group.activities.each do |activity|
30
+ # # ...
31
+ # end
32
+ #
33
+ # If you know the id of an activity you can get a reference to it:
34
+ #
35
+ # activity = auto_scaling.activities['activity-id']
36
+ class ActivityCollection
37
+
38
+ include Core::Collection::WithLimitAndNextToken
39
+
40
+ # @api private
41
+ def initialize options = {}
42
+ @group = options[:group]
43
+ if @group
44
+ super(@group, options)
45
+ else
46
+ super
47
+ end
48
+ end
49
+
50
+ # @param [String] activity_id
51
+ # @return [Activity]
52
+ def [] activity_id
53
+ Activity.new(activity_id, :config => config)
54
+ end
55
+
56
+ protected
57
+
58
+ def _each_item next_token, limit, options = {}, &block
59
+
60
+ options[:next_token] = next_token if next_token
61
+ options[:max_records] = limit if limit
62
+ options[:auto_scaling_group_name] = @group.name if @group
63
+
64
+ resp = client.describe_scaling_activities(options)
65
+ resp.activities.each do |details|
66
+
67
+ activity = Activity.new_from(
68
+ :describe_scaling_activities, details,
69
+ details.activity_id, :config => config)
70
+
71
+ yield(activity)
72
+
73
+ end
74
+
75
+ resp.data[:next_token]
76
+
77
+ end
78
+
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,48 @@
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
+ module AWS
15
+ class AutoScaling
16
+
17
+ # Client class for Auto Scaling.
18
+ class Client < Core::QueryClient
19
+
20
+ API_VERSION= '2011-01-01'
21
+
22
+ signature_version :Version4, 'autoscaling'
23
+
24
+ # @api private
25
+ CACHEABLE_REQUESTS = Set[
26
+ :describe_adjustment_types,
27
+ :describe_auto_scaling_groups,
28
+ :describe_auto_scaling_instances,
29
+ :describe_auto_scaling_notification_types,
30
+ :describe_launch_configurations,
31
+ :describe_metric_collection_types,
32
+ :describe_notification_configurations,
33
+ :describe_policies,
34
+ :describe_scaling_activities,
35
+ :describe_scaling_process_types,
36
+ :describe_scheduled_actions,
37
+ :describe_tags,
38
+ ]
39
+
40
+ end
41
+
42
+ class Client::V20110101 < Client
43
+
44
+ define_client_methods('2011-01-01')
45
+
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,18 @@
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
+ AWS::Core::Configuration.module_eval do
15
+
16
+ add_service 'AutoScaling', 'auto_scaling', 'autoscaling'
17
+
18
+ end
@@ -0,0 +1,22 @@
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
+ module AWS
15
+ class AutoScaling
16
+ module Errors
17
+
18
+ extend Core::LazyErrorClasses
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,421 @@
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
+ module AWS
15
+ class AutoScaling
16
+
17
+ # @attr_reader [String] arn
18
+ #
19
+ # @attr_reader [Array<String>] availability_zone_names
20
+ #
21
+ # @attr_reader [Time] created_time
22
+ #
23
+ # @attr_reader [Integer] default_cooldown
24
+ #
25
+ # @attr_reader [Integer] desired_capacity
26
+ #
27
+ # @attr_reader [Array<Hash>] enabled_metrics Returns a hash of enabled
28
+ # metric names (keys) and granularities (values).
29
+ #
30
+ # @attr_reader [Integer] health_check_grace_period
31
+ #
32
+ # @attr_reader [Symbol] health_check_type Returns :ec2 or :vpc.
33
+ #
34
+ # @attr_reader [String] launch_configuration_name
35
+ #
36
+ # @attr_reader [Array<String>] load_balancer_names
37
+ #
38
+ # @attr_reader [Integer] min_size
39
+ #
40
+ # @attr_reader [Integer] max_size
41
+ #
42
+ # @attr_reader [String,nil] placement_group
43
+ #
44
+ # @attr_reader [Hash] suspended_processes A hash of suspended process
45
+ # names (keys) and reasons (values).
46
+ #
47
+ class Group < Core::Resource
48
+
49
+ include GroupOptions
50
+
51
+ def initialize name, options = {}
52
+ @name = name
53
+ super
54
+ end
55
+
56
+ # @return [String]
57
+ attr_reader :name
58
+
59
+ attribute :auto_scaling_group_arn, :static => true
60
+
61
+ alias_method :arn, :auto_scaling_group_arn
62
+
63
+ attribute :availability_zone_names, :from => :availability_zones
64
+
65
+ attribute :created_time, :static => true
66
+
67
+ attribute :default_cooldown
68
+
69
+ attribute :desired_capacity
70
+
71
+ attribute :enabled_metrics do
72
+ translates_output do |metrics|
73
+ metrics.inject({}) do |hash,metric|
74
+ hash.merge(metric.metric => metric.granularity)
75
+ end
76
+ end
77
+ end
78
+
79
+ attribute :health_check_grace_period
80
+
81
+ attribute :health_check_type, :to_sym => true
82
+
83
+ attribute :instances
84
+
85
+ protected :instances
86
+
87
+ attribute :launch_configuration_name
88
+
89
+ attribute :load_balancer_names, :static => true
90
+
91
+ attribute :min_size
92
+
93
+ attribute :max_size
94
+
95
+ attribute :placement_group
96
+
97
+ attribute :termination_policies
98
+
99
+ attribute :suspended_processes do
100
+ translates_output do |processes|
101
+ processes.inject({}) do |hash,process|
102
+ hash.merge(process.process_name => process.suspension_reason)
103
+ end
104
+ end
105
+ end
106
+
107
+ attribute :tag_details, :from => :tags
108
+
109
+ protected :tag_details
110
+
111
+ attribute :vpc_zone_identifier
112
+
113
+ protected :vpc_zone_identifier
114
+
115
+ populates_from(:describe_auto_scaling_groups) do |resp|
116
+ resp.auto_scaling_groups.find{|g| g.auto_scaling_group_name == name }
117
+ end
118
+
119
+ # @return [ScalingPolicyCollection]
120
+ def scaling_policies
121
+ ScalingPolicyCollection.new(self)
122
+ end
123
+
124
+ # @return [NotificationConfigurationCollection]
125
+ def notification_configurations
126
+ NotificationConfigurationCollection.new(:group => self)
127
+ end
128
+
129
+ # @return [ScheduledActionCollection]
130
+ def scheduled_actions
131
+ actions = ScheduledActionCollection.new(:config => config)
132
+ actions.filter(:group => self)
133
+ end
134
+
135
+ # @return [Tag]
136
+ def tags
137
+ tag_details.collect do |tag|
138
+ Tag.new(tag.to_hash.merge(:config => config))
139
+ end
140
+ end
141
+
142
+ # @return [LaunchConfiguration]
143
+ def launch_configuration
144
+ LaunchConfiguration.new(launch_configuration_name, :config => config)
145
+ end
146
+
147
+ # @return [ActivityCollection]
148
+ def activities
149
+ ActivityCollection.new(:group => self)
150
+ end
151
+
152
+ # @return [Array<AutoScaling::Instance>]
153
+ def auto_scaling_instances
154
+ instances.collect do |details|
155
+ Instance.new_from(
156
+ :describe_auto_scaling_groups,
157
+ details,
158
+ details.instance_id,
159
+ :auto_scaling_group_name => name, # not provided by the response
160
+ :config => config)
161
+ end
162
+ end
163
+
164
+ # Returns a collection that represents the instances belonging to this
165
+ # Auto Scaling group. You can use this collection to further refine
166
+ # the instances you are interested in:
167
+ #
168
+ # group.ec2_instances.filter('availability-zone', 'us-west-2a').each do |i|
169
+ # puts instance.id
170
+ # end
171
+ #
172
+ # @return [EC2::InstanceCollection] Returns an instance collection
173
+ # (without making a request) that represents the instances
174
+ # belonging to this Auto Scaling group.
175
+ #
176
+ def ec2_instances
177
+ instances = EC2::InstanceCollection.new(:config => config)
178
+ instances.filter('tag:aws:autoscaling:groupName', name)
179
+ end
180
+
181
+ # @return [Array<EC2::Subnet>]
182
+ def subnets
183
+ vpc_zone_identifier.to_s.split(/,/).collect do |subnet_id|
184
+ EC2::Subnet.new(subnet_id, :config => config)
185
+ end
186
+ end
187
+
188
+ # @return [Array<EC2::AvailabilityZone>]
189
+ def availability_zones
190
+ availability_zone_names.collect do |az_name|
191
+ EC2::AvailabilityZone.new(az_name, :config => config)
192
+ end
193
+ end
194
+
195
+ # @return [Array,<ELB::LoadBalancer>]
196
+ def load_balancers
197
+ load_balancer_names.collect do |name|
198
+ ELB::LoadBalancer.new(name, :config => config)
199
+ end
200
+ end
201
+
202
+ # Adjusts the desired size of the Auto Scaling group by initiating
203
+ # scaling activities. When reducing the size of the group, it is
204
+ # not possible to define which Amazon EC2 instances will be
205
+ # terminated. This applies to any Auto Scaling decisions that might
206
+ # result in terminating instances.
207
+ #
208
+ # @param [Integer] capacity The new capacity setting for this Auto
209
+ # Scaling group.
210
+ #
211
+ # @param [Hash] options
212
+ #
213
+ # @option options [Boolean] :honor_cooldown (false)
214
+ #
215
+ # @return [nil]
216
+ #
217
+ def set_desired_capacity capacity, options = {}
218
+ client_opts = {}
219
+ client_opts[:auto_scaling_group_name] = name
220
+ client_opts[:desired_capacity] = capacity
221
+ client_opts[:honor_cooldown] = options[:honor_cooldown] == true
222
+ client.set_desired_capacity(client_opts)
223
+ nil
224
+ end
225
+
226
+ # Suspends processes for this Auto Scaling group.
227
+ #
228
+ # # suspend two processes by name
229
+ # auto_scaling_group.suspend_processes 'Launch', 'AZRebalance'
230
+ #
231
+ # @param [Array<String>] processes A list of process to suspend.
232
+ #
233
+ # @return [nil]
234
+ #
235
+ def suspend_processes *processes
236
+ client_opts = {}
237
+ client_opts[:auto_scaling_group_name] = name
238
+ client_opts[:scaling_processes] = processes.flatten
239
+ client.suspend_processes(client_opts)
240
+ nil
241
+ end
242
+
243
+ # Suspends all processes for this Auto Scaling group.
244
+ # @return [nil]
245
+ def suspend_all_processes
246
+ suspend_processes
247
+ end
248
+
249
+ # Resumes processes for this Auto Scaling group.
250
+ #
251
+ # # resume two processes by name
252
+ # auto_scaling_group.suspend_processes 'Launch', 'AZRebalance'
253
+ #
254
+ # @param [Array<String>] processes A list of process to resume.
255
+ #
256
+ # @return [nil]
257
+ #
258
+ def resume_processes *processes
259
+ client_opts = {}
260
+ client_opts[:auto_scaling_group_name] = name
261
+ client_opts[:scaling_processes] = processes.flatten
262
+ client.resume_processes(client_opts)
263
+ nil
264
+ end
265
+
266
+ # Resumes all processes for this Auto Scaling group.
267
+ # @return [nil]
268
+ def resume_all_processes
269
+ resume_processes
270
+ end
271
+
272
+ # @param [Array<String>] metrics A list of metrics to collect.
273
+ # @return [nil]
274
+ def enable_metrics_collection *metrics
275
+ client_opts = {}
276
+ client_opts[:auto_scaling_group_name] = name
277
+ client_opts[:granularity] = '1Minute'
278
+ client_opts[:metrics] = metrics.flatten
279
+ client.enable_metrics_collection(client_opts)
280
+ nil
281
+ end
282
+
283
+ # Enables all metrics collection for the Auto Scaling group.
284
+ # @return [nil]
285
+ def enable_all_metrics_collection
286
+ enable_metrics_collection
287
+ end
288
+
289
+ # @param [Array<String>] metrics A list of metrics to collect.
290
+ # @return [nil]
291
+ def disable_metrics_collection *metrics
292
+ client_opts = {}
293
+ client_opts[:auto_scaling_group_name] = name
294
+ client_opts[:metrics] = metrics.flatten
295
+ client.disable_metrics_collection(client_opts)
296
+ nil
297
+ end
298
+
299
+ # Disables all metrics collection for the Auto Scaling group.
300
+ # @return [nil]
301
+ def disable_all_metrics_collection
302
+ disable_metrics_collection
303
+ end
304
+
305
+ # Update one or more attributes on the Auto Scaling group.
306
+ #
307
+ # @param (see GroupOptions#group_options)
308
+ #
309
+ # @option (see GroupOptions#group_options)
310
+ #
311
+ # @return [nil]
312
+ #
313
+ def update options = {}
314
+
315
+ group_opts = group_options(options)
316
+
317
+ # tags must be updated using a separate request from the
318
+ # other attributes, *sigh*
319
+ if tags = group_opts.delete(:tags)
320
+ tags.map(&:to_hash).each do |tag|
321
+ tag[:resource_type] = 'auto-scaling-group'
322
+ tag[:resource_id] = name
323
+ end
324
+ client.create_or_update_tags(:tags => tags)
325
+ end
326
+
327
+ unless group_opts.empty?
328
+ client_opts = group_opts.merge(:auto_scaling_group_name => name)
329
+ client.update_auto_scaling_group(client_opts)
330
+ end
331
+
332
+ nil
333
+
334
+ end
335
+
336
+ # Deletes specific tags from this Auto Scaling group.
337
+ #
338
+ # group.delete_tags([
339
+ # { :key => 'role', :value => 'webserver' },
340
+ # ])
341
+ #
342
+ # You may also pass {Tag} objects.
343
+ #
344
+ # @param [Array<Tag,Hash>] tags An array of {Tag} objects or
345
+ # tag hashes to remove. If you pass hashes they should have
346
+ # the following keys:
347
+ # * `:key`
348
+ # * `:value`
349
+ # * `:propagate_at_launch`
350
+ #
351
+ # @return [nil]
352
+ #
353
+ def delete_tags *tags
354
+ tags = tags.flatten.collect do |tag|
355
+ tag.to_hash.merge(
356
+ :resource_type => 'auto-scaling-group',
357
+ :resource_id => name)
358
+ end
359
+ client.delete_tags(:tags => tags)
360
+ nil
361
+ end
362
+
363
+ # Removes all tags from this Auto Scaling group.
364
+ # @return [nil]
365
+ def delete_all_tags
366
+ delete_tags(self.tags)
367
+ nil
368
+ end
369
+
370
+ # Deletes the Auto Scaling group. If you pass `:force` as true
371
+ # then all the instances associated with this group will also
372
+ # be terminated.
373
+ #
374
+ # @see #delete!
375
+ #
376
+ # @param [Hash] options
377
+ #
378
+ # @option options [Boolean] :force (false) When true, the Auto Scaling
379
+ # group will be deleted along with all instances associated with
380
+ # the group, without waiting for all instances to be terminated.
381
+ #
382
+ # @return [nil]
383
+ #
384
+ def delete options = {}
385
+ client_opts = {}
386
+ client_opts[:force_delete] = options[:force] == true
387
+ client_opts[:auto_scaling_group_name] = name
388
+ client.delete_auto_scaling_group(client_opts)
389
+ nil
390
+ end
391
+
392
+ # Deletes the Auto Scaling group along with all instances
393
+ # associated with the group, without waiting for all instances
394
+ # to be terminated.
395
+ # @return [nil]
396
+ def delete!
397
+ delete(:force => true)
398
+ nil
399
+ end
400
+
401
+ # @return [Boolean]
402
+ def exists?
403
+ client_opts = {}
404
+ client_opts[:auto_scaling_group_names] = [name]
405
+ resp = client.describe_auto_scaling_groups(client_opts)
406
+ !resp.auto_scaling_groups.empty?
407
+ end
408
+
409
+ protected
410
+
411
+ def resource_identifiers
412
+ [[:name, name]]
413
+ end
414
+
415
+ def get_resource attr_name = nil
416
+ client.describe_auto_scaling_groups(:auto_scaling_group_names => [name])
417
+ end
418
+
419
+ end
420
+ end
421
+ end