aws-sdk-euca 1.8.5

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 (539) hide show
  1. data/.yardopts +5 -0
  2. data/LICENSE.txt +12 -0
  3. data/README.rdoc +189 -0
  4. data/ca-bundle.crt +3895 -0
  5. data/lib/aws-sdk-euca.rb +79 -0
  6. data/lib/aws-sdk.rb +79 -0
  7. data/lib/aws.rb +14 -0
  8. data/lib/aws/api_config/AutoScaling-2011-01-01.yml +825 -0
  9. data/lib/aws/api_config/CloudFormation-2010-05-15.yml +322 -0
  10. data/lib/aws/api_config/CloudFront-2012-05-05.yml +2102 -0
  11. data/lib/aws/api_config/CloudSearch-2011-02-01.yml +681 -0
  12. data/lib/aws/api_config/CloudWatch-2010-08-01.yml +433 -0
  13. data/lib/aws/api_config/DataPipeline-2012-10-29.yml +422 -0
  14. data/lib/aws/api_config/DynamoDB-2011-12-05.yml +1160 -0
  15. data/lib/aws/api_config/EC2-2013-02-01.yml +4368 -0
  16. data/lib/aws/api_config/ELB-2012-06-01.yml +597 -0
  17. data/lib/aws/api_config/EMR-2009-03-31.yml +370 -0
  18. data/lib/aws/api_config/ElastiCache-2012-03-09.yml +777 -0
  19. data/lib/aws/api_config/ElastiCache-2012-11-15.yml +979 -0
  20. data/lib/aws/api_config/ElasticBeanstalk-2010-12-01.yml +823 -0
  21. data/lib/aws/api_config/ElasticTranscoder-2012-09-25.yml +1036 -0
  22. data/lib/aws/api_config/Glacier-2012-06-01.yml +618 -0
  23. data/lib/aws/api_config/IAM-2010-05-08.yml +1222 -0
  24. data/lib/aws/api_config/ImportExport-2010-06-01.yml +109 -0
  25. data/lib/aws/api_config/OpsWorks-2013-02-18.yml +1463 -0
  26. data/lib/aws/api_config/RDS-2012-09-17.yml +1861 -0
  27. data/lib/aws/api_config/RDS-2013-02-12.yml +2377 -0
  28. data/lib/aws/api_config/Redshift-2012-12-01.yml +1149 -0
  29. data/lib/aws/api_config/Route53-2012-02-29.yml +380 -0
  30. data/lib/aws/api_config/Route53-2012-12-12.yml +547 -0
  31. data/lib/aws/api_config/SNS-2010-03-31.yml +249 -0
  32. data/lib/aws/api_config/SQS-2012-11-05.yml +317 -0
  33. data/lib/aws/api_config/STS-2011-06-15.yml +81 -0
  34. data/lib/aws/api_config/SimpleDB-2009-04-15.yml +306 -0
  35. data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +346 -0
  36. data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +2358 -0
  37. data/lib/aws/api_config/StorageGateway-2012-06-30.yml +748 -0
  38. data/lib/aws/auto_scaling.rb +164 -0
  39. data/lib/aws/auto_scaling/activity.rb +102 -0
  40. data/lib/aws/auto_scaling/activity_collection.rb +82 -0
  41. data/lib/aws/auto_scaling/client.rb +521 -0
  42. data/lib/aws/auto_scaling/config.rb +18 -0
  43. data/lib/aws/auto_scaling/errors.rb +22 -0
  44. data/lib/aws/auto_scaling/group.rb +420 -0
  45. data/lib/aws/auto_scaling/group_collection.rb +96 -0
  46. data/lib/aws/auto_scaling/group_options.rb +146 -0
  47. data/lib/aws/auto_scaling/instance.rb +192 -0
  48. data/lib/aws/auto_scaling/instance_collection.rb +63 -0
  49. data/lib/aws/auto_scaling/launch_configuration.rb +158 -0
  50. data/lib/aws/auto_scaling/launch_configuration_collection.rb +154 -0
  51. data/lib/aws/auto_scaling/notification_configuration.rb +89 -0
  52. data/lib/aws/auto_scaling/notification_configuration_collection.rb +184 -0
  53. data/lib/aws/auto_scaling/request.rb +29 -0
  54. data/lib/aws/auto_scaling/scaling_policy.rb +142 -0
  55. data/lib/aws/auto_scaling/scaling_policy_collection.rb +72 -0
  56. data/lib/aws/auto_scaling/scaling_policy_options.rb +64 -0
  57. data/lib/aws/auto_scaling/scheduled_action.rb +145 -0
  58. data/lib/aws/auto_scaling/scheduled_action_collection.rb +195 -0
  59. data/lib/aws/auto_scaling/tag.rb +59 -0
  60. data/lib/aws/auto_scaling/tag_collection.rb +112 -0
  61. data/lib/aws/cloud_formation.rb +272 -0
  62. data/lib/aws/cloud_formation/client.rb +369 -0
  63. data/lib/aws/cloud_formation/config.rb +18 -0
  64. data/lib/aws/cloud_formation/errors.rb +22 -0
  65. data/lib/aws/cloud_formation/request.rb +29 -0
  66. data/lib/aws/cloud_formation/stack.rb +255 -0
  67. data/lib/aws/cloud_formation/stack_collection.rb +209 -0
  68. data/lib/aws/cloud_formation/stack_event.rb +75 -0
  69. data/lib/aws/cloud_formation/stack_event_collection.rb +47 -0
  70. data/lib/aws/cloud_formation/stack_options.rb +72 -0
  71. data/lib/aws/cloud_formation/stack_output.rb +53 -0
  72. data/lib/aws/cloud_formation/stack_resource.rb +117 -0
  73. data/lib/aws/cloud_formation/stack_resource_collection.rb +84 -0
  74. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +64 -0
  75. data/lib/aws/cloud_formation/stack_summary_collection.rb +123 -0
  76. data/lib/aws/cloud_front.rb +73 -0
  77. data/lib/aws/cloud_front/client.rb +1307 -0
  78. data/lib/aws/cloud_front/config.rb +18 -0
  79. data/lib/aws/cloud_front/errors.rb +22 -0
  80. data/lib/aws/cloud_front/request.rb +44 -0
  81. data/lib/aws/cloud_search.rb +74 -0
  82. data/lib/aws/cloud_search/client.rb +558 -0
  83. data/lib/aws/cloud_search/config.rb +18 -0
  84. data/lib/aws/cloud_search/errors.rb +22 -0
  85. data/lib/aws/cloud_search/request.rb +23 -0
  86. data/lib/aws/cloud_watch.rb +119 -0
  87. data/lib/aws/cloud_watch/alarm.rb +272 -0
  88. data/lib/aws/cloud_watch/alarm_collection.rb +153 -0
  89. data/lib/aws/cloud_watch/alarm_history_item.rb +50 -0
  90. data/lib/aws/cloud_watch/alarm_history_item_collection.rb +84 -0
  91. data/lib/aws/cloud_watch/client.rb +247 -0
  92. data/lib/aws/cloud_watch/config.rb +18 -0
  93. data/lib/aws/cloud_watch/errors.rb +22 -0
  94. data/lib/aws/cloud_watch/metric.rb +135 -0
  95. data/lib/aws/cloud_watch/metric_alarm_collection.rb +160 -0
  96. data/lib/aws/cloud_watch/metric_collection.rb +131 -0
  97. data/lib/aws/cloud_watch/metric_statistics.rb +69 -0
  98. data/lib/aws/cloud_watch/request.rb +23 -0
  99. data/lib/aws/core.rb +587 -0
  100. data/lib/aws/core/async_handle.rb +90 -0
  101. data/lib/aws/core/autoloader.rb +64 -0
  102. data/lib/aws/core/cacheable.rb +78 -0
  103. data/lib/aws/core/client.rb +691 -0
  104. data/lib/aws/core/collection.rb +267 -0
  105. data/lib/aws/core/collection/simple.rb +82 -0
  106. data/lib/aws/core/collection/with_limit_and_next_token.rb +71 -0
  107. data/lib/aws/core/collection/with_next_token.rb +97 -0
  108. data/lib/aws/core/configuration.rb +546 -0
  109. data/lib/aws/core/credential_providers.rb +461 -0
  110. data/lib/aws/core/data.rb +247 -0
  111. data/lib/aws/core/http/curb_handler.rb +155 -0
  112. data/lib/aws/core/http/handler.rb +89 -0
  113. data/lib/aws/core/http/net_http_handler.rb +128 -0
  114. data/lib/aws/core/http/request.rb +263 -0
  115. data/lib/aws/core/http/response.rb +81 -0
  116. data/lib/aws/core/indifferent_hash.rb +88 -0
  117. data/lib/aws/core/inflection.rb +56 -0
  118. data/lib/aws/core/json_client.rb +47 -0
  119. data/lib/aws/core/json_parser.rb +76 -0
  120. data/lib/aws/core/json_request_builder.rb +35 -0
  121. data/lib/aws/core/json_response_parser.rb +79 -0
  122. data/lib/aws/core/lazy_error_classes.rb +90 -0
  123. data/lib/aws/core/log_formatter.rb +462 -0
  124. data/lib/aws/core/managed_file.rb +32 -0
  125. data/lib/aws/core/meta_utils.rb +45 -0
  126. data/lib/aws/core/model.rb +57 -0
  127. data/lib/aws/core/naming.rb +30 -0
  128. data/lib/aws/core/option_grammar.rb +735 -0
  129. data/lib/aws/core/options/json_serializer.rb +82 -0
  130. data/lib/aws/core/options/validator.rb +155 -0
  131. data/lib/aws/core/options/xml_serializer.rb +118 -0
  132. data/lib/aws/core/page_result.rb +75 -0
  133. data/lib/aws/core/policy.rb +916 -0
  134. data/lib/aws/core/query_client.rb +41 -0
  135. data/lib/aws/core/query_error_parser.rb +24 -0
  136. data/lib/aws/core/query_request_builder.rb +47 -0
  137. data/lib/aws/core/query_response_parser.rb +35 -0
  138. data/lib/aws/core/resource.rb +413 -0
  139. data/lib/aws/core/resource_cache.rb +40 -0
  140. data/lib/aws/core/response.rb +208 -0
  141. data/lib/aws/core/response_cache.rb +50 -0
  142. data/lib/aws/core/rest_error_parser.rb +24 -0
  143. data/lib/aws/core/rest_json_client.rb +40 -0
  144. data/lib/aws/core/rest_request_builder.rb +146 -0
  145. data/lib/aws/core/rest_response_parser.rb +66 -0
  146. data/lib/aws/core/rest_xml_client.rb +47 -0
  147. data/lib/aws/core/service_interface.rb +61 -0
  148. data/lib/aws/core/signature/version_2.rb +56 -0
  149. data/lib/aws/core/signature/version_3.rb +77 -0
  150. data/lib/aws/core/signature/version_3_https.rb +54 -0
  151. data/lib/aws/core/signature/version_4.rb +135 -0
  152. data/lib/aws/core/signer.rb +46 -0
  153. data/lib/aws/core/uri_escape.rb +44 -0
  154. data/lib/aws/core/xml/frame.rb +244 -0
  155. data/lib/aws/core/xml/frame_stack.rb +85 -0
  156. data/lib/aws/core/xml/grammar.rb +307 -0
  157. data/lib/aws/core/xml/parser.rb +70 -0
  158. data/lib/aws/core/xml/root_frame.rb +65 -0
  159. data/lib/aws/core/xml/sax_handlers/libxml.rb +47 -0
  160. data/lib/aws/core/xml/sax_handlers/nokogiri.rb +55 -0
  161. data/lib/aws/core/xml/sax_handlers/ox.rb +41 -0
  162. data/lib/aws/core/xml/sax_handlers/rexml.rb +43 -0
  163. data/lib/aws/core/xml/stub.rb +123 -0
  164. data/lib/aws/data_pipeline.rb +73 -0
  165. data/lib/aws/data_pipeline/client.rb +339 -0
  166. data/lib/aws/data_pipeline/config.rb +18 -0
  167. data/lib/aws/data_pipeline/errors.rb +20 -0
  168. data/lib/aws/data_pipeline/request.rb +26 -0
  169. data/lib/aws/dynamo_db.rb +206 -0
  170. data/lib/aws/dynamo_db/attribute_collection.rb +461 -0
  171. data/lib/aws/dynamo_db/batch_get.rb +213 -0
  172. data/lib/aws/dynamo_db/batch_write.rb +252 -0
  173. data/lib/aws/dynamo_db/binary.rb +35 -0
  174. data/lib/aws/dynamo_db/client.rb +904 -0
  175. data/lib/aws/dynamo_db/config.rb +24 -0
  176. data/lib/aws/dynamo_db/errors.rb +20 -0
  177. data/lib/aws/dynamo_db/expectations.rb +40 -0
  178. data/lib/aws/dynamo_db/item.rb +133 -0
  179. data/lib/aws/dynamo_db/item_collection.rb +852 -0
  180. data/lib/aws/dynamo_db/item_data.rb +31 -0
  181. data/lib/aws/dynamo_db/keys.rb +41 -0
  182. data/lib/aws/dynamo_db/primary_key_element.rb +48 -0
  183. data/lib/aws/dynamo_db/request.rb +26 -0
  184. data/lib/aws/dynamo_db/resource.rb +33 -0
  185. data/lib/aws/dynamo_db/table.rb +491 -0
  186. data/lib/aws/dynamo_db/table_collection.rb +165 -0
  187. data/lib/aws/dynamo_db/types.rb +111 -0
  188. data/lib/aws/ec2.rb +440 -0
  189. data/lib/aws/ec2/attachment.rb +140 -0
  190. data/lib/aws/ec2/attachment_collection.rb +54 -0
  191. data/lib/aws/ec2/availability_zone.rb +86 -0
  192. data/lib/aws/ec2/availability_zone_collection.rb +43 -0
  193. data/lib/aws/ec2/block_device_mappings.rb +53 -0
  194. data/lib/aws/ec2/client.rb +3621 -0
  195. data/lib/aws/ec2/collection.rb +36 -0
  196. data/lib/aws/ec2/config.rb +18 -0
  197. data/lib/aws/ec2/config_transform.rb +63 -0
  198. data/lib/aws/ec2/customer_gateway.rb +90 -0
  199. data/lib/aws/ec2/customer_gateway_collection.rb +73 -0
  200. data/lib/aws/ec2/dhcp_options.rb +106 -0
  201. data/lib/aws/ec2/dhcp_options_collection.rb +87 -0
  202. data/lib/aws/ec2/elastic_ip.rb +208 -0
  203. data/lib/aws/ec2/elastic_ip_collection.rb +97 -0
  204. data/lib/aws/ec2/errors.rb +32 -0
  205. data/lib/aws/ec2/export_task.rb +120 -0
  206. data/lib/aws/ec2/export_task_collection.rb +67 -0
  207. data/lib/aws/ec2/filtered_collection.rb +89 -0
  208. data/lib/aws/ec2/has_permissions.rb +44 -0
  209. data/lib/aws/ec2/image.rb +264 -0
  210. data/lib/aws/ec2/image_collection.rb +228 -0
  211. data/lib/aws/ec2/instance.rb +796 -0
  212. data/lib/aws/ec2/instance_collection.rb +372 -0
  213. data/lib/aws/ec2/internet_gateway.rb +122 -0
  214. data/lib/aws/ec2/internet_gateway/attachment.rb +78 -0
  215. data/lib/aws/ec2/internet_gateway_collection.rb +54 -0
  216. data/lib/aws/ec2/key_pair.rb +82 -0
  217. data/lib/aws/ec2/key_pair_collection.rb +99 -0
  218. data/lib/aws/ec2/network_acl.rb +256 -0
  219. data/lib/aws/ec2/network_acl/association.rb +56 -0
  220. data/lib/aws/ec2/network_acl/entry.rb +147 -0
  221. data/lib/aws/ec2/network_acl_collection.rb +64 -0
  222. data/lib/aws/ec2/network_interface.rb +228 -0
  223. data/lib/aws/ec2/network_interface/attachment.rb +100 -0
  224. data/lib/aws/ec2/network_interface_collection.rb +103 -0
  225. data/lib/aws/ec2/permission_collection.rb +174 -0
  226. data/lib/aws/ec2/region.rb +106 -0
  227. data/lib/aws/ec2/region_collection.rb +51 -0
  228. data/lib/aws/ec2/request.rb +21 -0
  229. data/lib/aws/ec2/reserved_instances.rb +56 -0
  230. data/lib/aws/ec2/reserved_instances_collection.rb +40 -0
  231. data/lib/aws/ec2/reserved_instances_offering.rb +60 -0
  232. data/lib/aws/ec2/reserved_instances_offering_collection.rb +39 -0
  233. data/lib/aws/ec2/resource.rb +161 -0
  234. data/lib/aws/ec2/resource_tag_collection.rb +211 -0
  235. data/lib/aws/ec2/route_table.rb +205 -0
  236. data/lib/aws/ec2/route_table/association.rb +119 -0
  237. data/lib/aws/ec2/route_table/route.rb +119 -0
  238. data/lib/aws/ec2/route_table_collection.rb +72 -0
  239. data/lib/aws/ec2/security_group.rb +484 -0
  240. data/lib/aws/ec2/security_group/ip_permission.rb +135 -0
  241. data/lib/aws/ec2/security_group/ip_permission_collection.rb +82 -0
  242. data/lib/aws/ec2/security_group_collection.rb +135 -0
  243. data/lib/aws/ec2/snapshot.rb +143 -0
  244. data/lib/aws/ec2/snapshot_collection.rb +132 -0
  245. data/lib/aws/ec2/subnet.rb +161 -0
  246. data/lib/aws/ec2/subnet_collection.rb +115 -0
  247. data/lib/aws/ec2/tag.rb +81 -0
  248. data/lib/aws/ec2/tag_collection.rb +107 -0
  249. data/lib/aws/ec2/tagged_collection.rb +53 -0
  250. data/lib/aws/ec2/tagged_item.rb +85 -0
  251. data/lib/aws/ec2/volume.rb +174 -0
  252. data/lib/aws/ec2/volume_collection.rb +101 -0
  253. data/lib/aws/ec2/vpc.rb +166 -0
  254. data/lib/aws/ec2/vpc_collection.rb +70 -0
  255. data/lib/aws/ec2/vpn_connection.rb +99 -0
  256. data/lib/aws/ec2/vpn_connection/telemetry.rb +49 -0
  257. data/lib/aws/ec2/vpn_connection_collection.rb +96 -0
  258. data/lib/aws/ec2/vpn_gateway.rb +123 -0
  259. data/lib/aws/ec2/vpn_gateway/attachment.rb +45 -0
  260. data/lib/aws/ec2/vpn_gateway_collection.rb +77 -0
  261. data/lib/aws/elastic_beanstalk.rb +50 -0
  262. data/lib/aws/elastic_beanstalk/client.rb +867 -0
  263. data/lib/aws/elastic_beanstalk/config.rb +18 -0
  264. data/lib/aws/elastic_beanstalk/errors.rb +22 -0
  265. data/lib/aws/elastic_beanstalk/request.rb +29 -0
  266. data/lib/aws/elastic_transcoder.rb +30 -0
  267. data/lib/aws/elastic_transcoder/client.rb +672 -0
  268. data/lib/aws/elastic_transcoder/config.rb +18 -0
  269. data/lib/aws/elastic_transcoder/errors.rb +23 -0
  270. data/lib/aws/elastic_transcoder/request.rb +30 -0
  271. data/lib/aws/elasticache.rb +50 -0
  272. data/lib/aws/elasticache/client.rb +920 -0
  273. data/lib/aws/elasticache/config.rb +18 -0
  274. data/lib/aws/elasticache/errors.rb +22 -0
  275. data/lib/aws/elasticache/request.rb +23 -0
  276. data/lib/aws/elb.rb +67 -0
  277. data/lib/aws/elb/availability_zone_collection.rb +138 -0
  278. data/lib/aws/elb/backend_server_policy_collection.rb +139 -0
  279. data/lib/aws/elb/client.rb +500 -0
  280. data/lib/aws/elb/config.rb +18 -0
  281. data/lib/aws/elb/errors.rb +26 -0
  282. data/lib/aws/elb/instance_collection.rb +173 -0
  283. data/lib/aws/elb/listener.rb +190 -0
  284. data/lib/aws/elb/listener_collection.rb +113 -0
  285. data/lib/aws/elb/listener_opts.rb +45 -0
  286. data/lib/aws/elb/load_balancer.rb +281 -0
  287. data/lib/aws/elb/load_balancer_collection.rb +134 -0
  288. data/lib/aws/elb/load_balancer_policy.rb +93 -0
  289. data/lib/aws/elb/load_balancer_policy_collection.rb +208 -0
  290. data/lib/aws/elb/request.rb +29 -0
  291. data/lib/aws/emr.rb +86 -0
  292. data/lib/aws/emr/client.rb +330 -0
  293. data/lib/aws/emr/config.rb +18 -0
  294. data/lib/aws/emr/errors.rb +22 -0
  295. data/lib/aws/emr/instance_group.rb +138 -0
  296. data/lib/aws/emr/instance_group_collection.rb +82 -0
  297. data/lib/aws/emr/job_flow.rb +306 -0
  298. data/lib/aws/emr/job_flow_collection.rb +185 -0
  299. data/lib/aws/emr/request.rb +23 -0
  300. data/lib/aws/errors.rb +162 -0
  301. data/lib/aws/glacier.rb +80 -0
  302. data/lib/aws/glacier/archive.rb +56 -0
  303. data/lib/aws/glacier/archive_collection.rb +146 -0
  304. data/lib/aws/glacier/client.rb +286 -0
  305. data/lib/aws/glacier/config.rb +19 -0
  306. data/lib/aws/glacier/errors.rb +22 -0
  307. data/lib/aws/glacier/request.rb +34 -0
  308. data/lib/aws/glacier/resource.rb +30 -0
  309. data/lib/aws/glacier/vault.rb +145 -0
  310. data/lib/aws/glacier/vault_collection.rb +75 -0
  311. data/lib/aws/glacier/vault_notification_configuration.rb +29 -0
  312. data/lib/aws/iam.rb +420 -0
  313. data/lib/aws/iam/access_key.rb +180 -0
  314. data/lib/aws/iam/access_key_collection.rb +128 -0
  315. data/lib/aws/iam/account_alias_collection.rb +79 -0
  316. data/lib/aws/iam/client.rb +1092 -0
  317. data/lib/aws/iam/collection.rb +83 -0
  318. data/lib/aws/iam/config.rb +18 -0
  319. data/lib/aws/iam/errors.rb +22 -0
  320. data/lib/aws/iam/group.rb +111 -0
  321. data/lib/aws/iam/group_collection.rb +132 -0
  322. data/lib/aws/iam/group_policy_collection.rb +47 -0
  323. data/lib/aws/iam/group_user_collection.rb +84 -0
  324. data/lib/aws/iam/login_profile.rb +99 -0
  325. data/lib/aws/iam/mfa_device.rb +52 -0
  326. data/lib/aws/iam/mfa_device_collection.rb +127 -0
  327. data/lib/aws/iam/policy.rb +46 -0
  328. data/lib/aws/iam/policy_collection.rb +188 -0
  329. data/lib/aws/iam/request.rb +29 -0
  330. data/lib/aws/iam/resource.rb +62 -0
  331. data/lib/aws/iam/server_certificate.rb +141 -0
  332. data/lib/aws/iam/server_certificate_collection.rb +138 -0
  333. data/lib/aws/iam/signing_certificate.rb +169 -0
  334. data/lib/aws/iam/signing_certificate_collection.rb +131 -0
  335. data/lib/aws/iam/user.rb +205 -0
  336. data/lib/aws/iam/user_collection.rb +133 -0
  337. data/lib/aws/iam/user_group_collection.rb +98 -0
  338. data/lib/aws/iam/user_policy.rb +90 -0
  339. data/lib/aws/iam/user_policy_collection.rb +45 -0
  340. data/lib/aws/iam/virtual_mfa_device.rb +139 -0
  341. data/lib/aws/iam/virtual_mfa_device_collection.rb +73 -0
  342. data/lib/aws/import_export.rb +73 -0
  343. data/lib/aws/import_export/client.rb +109 -0
  344. data/lib/aws/import_export/config.rb +19 -0
  345. data/lib/aws/import_export/errors.rb +22 -0
  346. data/lib/aws/import_export/request.rb +23 -0
  347. data/lib/aws/ops_works.rb +30 -0
  348. data/lib/aws/ops_works/client.rb +713 -0
  349. data/lib/aws/ops_works/config.rb +18 -0
  350. data/lib/aws/ops_works/errors.rb +20 -0
  351. data/lib/aws/ops_works/request.rb +27 -0
  352. data/lib/aws/rails.rb +195 -0
  353. data/lib/aws/rds.rb +71 -0
  354. data/lib/aws/rds/client.rb +2228 -0
  355. data/lib/aws/rds/config.rb +18 -0
  356. data/lib/aws/rds/db_instance.rb +205 -0
  357. data/lib/aws/rds/db_instance_collection.rb +75 -0
  358. data/lib/aws/rds/db_snapshot.rb +163 -0
  359. data/lib/aws/rds/db_snapshot_collection.rb +89 -0
  360. data/lib/aws/rds/errors.rb +22 -0
  361. data/lib/aws/rds/request.rb +23 -0
  362. data/lib/aws/record.rb +116 -0
  363. data/lib/aws/record/abstract_base.rb +701 -0
  364. data/lib/aws/record/attributes.rb +384 -0
  365. data/lib/aws/record/conversion.rb +38 -0
  366. data/lib/aws/record/dirty_tracking.rb +285 -0
  367. data/lib/aws/record/errors.rb +143 -0
  368. data/lib/aws/record/exceptions.rb +48 -0
  369. data/lib/aws/record/hash_model.rb +161 -0
  370. data/lib/aws/record/hash_model/attributes.rb +197 -0
  371. data/lib/aws/record/hash_model/finder_methods.rb +172 -0
  372. data/lib/aws/record/hash_model/scope.rb +108 -0
  373. data/lib/aws/record/model.rb +427 -0
  374. data/lib/aws/record/model/attributes.rb +379 -0
  375. data/lib/aws/record/model/finder_methods.rb +232 -0
  376. data/lib/aws/record/model/scope.rb +213 -0
  377. data/lib/aws/record/naming.rb +31 -0
  378. data/lib/aws/record/scope.rb +199 -0
  379. data/lib/aws/record/validations.rb +712 -0
  380. data/lib/aws/record/validator.rb +246 -0
  381. data/lib/aws/record/validators/acceptance.rb +51 -0
  382. data/lib/aws/record/validators/block.rb +38 -0
  383. data/lib/aws/record/validators/confirmation.rb +43 -0
  384. data/lib/aws/record/validators/count.rb +108 -0
  385. data/lib/aws/record/validators/exclusion.rb +43 -0
  386. data/lib/aws/record/validators/format.rb +57 -0
  387. data/lib/aws/record/validators/inclusion.rb +56 -0
  388. data/lib/aws/record/validators/length.rb +107 -0
  389. data/lib/aws/record/validators/method.rb +33 -0
  390. data/lib/aws/record/validators/numericality.rb +138 -0
  391. data/lib/aws/record/validators/presence.rb +45 -0
  392. data/lib/aws/redshift.rb +52 -0
  393. data/lib/aws/redshift/client.rb +1291 -0
  394. data/lib/aws/redshift/config.rb +18 -0
  395. data/lib/aws/redshift/errors.rb +22 -0
  396. data/lib/aws/redshift/request.rb +29 -0
  397. data/lib/aws/route_53.rb +87 -0
  398. data/lib/aws/route_53/change_batch.rb +159 -0
  399. data/lib/aws/route_53/change_info.rb +72 -0
  400. data/lib/aws/route_53/client.rb +387 -0
  401. data/lib/aws/route_53/config.rb +18 -0
  402. data/lib/aws/route_53/errors.rb +22 -0
  403. data/lib/aws/route_53/hosted_zone.rb +111 -0
  404. data/lib/aws/route_53/hosted_zone_collection.rb +100 -0
  405. data/lib/aws/route_53/request.rb +23 -0
  406. data/lib/aws/route_53/resource_record_set.rb +237 -0
  407. data/lib/aws/route_53/resource_record_set_collection.rb +110 -0
  408. data/lib/aws/s3.rb +155 -0
  409. data/lib/aws/s3/access_control_list.rb +257 -0
  410. data/lib/aws/s3/acl_object.rb +264 -0
  411. data/lib/aws/s3/acl_options.rb +204 -0
  412. data/lib/aws/s3/bucket.rb +742 -0
  413. data/lib/aws/s3/bucket_collection.rb +160 -0
  414. data/lib/aws/s3/bucket_lifecycle_configuration.rb +458 -0
  415. data/lib/aws/s3/bucket_tag_collection.rb +109 -0
  416. data/lib/aws/s3/bucket_version_collection.rb +77 -0
  417. data/lib/aws/s3/cipher_io.rb +119 -0
  418. data/lib/aws/s3/client.rb +1700 -0
  419. data/lib/aws/s3/client/xml.rb +231 -0
  420. data/lib/aws/s3/config.rb +36 -0
  421. data/lib/aws/s3/cors_rule.rb +106 -0
  422. data/lib/aws/s3/cors_rule_collection.rb +192 -0
  423. data/lib/aws/s3/data_options.rb +185 -0
  424. data/lib/aws/s3/encryption_utils.rb +139 -0
  425. data/lib/aws/s3/errors.rb +94 -0
  426. data/lib/aws/s3/multipart_upload.rb +320 -0
  427. data/lib/aws/s3/multipart_upload_collection.rb +68 -0
  428. data/lib/aws/s3/object_collection.rb +355 -0
  429. data/lib/aws/s3/object_metadata.rb +96 -0
  430. data/lib/aws/s3/object_upload_collection.rb +77 -0
  431. data/lib/aws/s3/object_version.rb +148 -0
  432. data/lib/aws/s3/object_version_collection.rb +89 -0
  433. data/lib/aws/s3/paginated_collection.rb +75 -0
  434. data/lib/aws/s3/policy.rb +74 -0
  435. data/lib/aws/s3/prefix_and_delimiter_collection.rb +47 -0
  436. data/lib/aws/s3/prefixed_collection.rb +81 -0
  437. data/lib/aws/s3/presigned_post.rb +555 -0
  438. data/lib/aws/s3/request.rb +201 -0
  439. data/lib/aws/s3/s3_object.rb +1690 -0
  440. data/lib/aws/s3/tree.rb +118 -0
  441. data/lib/aws/s3/tree/branch_node.rb +68 -0
  442. data/lib/aws/s3/tree/child_collection.rb +104 -0
  443. data/lib/aws/s3/tree/leaf_node.rb +94 -0
  444. data/lib/aws/s3/tree/node.rb +22 -0
  445. data/lib/aws/s3/tree/parent.rb +87 -0
  446. data/lib/aws/s3/uploaded_part.rb +80 -0
  447. data/lib/aws/s3/uploaded_part_collection.rb +84 -0
  448. data/lib/aws/s3/website_configuration.rb +102 -0
  449. data/lib/aws/simple_db.rb +219 -0
  450. data/lib/aws/simple_db/attribute.rb +154 -0
  451. data/lib/aws/simple_db/attribute_collection.rb +231 -0
  452. data/lib/aws/simple_db/client.rb +287 -0
  453. data/lib/aws/simple_db/config.rb +20 -0
  454. data/lib/aws/simple_db/consistent_read_option.rb +42 -0
  455. data/lib/aws/simple_db/delete_attributes.rb +62 -0
  456. data/lib/aws/simple_db/domain.rb +121 -0
  457. data/lib/aws/simple_db/domain_collection.rb +86 -0
  458. data/lib/aws/simple_db/domain_metadata.rb +110 -0
  459. data/lib/aws/simple_db/errors.rb +55 -0
  460. data/lib/aws/simple_db/expect_condition_option.rb +45 -0
  461. data/lib/aws/simple_db/item.rb +93 -0
  462. data/lib/aws/simple_db/item_collection.rb +649 -0
  463. data/lib/aws/simple_db/item_data.rb +73 -0
  464. data/lib/aws/simple_db/put_attributes.rb +60 -0
  465. data/lib/aws/simple_db/request.rb +23 -0
  466. data/lib/aws/simple_email_service.rb +428 -0
  467. data/lib/aws/simple_email_service/client.rb +276 -0
  468. data/lib/aws/simple_email_service/config.rb +19 -0
  469. data/lib/aws/simple_email_service/email_address_collection.rb +69 -0
  470. data/lib/aws/simple_email_service/errors.rb +22 -0
  471. data/lib/aws/simple_email_service/identity.rb +209 -0
  472. data/lib/aws/simple_email_service/identity_collection.rb +81 -0
  473. data/lib/aws/simple_email_service/quotas.rb +64 -0
  474. data/lib/aws/simple_email_service/request.rb +27 -0
  475. data/lib/aws/simple_workflow.rb +228 -0
  476. data/lib/aws/simple_workflow/activity_task.rb +173 -0
  477. data/lib/aws/simple_workflow/activity_task_collection.rb +123 -0
  478. data/lib/aws/simple_workflow/activity_type.rb +131 -0
  479. data/lib/aws/simple_workflow/activity_type_collection.rb +93 -0
  480. data/lib/aws/simple_workflow/client.rb +1204 -0
  481. data/lib/aws/simple_workflow/config.rb +18 -0
  482. data/lib/aws/simple_workflow/count.rb +49 -0
  483. data/lib/aws/simple_workflow/decision_task.rb +603 -0
  484. data/lib/aws/simple_workflow/decision_task_collection.rb +225 -0
  485. data/lib/aws/simple_workflow/domain.rb +122 -0
  486. data/lib/aws/simple_workflow/domain_collection.rb +169 -0
  487. data/lib/aws/simple_workflow/errors.rb +20 -0
  488. data/lib/aws/simple_workflow/history_event.rb +276 -0
  489. data/lib/aws/simple_workflow/history_event_collection.rb +76 -0
  490. data/lib/aws/simple_workflow/option_formatters.rb +82 -0
  491. data/lib/aws/simple_workflow/request.rb +33 -0
  492. data/lib/aws/simple_workflow/resource.rb +94 -0
  493. data/lib/aws/simple_workflow/type.rb +89 -0
  494. data/lib/aws/simple_workflow/type_collection.rb +140 -0
  495. data/lib/aws/simple_workflow/workflow_execution.rb +386 -0
  496. data/lib/aws/simple_workflow/workflow_execution_collection.rb +617 -0
  497. data/lib/aws/simple_workflow/workflow_type.rb +177 -0
  498. data/lib/aws/simple_workflow/workflow_type_collection.rb +91 -0
  499. data/lib/aws/sns.rb +76 -0
  500. data/lib/aws/sns/client.rb +266 -0
  501. data/lib/aws/sns/config.rb +18 -0
  502. data/lib/aws/sns/errors.rb +22 -0
  503. data/lib/aws/sns/has_delivery_policy.rb +68 -0
  504. data/lib/aws/sns/policy.rb +47 -0
  505. data/lib/aws/sns/request.rb +23 -0
  506. data/lib/aws/sns/subscription.rb +144 -0
  507. data/lib/aws/sns/subscription_collection.rb +78 -0
  508. data/lib/aws/sns/topic.rb +403 -0
  509. data/lib/aws/sns/topic_collection.rb +62 -0
  510. data/lib/aws/sns/topic_subscription_collection.rb +54 -0
  511. data/lib/aws/sqs.rb +81 -0
  512. data/lib/aws/sqs/client.rb +258 -0
  513. data/lib/aws/sqs/config.rb +18 -0
  514. data/lib/aws/sqs/errors.rb +101 -0
  515. data/lib/aws/sqs/policy.rb +48 -0
  516. data/lib/aws/sqs/queue.rb +764 -0
  517. data/lib/aws/sqs/queue_collection.rb +174 -0
  518. data/lib/aws/sqs/received_message.rb +181 -0
  519. data/lib/aws/sqs/received_sns_message.rb +116 -0
  520. data/lib/aws/sqs/request.rb +67 -0
  521. data/lib/aws/storage_gateway.rb +73 -0
  522. data/lib/aws/storage_gateway/client.rb +472 -0
  523. data/lib/aws/storage_gateway/config.rb +18 -0
  524. data/lib/aws/storage_gateway/errors.rb +22 -0
  525. data/lib/aws/storage_gateway/request.rb +28 -0
  526. data/lib/aws/sts.rb +163 -0
  527. data/lib/aws/sts/client.rb +157 -0
  528. data/lib/aws/sts/config.rb +18 -0
  529. data/lib/aws/sts/errors.rb +22 -0
  530. data/lib/aws/sts/federated_session.rb +56 -0
  531. data/lib/aws/sts/policy.rb +30 -0
  532. data/lib/aws/sts/request.rb +29 -0
  533. data/lib/aws/sts/session.rb +48 -0
  534. data/lib/aws/version.rb +18 -0
  535. data/lib/net/http/connection_pool.rb +226 -0
  536. data/lib/net/http/connection_pool/connection.rb +189 -0
  537. data/lib/net/http/connection_pool/session.rb +126 -0
  538. data/rails/init.rb +15 -0
  539. metadata +632 -0
