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,160 @@
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 S3
16
+
17
+ # Represents a collection of buckets.
18
+ #
19
+ # You can use this to create a bucket:
20
+ #
21
+ # s3.buckets.create(:name => "mybucket")
22
+ #
23
+ # You can get a handle for a specific bucket with indifferent
24
+ # access:
25
+ #
26
+ # bucket = s3.buckets[:mybucket]
27
+ # bucket = s3.buckets['mybucket']
28
+ #
29
+ # You can also use it to find out which buckets are in your account:
30
+ #
31
+ # s3.buckets.collect(&:name)
32
+ # #=> ['bucket1', 'bucket2', ...]
33
+ #
34
+ class BucketCollection
35
+
36
+ include Core::Model
37
+ include Enumerable
38
+
39
+ # Creates and returns a new Bucket. For example:
40
+ #
41
+ # @note If your bucket name contains one or more periods and it
42
+ # is hosted in a non-US region, you should make requests
43
+ # against the bucket using the S3 endpoint specific to the
44
+ # region in which your bucket resides. For example:
45
+ #
46
+ # s3 = AWS::S3.new(:s3_endpoint => "s3-eu-west-1.amazonaws.com")
47
+ # bucket = s3.buckets.create("my.eu.bucket")
48
+ #
49
+ # For a full list of endpoints and regions, see
50
+ # {http://docs.amazonwebservices.com/general/latest/gr/index.html?rande.html
51
+ # Regions and Endpoints} in the Amazon Web Services General
52
+ # Reference.
53
+ #
54
+ # @example
55
+ #
56
+ # bucket = s3.buckets.create('my-bucket')
57
+ # bucket.name #=> "my-bucket"
58
+ # bucket.exists? #=> true
59
+ #
60
+ # @param [String] bucket_name
61
+ #
62
+ # @param [Hash] options
63
+ #
64
+ # @option options [String] :location_constraint (nil) The
65
+ # location where the bucket should be created. Defaults to
66
+ # the classic US region; however, if you configure a regional
67
+ # endpoint for Amazon S3 this option will default to the
68
+ # appropriate location constraint for the endpoint. For
69
+ # example:
70
+ #
71
+ # s3 = AWS::S3.new(:s3_endpoint => "s3-us-west-1.amazonaws.com")
72
+ # bucket = s3.buckets.create("my-us-west-bucket")
73
+ # bucket.location_constraint # => "us-west-1"
74
+ #
75
+ # @option options [Symbol,String] :acl (:private) Sets the ACL of the
76
+ # bucket you are creating. Valid Values include:
77
+ # * +:private+
78
+ # * +:public_read+
79
+ # * +:public_read_write+
80
+ # * +:authenticated_read+
81
+ # * +:log_delivery_write+
82
+ #
83
+ # @option options [String] :grant_read
84
+ # @option options [String] :grant_write
85
+ # @option options [String] :grant_read_acp
86
+ # @option options [String] :grant_write_acp
87
+ # @option options [String] :grant_full_control
88
+ #
89
+ # @return [Bucket]
90
+ #
91
+ def create bucket_name, options = {}
92
+
93
+ # convert the symbolized-canned acl into the string version
94
+ if acl = options[:acl]
95
+ options[:acl] = acl.to_s.tr('_', '-')
96
+ end
97
+
98
+ # auto set the location constraint for the user if it is not
99
+ # passed in and the endpoint is not the us-standard region. don't
100
+ # override the location constraint though, even it is wrong,
101
+ unless
102
+ config.s3_endpoint == 's3.amazonaws.com' or
103
+ options[:location_constraint]
104
+ then
105
+ constraint =
106
+ case config.s3_endpoint
107
+ when 's3-eu-west-1.amazonaws.com' then 'EU'
108
+ when /^s3-(.*)\.amazonaws\.com$/ then $1
109
+ end
110
+ options[:location_constraint] = constraint if constraint
111
+ end
112
+
113
+ client.create_bucket(options.merge(:bucket_name => bucket_name))
114
+ bucket_named(bucket_name)
115
+
116
+ end
117
+
118
+ # Returns the Bucket with the given name.
119
+ #
120
+ # Makes no requests. The returned bucket object can
121
+ # be used to make requets for the bucket and its objects.
122
+ #
123
+ # @example
124
+ #
125
+ # bucket = s3.buckets[:mybucket],
126
+ # bucket = s3.buckets['mybucket'],
127
+ #
128
+ # @param [String] bucket_name
129
+ # @return [Bucket]
130
+ def [] bucket_name
131
+ bucket_named(bucket_name)
132
+ end
133
+
134
+ # Iterates the buckets in this collection.
135
+ #
136
+ # @example
137
+ #
138
+ # s3.buckets.each do |bucket|
139
+ # puts bucket.name
140
+ # end
141
+ #
142
+ # @return [nil]
143
+ def each &block
144
+ response = client.list_buckets
145
+ response.buckets.each do |b|
146
+ yield(bucket_named(b.name, response.owner))
147
+ end
148
+ nil
149
+ end
150
+
151
+ # @private
152
+ private
153
+ def bucket_named name, owner = nil
154
+ S3::Bucket.new(name.to_s, :owner => owner, :config => config)
155
+ end
156
+
157
+ end
158
+
159
+ end
160
+ end
@@ -0,0 +1,458 @@
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 'nokogiri'
15
+ require 'uuidtools'
16
+
17
+ module AWS
18
+ class S3
19
+
20
+ # A lifecycle configuration specify {Rule rules} that manage the way
21
+ # Amazon S3 stores objects. The rules apply to objects whose keys match
22
+ # the rule's prefix.
23
+ #
24
+ # == Rules
25
+ #
26
+ # A rule is comprised primarily of an id, prefix and set of
27
+ # configuration options. Configuration options on the rules can specify:
28
+ #
29
+ # * When to expire an object
30
+ # * When to transition an object to Glacier
31
+ # * Whether the rule is enabled or disabled
32
+ #
33
+ # See {Rule} for more information on all of the attributes and methods
34
+ # available for rules.
35
+ #
36
+ # == Expiring Objects
37
+ #
38
+ # You can add a rule to a bucket lifecycle configuration using {#add_rule}
39
+ # inside of an {#update} block that will expire an object after a given
40
+ # number of days:
41
+ #
42
+ # # delete backups after they are 1 year old
43
+ # bucket.lifecycle_configuration.update do
44
+ # add_rule('backups/', :expiration_time => 365)
45
+ # end
46
+ #
47
+ # You can also define the rule to expire objects at a specific date:
48
+ #
49
+ # # delete backups on January 1st of next year
50
+ # bucket.lifecycle_configuration.update do
51
+ # date = Date.new(Time.now.year + 1, 01, 01)
52
+ # add_rule('backups/', :expiration_time => date)
53
+ # end
54
+ #
55
+ # == Transitioning Objects to Glacier
56
+ #
57
+ # You can add a rule to a bucket lifecycle configuration using {#add_rule}
58
+ # inside of an {#update} block that will transition objects to Glacier
59
+ # after a given number of days:
60
+ #
61
+ # # move backups to Glacier after 3 days
62
+ # bucket.lifecycle_configuration.update do
63
+ # add_rule('backups/', :glacier_transition_time => 3)
64
+ # end
65
+ #
66
+ # You can also define the rule to transition objects at a specific date:
67
+ #
68
+ # # transition all backups on January 1st of next year
69
+ # bucket.lifecycle_configuration.update do
70
+ # date = Date.new(Time.now.year + 1, 01, 01)
71
+ # add_rule('backups/', :glacier_transition_time => date)
72
+ # end
73
+ #
74
+ # == Replacing Rules
75
+ #
76
+ # If you prefer to completely replace a lifecycle configuration, call
77
+ # {#add_rule} inside a {#replace} block instead of an +#update+ block:
78
+ #
79
+ # # replace all existing rules with the following
80
+ # bucket.lifecycle_configuration.replace do
81
+ # add_rule('backups/', :glacier_transition_time => 10)
82
+ # add_rule('temp/', :expiration_time => 30)
83
+ # end
84
+ #
85
+ # == Removing Rules
86
+ #
87
+ # You can delete specific rules with {#remove_rule}.
88
+ #
89
+ # # delete all disabled rules
90
+ # bucket.lifecycle_configuration.update do
91
+ # rules.each do |rule|
92
+ # remove_rule(rule) if rule.disabled?
93
+ # end
94
+ # end
95
+ #
96
+ # You can also remove all rules in a single call with {#clear}:
97
+ #
98
+ # # remove all rules from this lifecycle configuration
99
+ # bucket.lifecycle_configuration.clear
100
+ #
101
+ # == Editing Existing Rules
102
+ #
103
+ # You can also make changes to existing rules.
104
+ #
105
+ # # change the expiration days to 10 for EVERY rule
106
+ # bucket.lifecycle_configuration.update do
107
+ # rules.each do |rule|
108
+ # rule.expiration_time = 10
109
+ # end
110
+ # end
111
+ #
112
+ # Please be aware, if you add, remove or edit rules outside of an
113
+ # {#update} or {#replace} block, then you must call +#update+ yourself
114
+ # or the changes will not be persisted.
115
+ #
116
+ class BucketLifecycleConfiguration
117
+
118
+ # @private
119
+ def initialize bucket, options = {}
120
+ @bucket = bucket
121
+ @rules = parse_xml(options[:xml]) if options[:xml]
122
+ @rules = [] if options[:empty] == true
123
+ end
124
+
125
+ # @return [Bucket] Returns the bucket this lifecycle configuration
126
+ # belongs to.
127
+ attr_reader :bucket
128
+
129
+ # @return [Array<Hash>] Returns an array of rules.
130
+ def rules
131
+ @rules ||= begin
132
+ begin
133
+ opts = { :bucket_name => bucket.name }
134
+ response = bucket.client.get_bucket_lifecycle_configuration(opts)
135
+ parse_xml(response.http_response.body)
136
+ rescue Errors::NoSuchLifecycleConfiguration
137
+ []
138
+ end
139
+ end
140
+ end
141
+
142
+ # @overload add_rule(prefix, options = {})
143
+ # @param [String] prefix objects whose keys begin with this prefix
144
+ # will be affected by the rule.
145
+ #
146
+ # @option options [String] :id A unique ID for this rule. If an ID
147
+ # is not provided, one will be generated.
148
+ #
149
+ # @option options [Boolean] :disabled (false) By default, all rules
150
+ # will have the status of enabled. You can override this default
151
+ # by passing +:disabled+ => true.
152
+ #
153
+ # @option options [Date, Integer] :expiration_time (nil) Indicates
154
+ # the lifetime for objects matching the given prefix.
155
+ #
156
+ # @option options [Date, Integer] :glacier_transition_time (nil)
157
+ # Indicates the time before objects matching the given prefix will
158
+ # be transitioned into the Amazon Glacier storage tier.
159
+ #
160
+ # @return [Rule] Returns the rule that was added, as a {Rule} object.
161
+ def add_rule prefix, expiration_time = nil, options = {}
162
+ if Hash === expiration_time
163
+ options = expiration_time
164
+ else
165
+ options[:expiration_time] = expiration_time
166
+ end
167
+
168
+ id = options[:id] || UUIDTools::UUID.random_create.to_s
169
+ opts = {
170
+ :status => options[:disabled] == true ? 'Disabled' : 'Enabled',
171
+ :expiration_time => options[:expiration_time],
172
+ :glacier_transition_time => options[:glacier_transition_time]
173
+ }
174
+ rule = Rule.new(self, id, prefix, opts)
175
+ self.rules << rule
176
+ rule
177
+ end
178
+
179
+ # Removes a single rule. You can pass a rule id or a {Rule}
180
+ # object.
181
+ #
182
+ # # remove a single rule by its ID
183
+ # bucket.lifecycle_configuration.update do
184
+ # remove_rule('rule-id')
185
+ # end
186
+ #
187
+ # # remove all disabled rules
188
+ # bucket.lifecycle_configuration.update do
189
+ # rules.each do |rule|
190
+ # remove_rule(rule) if rule.disabled?
191
+ # end
192
+ # end
193
+ #
194
+ # If you call #remove_rule outside an update block
195
+ # you need to call #update to save the changes.
196
+ #
197
+ # @param [Rule,String] rule_or_rule_id
198
+ #
199
+ # @return [nil]
200
+ #
201
+ def remove_rule rule_or_rule_id
202
+ rule_id = rule_or_rule_id
203
+ if rule_id.nil?
204
+ raise ArgumentError, "expected a rule or rule id, got nil"
205
+ end
206
+ rule_id = rule_id.id unless rule_id.is_a?(String)
207
+ @rules = rules.select{|r| r.id != rule_id }
208
+ nil
209
+ end
210
+
211
+ # Saves changes made to this lifecycle configuration.
212
+ #
213
+ # # set the number of days before expiration for all rules to 10
214
+ # config = bucket.lifecycle_configuration
215
+ # config.rules.each do |rule|
216
+ # rule.expiration_time = 10
217
+ # end
218
+ # config.update
219
+ #
220
+ # You can call #update with a block. Changes are persisted at the
221
+ # end of the block.
222
+ #
223
+ # # shorter version of the example above
224
+ # bucket.lifecycle_configuration.update do
225
+ # rules.each {|rule| rule.expiration_time = 10 }
226
+ # end
227
+ #
228
+ # A block method for updating a BucketLifecycleConfiguration.
229
+ # All modifications made inside the block are persisted at the end of
230
+ # the block.
231
+ #
232
+ # # 1 request
233
+ # bucket.lifecycle_configuration.update do
234
+ # add_rule 'prefix/a', 10
235
+ # add_rule 'prefix/b', 5
236
+ # end
237
+ #
238
+ # # 2 requests
239
+ # bucket.lifecycle_configuration.add_rule 'prefix/a', 10
240
+ # bucket.lifecycle_configuration.add_rule 'prefix/b', 5
241
+ #
242
+ # @return [nil]
243
+ #
244
+ def update &block
245
+ begin
246
+ @batching = true
247
+ instance_eval(&block) if block_given?
248
+ persist(true)
249
+ ensure
250
+ @batching = false
251
+ end
252
+ nil
253
+ end
254
+
255
+ # Yields to the given block. Before yielding, the current
256
+ # rules will be blanked out. This allows you to provide all
257
+ # new rules.
258
+ #
259
+ # When the block is complete, a single call will be made to save
260
+ # the new rules.
261
+ #
262
+ # bucket.lifecycle_configuration.rules.size #=> 3
263
+ #
264
+ # # replace the existing 3 rules with a single rule
265
+ # bucket.lifecycle_configuration.replace
266
+ # add_rule 'temp/', 10
267
+ # end
268
+ #
269
+ # bucket.lifecycle_configuration.rules.size #=> 1
270
+ #
271
+ def replace &block
272
+ @rules = []
273
+ update(&block)
274
+ end
275
+
276
+ def clear
277
+ @rules = []
278
+ bucket.lifecycle_configuration = nil
279
+ end
280
+ alias_method :remove, :clear
281
+
282
+ # @return [String] Returns an xml string representation of this
283
+ # bucket lifecycle configuration.
284
+ def to_xml
285
+ Nokogiri::XML::Builder.new do |xml|
286
+ xml.LifecycleConfiguration do
287
+ rules.each do |rule|
288
+ xml.Rule do
289
+ xml.ID rule.id
290
+ xml.Prefix rule.prefix
291
+ xml.Status rule.status
292
+ xml.Expiration do
293
+ if Integer === rule.expiration_time
294
+ xml.Days rule.expiration_time
295
+ else
296
+ date = rule.expiration_time.to_s
297
+ xml.Date "#{date}T00:00:00Z"
298
+ end
299
+ end if rule.expiration_time
300
+ xml.Transition do
301
+ xml.StorageClass 'GLACIER'
302
+ if Integer === rule.glacier_transition_time
303
+ xml.Days rule.glacier_transition_time
304
+ else
305
+ date = rule.glacier_transition_time.to_s
306
+ xml.Date "#{date}T00:00:00Z"
307
+ end
308
+ end if rule.glacier_transition_time
309
+ end
310
+ end
311
+ end
312
+ end.doc.root.to_xml
313
+ end
314
+
315
+ protected
316
+ def persist force = false
317
+ unless @batching and force == false
318
+ if rules.empty?
319
+ bucket.lifecycle_configuration = nil
320
+ else
321
+ bucket.lifecycle_configuration = self
322
+ end
323
+ end
324
+ end
325
+
326
+ # Represents a single rule from an Amazon S3 bucket lifecycle
327
+ # configuration.
328
+ #
329
+ # # delete all objects with the prefix 'temporary/' after 10 days
330
+ # bucket.lifecycle_configuration.add_rule 'temporary/', 10
331
+ #
332
+ # # remove the rule created above
333
+ # bucket.lifecycle_configuration.remove_rule 'temporary/'
334
+ #
335
+ #
336
+ class Rule
337
+
338
+ # @private
339
+ def initialize configuration, id, prefix, expiration_time = nil, status = nil
340
+ @configuration = configuration
341
+ @id = id
342
+ @prefix = prefix
343
+
344
+ if Hash === expiration_time
345
+ options = expiration_time
346
+ options.each do |key, value|
347
+ send("#{key}=", value) if respond_to?("#{key}=")
348
+ end
349
+ else
350
+ self.expiration_time = expiration_time
351
+ self.status = status
352
+ end
353
+ end
354
+
355
+ # @return [BucketLifecycleConfiguration]
356
+ attr_reader :configuration
357
+
358
+ # @return [String]
359
+ attr_reader :id
360
+
361
+ # @return [String]
362
+ attr_accessor :prefix
363
+
364
+ # @return [Date] the date the objects will expire
365
+ # @return [Integer] if the value is an integer, returns the number
366
+ # of days before the object will expire.
367
+ attr_reader :expiration_time
368
+
369
+ # Converts any time values to Date objects
370
+ def expiration_time=(value)
371
+ @expiration_time = convert_time_value(value)
372
+ end
373
+
374
+ alias expiration_days expiration_time
375
+ alias expiration_days= expiration_time=
376
+
377
+ # @return [Date] the date the objects will be
378
+ # transitioned into the Amazon Glacier storage tier.
379
+ # @return [Integer] if the value is an integer, returns the number
380
+ # of days before the object is transitioned into the Amazon Glacier
381
+ # storage tier.
382
+ attr_reader :glacier_transition_time
383
+
384
+ # Converts any time values to Date objects
385
+ def glacier_transition_time=(value)
386
+ @glacier_transition_time = convert_time_value(value)
387
+ end
388
+
389
+ # @return [String] Returns the rule status, 'Enabled' or 'Disabled'
390
+ attr_accessor :status
391
+
392
+ def enabled?
393
+ status == 'Enabled'
394
+ end
395
+
396
+ def enable!
397
+ self.status = 'Enabled'
398
+ end
399
+
400
+ def disabled?
401
+ status == 'Disabled'
402
+ end
403
+
404
+ def disabled!
405
+ self.status = 'Disabled'
406
+ end
407
+
408
+ # @private
409
+ def eql? other
410
+ other.is_a?(Rule) and
411
+ other.configuration.bucket == configuration.bucket and
412
+ other.id == id and
413
+ other.prefix == prefix and
414
+ other.expiration_time == expiration_time and
415
+ other.glacier_transition_time == glacier_transition_time and
416
+ other.status == status
417
+ end
418
+ alias_method :==, :eql?
419
+
420
+ private
421
+
422
+ # If an integer, returns the integer as days, otherwise
423
+ # converts any time-like values into Date objects
424
+ # @return [Integer] if the value is an integer
425
+ # @return [Date] if the value is a time-like object
426
+ # @return [nil] if the value is nil
427
+ def convert_time_value(value)
428
+ return nil if value.nil?
429
+ return value if value.is_a?(Integer)
430
+ Date.parse(value.to_s)
431
+ end
432
+
433
+ end
434
+
435
+ protected
436
+
437
+ def parse_xml xml
438
+ Client::XML::GetBucketLifecycleConfiguration.parse(xml).rules.map do |r|
439
+ opts = { :status => r[:status] }
440
+
441
+ if r[:expiration]
442
+ opts[:expiration_time] =
443
+ r[:expiration][:days] || r[:expiration][:date]
444
+ end
445
+
446
+ if r[:transition]
447
+ opts[:glacier_transition_time] =
448
+ r[:transition][:days] || r[:transition][:date]
449
+ end
450
+
451
+ Rule.new(self, r[:id], r[:prefix], opts)
452
+ end
453
+ end
454
+
455
+ end
456
+
457
+ end
458
+ end