@@ -0,0 +1,195 @@
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 'time'
15
+
16
+ module AWS
17
+ class AutoScaling
18
+
19
+ class ScheduledActionCollection
20
+
21
+ include Core::Collection::WithLimitAndNextToken
22
+
23
+ # @private
24
+ def initialize options = {}
25
+ @filters = options[:filters] || {}
26
+ super
27
+ end
28
+
29
+ # Creates a scheduled scaling action for an Auto Scaling group.
30
+ # If you leave a parameter unspecified, the corresponding attribute
31
+ # remains unchanged in the group.
32
+ #
33
+ # You must specify an Auto Scaling group. This can be implicit
34
+ # or explicit:
35
+ #
36
+ # # given explicitly
37
+ # auto_scaling.scheduled_actions.create('action-name', :group => 'group-name')
38
+ #
39
+ # # implied by the group
40
+ # group = auto_scaling.groups.first
41
+ # group.scheduled_actions.create('action-name')
42
+ #
43
+ # @param [String] name
44
+ #
45
+ # @param [Hash] options
46
+ #
47
+ # @option options [Group,String] :group
48
+ #
49
+ # @option options [Integer] :desired_capacity
50
+ #
51
+ # @option options [Integer] :max_size
52
+ #
53
+ # @option options [Integer] :min_size
54
+ #
55
+ # @option options [String] :recurrence
56
+ #
57
+ # @option options [Time] :start_time
58
+ #
59
+ # @option options [Time] :end_time
60
+ #
61
+ # @return [ScheduledAction]
62
+ #
63
+ def create name, options = {}
64
+
65
+ scheduled_action = ScheduledAction.new(name,
66
+ :auto_scaling_group_name => auto_scaling_group_name_opt(options),
67
+ :config => config)
68
+
69
+ scheduled_action.update(options)
70
+ scheduled_action
71
+
72
+ end
73
+ alias_method :put, :create
74
+
75
+ # @param [String] name The name of the scheduled action.
76
+ # @return [ScheduledAction]
77
+ def [] name
78
+ options = {}
79
+ options[:config] = config
80
+ if group = @filters[:auto_scaling_group_name]
81
+ options[:auto_scaling_group_name] = group
82
+ end
83
+ ScheduledAction.new(name, options)
84
+ end
85
+
86
+ # Returns a new {ScheduledActionCollection} filtered
87
+ # by the given options.
88
+ #
89
+ # auto_scaling.scheduled_actions.filter(:end_time => Time.now).each do |a|
90
+ # # ...
91
+ # end
92
+ #
93
+ # You can chain filter calls:
94
+ #
95
+ # actions = auto_scaling.scheduled_actions.
96
+ # filter(:group => 'auto-scaling-group-name').
97
+ # filter(:start_time => Time.now - 3600).
98
+ # filter(:end_time => Time.now)
99
+ #
100
+ # actions.each {|scheduled_action| ... }
101
+ #
102
+ # @param [Hash] filters
103
+ #
104
+ # @option filters [Group,String] :group
105
+ #
106
+ # @option filters [Array<String>] :scheduled_actions
107
+ # A list of scheduled actions to be described. If this list is
108
+ # omitted, all scheduled actions are described. The list of
109
+ # requested scheduled actions cannot contain more than 50 items.
110
+ # If an Auto Scaling group name is provided,
111
+ # the results are limited to that group. If unknown scheduled
112
+ # actions are requested, they are ignored with no error.
113
+ #
114
+ # @option options [Time,String] :start_time The earliest scheduled
115
+ # start time to return. If +:scheduled_actions+ is provided,
116
+ # this field will be ignored. Should be a Time object or
117
+ # an iso8601 string.
118
+ #
119
+ # @option filters [Time,String] :end_time
120
+ #
121
+ # @return [ScheduledActionCollection] Returns a scheduled action
122
+ # collection that will filter the actions returned by the
123
+ # given criteria.
124
+ #
125
+ def filter filters = {}
126
+ init_opts = {}
127
+ init_opts[:config] = config
128
+ init_opts[:filters] = @filters
129
+ init_opts[:filters].merge!(filter_opts(filters))
130
+ ScheduledActionCollection.new(init_opts)
131
+ end
132
+
133
+ protected
134
+
135
+ def auto_scaling_group_name_opt options
136
+
137
+ group = options.delete(:group)
138
+ group ||= @filters[:auto_scaling_group_name]
139
+ group = group.name if group.is_a?(Group)
140
+
141
+ unless group
142
+ raise ArgumentError, 'missing required option :group'
143
+ end
144
+
145
+ group
146
+
147
+ end
148
+
149
+ def filter_opts options
150
+
151
+ opts = {}
152
+
153
+ if g = options[:group]
154
+ opts[:auto_scaling_group_name] = g.is_a?(Group) ? g.name : g
155
+ end
156
+
157
+ if actions = options[:scheduled_actions]
158
+ opts[:scheduled_action_names] = actions
159
+ end
160
+
161
+ [:end_time, :start_time].each do |opt|
162
+ if options[opt].is_a?(Time)
163
+ opts[opt] = options[opt].iso8601
164
+ end
165
+ end
166
+
167
+ opts
168
+
169
+ end
170
+
171
+ def _each_item next_token, limit, options = {}, &block
172
+
173
+ options[:next_token] = next_token if next_token
174
+ options[:max_records] = limit if limit
175
+
176
+ resp = client.describe_scheduled_actions(options.merge(@filters))
177
+ resp.scheduled_update_group_actions.each do |details|
178
+
179
+ scheduled_action = ScheduledAction.new_from(
180
+ :describe_scheduled_actions,
181
+ details,
182
+ details.scheduled_action_name,
183
+ :config => config)
184
+
185
+ yield(scheduled_action)
186
+
187
+ end
188
+
189
+ resp.data[:next_token]
190
+
191
+ end
192
+
193
+ end
194
+ end
195
+ end
@@ -0,0 +1,59 @@
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
+ # Auto Scaling tags are hashes with two helper methods:
18
+ #
19
+ # * {#resource}
20
+ # * {#delete}
21
+ #
22
+ class Tag < Hash
23
+
24
+ # @private
25
+ def initialize options = {}
26
+
27
+ super()
28
+
29
+ @resource =
30
+ case options[:resource_type]
31
+ when 'auto-scaling-group'
32
+ group_name = options[:resource_id]
33
+ config = options.delete(:config)
34
+ Group.new(group_name, :config => config)
35
+ else
36
+ msg = "unhandled resource type: #{options[:resource_type]}"
37
+ raise ArgumentError, msg
38
+ end
39
+
40
+ merge!(options)
41
+
42
+ end
43
+
44
+ # @return [Group] Returns the tagged resource. Currently this is
45
+ # always an Auto Scaling group.
46
+ def resource
47
+ @resource
48
+ end
49
+
50
+ # Deletes the tag from the resource.
51
+ # @return [nil]
52
+ def delete
53
+ resource.delete_tags([self])
54
+ nil
55
+ end
56
+
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,112 @@
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
+ # Provides an interface for enumerating tags defined in Auto Scaling.
18
+ #
19
+ # auto_scaling = AWS::AutoScaling.new
20
+ # auto_scaling.tags.each do |tag|
21
+ # puts "#{tag.key}:#{tag.value}"
22
+ # end
23
+ #
24
+ # == Filters
25
+ #
26
+ # You can filter the tags returned using {#filter}:
27
+ #
28
+ # # returns tags with the key "role"
29
+ # auto_scaling.filter(:key, 'role').to_a
30
+ #
31
+ # # returns tags with the key "role" and value "webserver"
32
+ # auto_scaling.filter(:key, 'role').filter(:value, 'webserver')to_a
33
+ #
34
+ # # returns tags with the Auto Scaling group name "group1"
35
+ # auto_scaling.filter(:auto_scaling_group, 'group1').to_a
36
+ #
37
+ # # returns all tags that propagate at launch
38
+ # auto_scaling.filter(:propagate_at_launch, true).to_a
39
+ #
40
+ # == Creating Tags
41
+ #
42
+ # You can create Auto Scaling tags when you:
43
+ #
44
+ # * [create]{GroupCollection#create} an Auto Scaling group
45
+ # * [update]{Group#update} an Auto Scaling group
46
+ #
47
+ # Both of these methods accept a +:tags+ option.
48
+ #
49
+ # tags = [
50
+ # { :key => 'auto-scaling-instance' }, # tag name only
51
+ # { :key => 'role', :value => 'webserver' }, # tag name and value
52
+ # ]
53
+ #
54
+ # # creating a group with tags
55
+ # group = auto_scaling.groups.create('group-name', :tags => tags, ...)
56
+ #
57
+ # # updating a group's tags
58
+ # group.update(:tags => tags)
59
+ #
60
+ class TagCollection
61
+
62
+ include Core::Collection::WithLimitAndNextToken
63
+
64
+ # @private
65
+ def initialize options = {}
66
+ @filters = options.delete(:filters) || []
67
+ super
68
+ end
69
+
70
+ # Filters the tags by the given filter name and value(s).
71
+ #
72
+ # # return tags with the key "role" and the value "webserver"
73
+ # auto_scaling.tags.filter(:key, 'role').filer(:value, 'webserver')
74
+ #
75
+ # @param [Symbol] name Valid filter names include:
76
+ #
77
+ # * :key
78
+ # * :value
79
+ # * :propagate_at_launch
80
+ # * :auto_scaling_group
81
+ #
82
+ # @param [Array<String>] values
83
+ #
84
+ # @return [TagCollection]
85
+ #
86
+ def filter name, *values
87
+ name = name.to_s.gsub(/_/, '-')
88
+ values = values.flatten.map(&:to_s)
89
+ filter = { :name => name, :values => values }
90
+ TagCollection.new(:filters => @filters + [filter], :config => config)
91
+ end
92
+
93
+ protected
94
+
95
+ def _each_item next_token, limit, options = {}, &block
96
+
97
+ options[:next_token] = next_token if next_token
98
+ options[:max_records] = limit if limit
99
+ options[:filters] = @filters unless @filters.empty?
100
+
101
+ resp = client.describe_tags(options)
102
+ resp.tags.each do |tag|
103
+ yield(Tag.new(tag.to_hash.merge(:config => config)))
104
+ end
105
+
106
+ resp.data[:next_token]
107
+
108
+ end
109
+
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,272 @@
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/cloud_formation/config'
16
+
17
+ module AWS
18
+
19
+ # = AWS::CloudFormation
20
+ #
21
+ # Provides an expressive, object-oriented interface to AWS CloudFormation.
22
+ #
23
+ # == Credentials
24
+ #
25
+ # You can setup default credentials for all AWS services via
26
+ # AWS.config:
27
+ #
28
+ # AWS.config(
29
+ # :access_key_id => 'YOUR_ACCESS_KEY_ID',
30
+ # :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
31
+ #
32
+ # Or you can set them directly on the CloudFormation interface:
33
+ #
34
+ # cf = AWS::CloudFormation.new(
35
+ # :access_key_id => 'YOUR_ACCESS_KEY_ID',
36
+ # :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
37
+ #
38
+ # = Stacks
39
+ #
40
+ # This is the starting point for working with CloudFormation.
41
+ #
42
+ # == Creating a Stack
43
+ #
44
+ # You can create a CloudFormation stack with a name and a template.
45
+ #
46
+ # template = <<-TEMPLATE
47
+ # {
48
+ # "AWSTemplateFormatVersion" : "2010-09-09",
49
+ # "Description": "A simple template",
50
+ # "Resources": {
51
+ # "web": {
52
+ # "Type": "AWS::EC2::Instance",
53
+ # "Properties": {
54
+ # "ImageId": "ami-41814f28"
55
+ # }
56
+ # }
57
+ # }
58
+ # }
59
+ # TEMPLATE
60
+ #
61
+ # cfm = AWS::CloudFormation.new
62
+ # stack = cfm.stacks.create('stack-name', template)
63
+ #
64
+ # See {StackCollection#create} for more information on creating templates
65
+ # with capabilities and parameters.
66
+ #
67
+ # == Getting a Stack
68
+ #
69
+ # Given a name, you can fetch a {Stack}.
70
+ #
71
+ # stack = cfm.stacks['stack-name']
72
+ #
73
+ # == Enumerating Stacks
74
+ #
75
+ # You can enumerate stacks in two ways. You can enumerate {Stack}
76
+ # objects or stack summaries (simple hashes). You can filter the stack
77
+ # summary collection by a status.
78
+ #
79
+ # # enumerating all stack objects
80
+ # cfm.stacks.each do |stack|
81
+ # # ...
82
+ # end
83
+ #
84
+ # # enumerating stack summaries (hashes)
85
+ # cfm.stack_summaries.each do |stack_summary|
86
+ # # ...
87
+ # end
88
+ #
89
+ # # filtering stack summaries by status
90
+ # cfm.stack_summaries.with_status(:create_failed).each do |summary|
91
+ # puts summary.to_yaml
92
+ # end
93
+ #
94
+ # == Template
95
+ #
96
+ # You can fetch the template body for a stack as a JSON string.
97
+ #
98
+ # cfm.stacks['stack-name'].template
99
+ # #=> "{...}"
100
+ #
101
+ # You can update the template for a {Stack} with the {Stack#update} method:
102
+ #
103
+ # cfm.stacks['stack-name'].update(:template => new_template)
104
+ #
105
+ # == Stack Events
106
+ #
107
+ # You can enumerate events for a stack.
108
+ #
109
+ # stack.events.each do |event|
110
+ # puts "#{event.physical_resource_id}: #{event.resource_status}"
111
+ # end
112
+ #
113
+ # See {StackEvent} for a complete list of event attributes.
114
+ #
115
+ # == Stack Resources
116
+ #
117
+ # You can enumerate stack resources or request a stack resource by its
118
+ # logical resource id.
119
+ #
120
+ # # enumerating stack resources
121
+ # stack.resources.each do |resource|
122
+ # # ...
123
+ # end
124
+ #
125
+ # # getting a resource by its logical id
126
+ # res = stack.resources['logical-resource-id']
127
+ # puts res.physical_resource_id
128
+ #
129
+ # If you need a stack resource, but only have its physical resource
130
+ # id, then you can call {CloudFormation#stack_resource}.
131
+ #
132
+ # stack_resource = cfm.stack_resource('physical-resource-id')
133
+ #
134
+ # == Stack Resource Summaries
135
+ #
136
+ # As an alternative to stack resources, you can enumerate stack
137
+ # resource summaries (hashes).
138
+ #
139
+ # # enumerate all resources, this collection can not be filtered
140
+ # stack.resource_summaries.each do |summary|
141
+ # # ...
142
+ # end
143
+ #
144
+ # @!attribute [r] client
145
+ # @return [Client] the low-level CloudFormation client object
146
+ class CloudFormation
147
+
148
+ AWS.register_autoloads(self, 'aws/cloud_formation') do
149
+ autoload :Client, 'client'
150
+ autoload :Errors, 'errors'
151
+ autoload :Request, 'request'
152
+ autoload :Stack, 'stack'
153
+ autoload :StackCollection, 'stack_collection'
154
+ autoload :StackEvent, 'stack_event'
155
+ autoload :StackEventCollection, 'stack_event_collection'
156
+ autoload :StackOptions, 'stack_options'
157
+ autoload :StackOutput, 'stack_output'
158
+ autoload :StackSummaryCollection, 'stack_summary_collection'
159
+ autoload :StackResource, 'stack_resource'
160
+ autoload :StackResourceCollection, 'stack_resource_collection'
161
+ autoload :StackResourceSummaryCollection, 'stack_resource_summary_collection'
162
+ end
163
+
164
+ include Core::ServiceInterface
165
+ include StackOptions
166
+
167
+ # @return [StackCollection]
168
+ def stacks
169
+ StackCollection.new(:config => config)
170
+ end
171
+
172
+ # @return [StackSummaryCollection]
173
+ def stack_summaries
174
+ StackSummaryCollection.new(:config => config)
175
+ end
176
+
177
+ # Returns a stack resource with the given physical resource
178
+ # id.
179
+ #
180
+ # resource = cfm.stack_resource('i-123456789')
181
+ #
182
+ # Alternatively, you may pass a stack name and logical resource id:
183
+ #
184
+ # resource = cfm.stack_resource('stack-name', 'logical-resource-id')
185
+ #
186
+ # @overload stack_resource(physical_resource_id)
187
+ # @param [String] physical_resource_id The physical resource id
188
+ # of the stack resource you want returned.
189
+ #
190
+ # @overload stack_resource(stack_name, logical_resource_id)
191
+ # @param [String] stack_name
192
+ # @param [String] logical_resource_id
193
+ #
194
+ # @return [StackResource] Returns the stack resource with the
195
+ # given physical resource id.
196
+ #
197
+ def stack_resource *args
198
+
199
+ client_opts = {}
200
+
201
+ if args.size == 1
202
+ client_opts[:physical_resource_id] = args.first
203
+ else
204
+ client_opts[:stack_name] = args[0]
205
+ client_opts[:logical_resource_id] = args[1]
206
+ end
207
+
208
+ response = client.describe_stack_resources(client_opts)
209
+
210
+ details = response.stack_resources.first
211
+
212
+ StackResource.new_from(
213
+ :describe_stack_resource, details,
214
+ Stack.new(details.stack_name, :config => config),
215
+ details.logical_resource_id)
216
+
217
+ end
218
+
219
+ # Validates the template and returns a hash. If the template is valid,
220
+ # the returned hash may/will contain the following keys (actual
221
+ # key list depends on the template).
222
+ #
223
+ # * +:description+
224
+ # * +:capabilities+
225
+ # * +:capabilities_reason+
226
+ # * +:parameters+
227
+ #
228
+ # If the template is not parseable, then a hash will the following
229
+ # keys will be returned:
230
+ #
231
+ # * +:code+
232
+ # * +:message+
233
+ #
234
+ # @return [Hash]
235
+ #
236
+ def validate_template template
237
+ begin
238
+
239
+ client_opts = {}
240
+ client_opts[:template] = template
241
+ apply_template(client_opts)
242
+ client.validate_template(client_opts).data
243
+
244
+ rescue CloudFormation::Errors::ValidationError => e
245
+
246
+ results = {}
247
+ results[:code] = e.code
248
+ results[:message] = e.message
249
+ results
250
+
251
+ end
252
+ end
253
+
254
+ # @param (see Stack#template=)
255
+ #
256
+ # @param [Hash] parameters A hash that specifies the input
257
+ # parameters for the template.
258
+ #
259
+ # @return [String] Returns a URL to the AWS Simple Monthly Calculator
260
+ # with a query string that describes the resources required to run
261
+ # the template.
262
+ #
263
+ def estimate_template_cost template, parameters = {}
264
+ client_opts = {}
265
+ client_opts[:template] = template
266
+ apply_template(client_opts)
267
+ apply_parameters(client_opts)
268
+ client.estimate_template_cost(client_opts).url
269
+ end
270
+
271
+ end
272
+ end