gapinc-fog 1.12.1.2.1 → 1.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (292) hide show
  1. data/.gitignore +1 -0
  2. data/.travis.yml +16 -1
  3. data/Gemfile.1.8.7 +10 -0
  4. data/README.md +23 -2
  5. data/Rakefile +2 -2
  6. data/changelog.txt +276 -0
  7. data/fog.gemspec +4 -6
  8. data/lib/fog/atmos/models/storage/file.rb +2 -2
  9. data/lib/fog/aws/elb.rb +3 -0
  10. data/lib/fog/aws/elb/policy_types.rb +441 -430
  11. data/lib/fog/aws/models/auto_scaling/activities.rb +11 -3
  12. data/lib/fog/aws/models/auto_scaling/groups.rb +6 -3
  13. data/lib/fog/aws/models/auto_scaling/policies.rb +7 -3
  14. data/lib/fog/aws/models/compute/volume.rb +1 -1
  15. data/lib/fog/aws/models/elb/backend_server_description.rb +11 -0
  16. data/lib/fog/aws/models/elb/backend_server_descriptions.rb +22 -0
  17. data/lib/fog/aws/models/elb/load_balancer.rb +15 -2
  18. data/lib/fog/aws/models/elb/policies.rb +28 -13
  19. data/lib/fog/aws/models/elb/policy.rb +20 -10
  20. data/lib/fog/aws/models/rds/instance_option.rb +21 -0
  21. data/lib/fog/aws/models/rds/instance_options.rb +30 -0
  22. data/lib/fog/aws/models/rds/log_file.rb +26 -0
  23. data/lib/fog/aws/models/rds/log_files.rb +50 -0
  24. data/lib/fog/aws/models/rds/server.rb +1 -0
  25. data/lib/fog/aws/models/rds/snapshots.rb +20 -13
  26. data/lib/fog/aws/parsers/auto_scaling/describe_policies.rb +5 -5
  27. data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +44 -13
  28. data/lib/fog/aws/parsers/rds/db_parser.rb +28 -6
  29. data/lib/fog/aws/parsers/rds/describe_db_log_files.rb +44 -0
  30. data/lib/fog/aws/parsers/rds/describe_orderable_db_instance_options.rb +47 -0
  31. data/lib/fog/aws/parsers/rds/download_db_logfile_portion.rb +26 -0
  32. data/lib/fog/aws/parsers/storage/complete_multipart_upload.rb +1 -1
  33. data/lib/fog/aws/parsers/sts/assume_role.rb +30 -0
  34. data/lib/fog/aws/rds.rb +13 -0
  35. data/lib/fog/aws/requests/auto_scaling/describe_auto_scaling_groups.rb +9 -1
  36. data/lib/fog/aws/requests/auto_scaling/describe_policies.rb +15 -1
  37. data/lib/fog/aws/requests/elb/create_app_cookie_stickiness_policy.rb +0 -2
  38. data/lib/fog/aws/requests/elb/create_lb_cookie_stickiness_policy.rb +0 -2
  39. data/lib/fog/aws/requests/elb/create_load_balancer.rb +7 -0
  40. data/lib/fog/aws/requests/elb/create_load_balancer_policy.rb +11 -8
  41. data/lib/fog/aws/requests/elb/describe_load_balancers.rb +21 -1
  42. data/lib/fog/aws/requests/elb/set_load_balancer_policies_for_backend_server.rb +67 -0
  43. data/lib/fog/aws/requests/rds/describe_db_log_files.rb +67 -0
  44. data/lib/fog/aws/requests/rds/describe_orderable_db_instance_options.rb +76 -0
  45. data/lib/fog/aws/requests/rds/download_db_logfile_portion.rb +63 -0
  46. data/lib/fog/aws/requests/ses/send_raw_email.rb +1 -1
  47. data/lib/fog/aws/requests/ses/verify_domain_identity.rb +1 -1
  48. data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +6 -2
  49. data/lib/fog/aws/requests/storage/get_object.rb +1 -1
  50. data/lib/fog/aws/requests/sts/assume_role.rb +46 -0
  51. data/lib/fog/aws/ses.rb +25 -9
  52. data/lib/fog/aws/sts.rb +22 -6
  53. data/lib/fog/bin/openstack.rb +5 -0
  54. data/lib/fog/bin/rackspace.rb +4 -0
  55. data/lib/fog/brightbox/models/compute/collaboration.rb +10 -2
  56. data/lib/fog/brightbox/models/compute/collaborations.rb +26 -2
  57. data/lib/fog/brightbox/models/compute/user_collaboration.rb +16 -1
  58. data/lib/fog/brightbox/models/compute/user_collaborations.rb +10 -2
  59. data/lib/fog/cloudstack/models/compute/servers.rb +1 -1
  60. data/lib/fog/compute/models/server.rb +16 -10
  61. data/lib/fog/core.rb +1 -0
  62. data/lib/fog/core/collection.rb +18 -0
  63. data/lib/fog/core/mock.rb +16 -0
  64. data/lib/fog/digitalocean/compute.rb +32 -3
  65. data/lib/fog/digitalocean/models/compute/server.rb +43 -14
  66. data/lib/fog/digitalocean/models/compute/servers.rb +27 -4
  67. data/lib/fog/digitalocean/models/compute/ssh_keys.rb +2 -3
  68. data/lib/fog/digitalocean/requests/compute/create_server.rb +9 -7
  69. data/lib/fog/digitalocean/requests/compute/destroy_server.rb +3 -0
  70. data/lib/fog/digitalocean/requests/compute/list_images.rb +6 -6
  71. data/lib/fog/dnsimple/dns.rb +4 -1
  72. data/lib/fog/dnsimple/models/dns/record.rb +3 -3
  73. data/lib/fog/dnsimple/requests/dns/create_domain.rb +36 -0
  74. data/lib/fog/dnsimple/requests/dns/create_record.rb +27 -0
  75. data/lib/fog/dnsimple/requests/dns/delete_domain.rb +12 -0
  76. data/lib/fog/dnsimple/requests/dns/delete_record.rb +12 -0
  77. data/lib/fog/dnsimple/requests/dns/get_domain.rb +12 -0
  78. data/lib/fog/dnsimple/requests/dns/get_record.rb +24 -0
  79. data/lib/fog/dnsimple/requests/dns/list_domains.rb +12 -0
  80. data/lib/fog/dnsimple/requests/dns/list_records.rb +12 -0
  81. data/lib/fog/dnsimple/requests/dns/update_record.rb +20 -0
  82. data/lib/fog/glesys/models/compute/server.rb +6 -0
  83. data/lib/fog/google/README.md +28 -0
  84. data/lib/fog/google/Rakefile +17 -0
  85. data/lib/fog/google/examples/bootstrap.rb +9 -0
  86. data/lib/fog/google/examples/create.rb +37 -0
  87. data/lib/fog/google/examples/eric-fail.rb +19 -0
  88. data/lib/fog/google/examples/get_list_images.rb +27 -0
  89. data/lib/fog/google/examples/launch_micro_instance.rb +21 -0
  90. data/lib/fog/google/examples/metadata.rb +18 -0
  91. data/lib/fog/google/models/compute/disks.rb +16 -6
  92. data/lib/fog/google/models/compute/flavors.rb +2 -1
  93. data/lib/fog/google/models/compute/image.rb +16 -17
  94. data/lib/fog/google/models/compute/images.rb +38 -5
  95. data/lib/fog/google/models/compute/server.rb +2 -2
  96. data/lib/fog/google/models/compute/servers.rb +8 -5
  97. data/lib/fog/google/models/storage/file.rb +7 -1
  98. data/lib/fog/google/parsers/storage/access_control_list.rb +2 -2
  99. data/lib/fog/google/requests/compute/insert_server.rb +1 -2
  100. data/lib/fog/google/requests/compute/list_images.rb +3 -2
  101. data/lib/fog/google/requests/storage/get_object.rb +1 -1
  102. data/lib/fog/hp/requests/storage/get_object.rb +1 -1
  103. data/lib/fog/ibm/requests/compute/create_instance.rb +20 -15
  104. data/lib/fog/internet_archive/requests/storage/get_object.rb +1 -1
  105. data/lib/fog/metering.rb +25 -0
  106. data/lib/fog/openstack.rb +2 -1
  107. data/lib/fog/openstack/metering.rb +215 -0
  108. data/lib/fog/openstack/models/compute/server.rb +5 -2
  109. data/lib/fog/openstack/models/metering/resource.rb +24 -0
  110. data/lib/fog/openstack/models/metering/resources.rb +25 -0
  111. data/lib/fog/openstack/models/volume/volume.rb +3 -1
  112. data/lib/fog/openstack/models/volume/volumes.rb +2 -1
  113. data/lib/fog/openstack/network.rb +24 -1
  114. data/lib/fog/openstack/requests/compute/create_server.rb +19 -1
  115. data/lib/fog/openstack/requests/compute/get_host_details.rb +2 -1
  116. data/lib/fog/openstack/requests/metering/get_resource.rb +32 -0
  117. data/lib/fog/openstack/requests/metering/get_samples.rb +55 -0
  118. data/lib/fog/openstack/requests/metering/get_statistics.rb +56 -0
  119. data/lib/fog/openstack/requests/metering/list_meters.rb +50 -0
  120. data/lib/fog/openstack/requests/metering/list_resources.rb +32 -0
  121. data/lib/fog/openstack/requests/network/delete_quota.rb +26 -0
  122. data/lib/fog/openstack/requests/network/get_quota.rb +31 -0
  123. data/lib/fog/openstack/requests/network/get_quotas.rb +31 -0
  124. data/lib/fog/openstack/requests/network/update_quota.rb +33 -0
  125. data/lib/fog/openstack/requests/storage/put_object.rb +8 -5
  126. data/lib/fog/openstack/requests/volume/create_volume.rb +4 -2
  127. data/lib/fog/rackspace.rb +24 -4
  128. data/lib/fog/rackspace/block_storage.rb +8 -4
  129. data/lib/fog/rackspace/cdn.rb +21 -4
  130. data/lib/fog/rackspace/compute_v2.rb +15 -4
  131. data/lib/fog/rackspace/errors.rb +12 -5
  132. data/lib/fog/rackspace/mock_data.rb +18 -7
  133. data/lib/fog/rackspace/models/compute_v2/key_pair.rb +56 -0
  134. data/lib/fog/rackspace/models/compute_v2/key_pairs.rb +43 -0
  135. data/lib/fog/rackspace/models/compute_v2/server.rb +7 -2
  136. data/lib/fog/rackspace/models/compute_v2/servers.rb +2 -1
  137. data/lib/fog/rackspace/models/identity/service_catalog.rb +34 -16
  138. data/lib/fog/rackspace/models/monitoring/agent_token.rb +40 -0
  139. data/lib/fog/rackspace/models/monitoring/agent_tokens.rb +28 -0
  140. data/lib/fog/rackspace/models/monitoring/alarm.rb +51 -0
  141. data/lib/fog/rackspace/models/monitoring/alarm_example.rb +26 -0
  142. data/lib/fog/rackspace/models/monitoring/alarm_examples.rb +31 -0
  143. data/lib/fog/rackspace/models/monitoring/alarms.rb +40 -0
  144. data/lib/fog/rackspace/models/monitoring/base.rb +36 -0
  145. data/lib/fog/rackspace/models/monitoring/check.rb +75 -0
  146. data/lib/fog/rackspace/models/monitoring/check_type.rb +15 -0
  147. data/lib/fog/rackspace/models/monitoring/check_types.rb +23 -0
  148. data/lib/fog/rackspace/models/monitoring/checks.rb +40 -0
  149. data/lib/fog/rackspace/models/monitoring/data_point.rb +18 -0
  150. data/lib/fog/rackspace/models/monitoring/data_points.rb +49 -0
  151. data/lib/fog/rackspace/models/monitoring/entities.rb +48 -0
  152. data/lib/fog/rackspace/models/monitoring/entity.rb +64 -0
  153. data/lib/fog/rackspace/models/monitoring/metric.rb +25 -0
  154. data/lib/fog/rackspace/models/monitoring/metrics.rb +27 -0
  155. data/lib/fog/rackspace/monitoring.rb +149 -0
  156. data/lib/fog/rackspace/requests/compute_v2/create_keypair.rb +53 -0
  157. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +10 -8
  158. data/lib/fog/rackspace/requests/compute_v2/delete_keypair.rb +36 -0
  159. data/lib/fog/rackspace/requests/compute_v2/get_keypair.rb +41 -0
  160. data/lib/fog/rackspace/requests/compute_v2/list_keypairs.rb +37 -0
  161. data/lib/fog/rackspace/requests/monitoring/create_agent_token.rb +19 -0
  162. data/lib/fog/rackspace/requests/monitoring/create_alarm.rb +19 -0
  163. data/lib/fog/rackspace/requests/monitoring/create_check.rb +19 -0
  164. data/lib/fog/rackspace/requests/monitoring/create_entity.rb +19 -0
  165. data/lib/fog/rackspace/requests/monitoring/delete_agent_token.rb +17 -0
  166. data/lib/fog/rackspace/requests/monitoring/delete_alarm.rb +18 -0
  167. data/lib/fog/rackspace/requests/monitoring/delete_check.rb +17 -0
  168. data/lib/fog/rackspace/requests/monitoring/delete_entity.rb +17 -0
  169. data/lib/fog/rackspace/requests/monitoring/evaluate_alarm_example.rb +21 -0
  170. data/lib/fog/rackspace/requests/monitoring/get_agent_token.rb +19 -0
  171. data/lib/fog/rackspace/requests/monitoring/get_alarm.rb +19 -0
  172. data/lib/fog/rackspace/requests/monitoring/get_alarm_example.rb +19 -0
  173. data/lib/fog/rackspace/requests/monitoring/get_check.rb +19 -0
  174. data/lib/fog/rackspace/requests/monitoring/get_entity.rb +19 -0
  175. data/lib/fog/rackspace/requests/monitoring/list_agent_tokens.rb +19 -0
  176. data/lib/fog/rackspace/requests/monitoring/list_alarm_examples.rb +18 -0
  177. data/lib/fog/rackspace/requests/monitoring/list_alarms.rb +18 -0
  178. data/lib/fog/rackspace/requests/monitoring/list_check_types.rb +17 -0
  179. data/lib/fog/rackspace/requests/monitoring/list_checks.rb +18 -0
  180. data/lib/fog/rackspace/requests/monitoring/list_data_points.rb +18 -0
  181. data/lib/fog/rackspace/requests/monitoring/list_entities.rb +19 -0
  182. data/lib/fog/rackspace/requests/monitoring/list_metrics.rb +18 -0
  183. data/lib/fog/rackspace/requests/monitoring/list_notification_plans.rb +18 -0
  184. data/lib/fog/rackspace/requests/monitoring/list_overview.rb +19 -0
  185. data/lib/fog/rackspace/requests/monitoring/update_alarm.rb +18 -0
  186. data/lib/fog/rackspace/requests/monitoring/update_check.rb +18 -0
  187. data/lib/fog/rackspace/requests/monitoring/update_entity.rb +18 -0
  188. data/lib/fog/rackspace/requests/storage/delete_multiple_objects.rb +75 -0
  189. data/lib/fog/rackspace/requests/storage/delete_static_large_object.rb +50 -0
  190. data/lib/fog/rackspace/requests/storage/put_dynamic_obj_manifest.rb +44 -0
  191. data/lib/fog/rackspace/requests/storage/put_object.rb +1 -1
  192. data/lib/fog/rackspace/requests/storage/put_object_manifest.rb +3 -30
  193. data/lib/fog/rackspace/requests/storage/put_static_obj_manifest.rb +60 -0
  194. data/lib/fog/rackspace/storage.rb +24 -16
  195. data/lib/fog/riakcs/provisioning.rb +2 -1
  196. data/lib/fog/riakcs/usage.rb +2 -1
  197. data/lib/fog/vcloud/compute.rb +1 -1
  198. data/lib/fog/vcloud/requests/compute/configure_vm.rb +2 -2
  199. data/lib/fog/version.rb +1 -1
  200. data/lib/fog/vsphere/compute.rb +131 -0
  201. data/lib/fog/vsphere/models/compute/server.rb +5 -1
  202. data/lib/fog/vsphere/requests/compute/get_datacenter.rb +3 -1
  203. data/lib/fog/vsphere/requests/compute/get_virtual_machine.rb +20 -38
  204. data/lib/fog/vsphere/requests/compute/list_datacenters.rb +1 -0
  205. data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +8 -114
  206. data/lib/fog/vsphere/requests/compute/vm_clone.rb +18 -9
  207. data/lib/fog/vsphere/requests/compute/vm_power_off.rb +2 -0
  208. data/lib/fog/xenserver/compute.rb +14 -12
  209. data/lib/fog/xenserver/models/compute/console.rb +27 -0
  210. data/lib/fog/xenserver/models/compute/consoles.rb +25 -0
  211. data/lib/fog/xenserver/models/compute/server.rb +6 -2
  212. data/lib/fog/xenserver/models/compute/servers.rb +5 -0
  213. data/lib/fog/xenserver/requests/compute/create_server.rb +4 -0
  214. data/lib/fog/xml/sax_parser_connection.rb +3 -0
  215. data/lib/tasks/changelog_task.rb +2 -0
  216. data/tests/aws/models/compute/volume_tests.rb +1 -1
  217. data/tests/aws/models/elb/model_tests.rb +28 -1
  218. data/tests/aws/models/rds/instance_option_tests.rb +14 -0
  219. data/tests/aws/parsers/elb/describe_load_balancers.rb +65 -0
  220. data/tests/aws/requests/elb/helper.rb +2 -1
  221. data/tests/aws/requests/elb/listener_tests.rb +1 -1
  222. data/tests/aws/requests/elb/load_balancer_tests.rb +5 -1
  223. data/tests/aws/requests/elb/policy_tests.rb +85 -6
  224. data/tests/aws/requests/iam/helper.rb +4 -1
  225. data/tests/aws/requests/iam/server_certificate_tests.rb +2 -2
  226. data/tests/aws/requests/rds/helper.rb +35 -0
  227. data/tests/aws/requests/rds/instance_option_tests.rb +21 -0
  228. data/tests/aws/requests/rds/log_file_tests.rb +19 -0
  229. data/tests/aws/requests/sts/assume_role_tests.rb +19 -0
  230. data/tests/core/mocking_tests.rb +15 -0
  231. data/tests/digitalocean/helper.rb +23 -16
  232. data/tests/digitalocean/models/compute/flavor_tests.rb +2 -2
  233. data/tests/digitalocean/models/compute/image_tests.rb +2 -2
  234. data/tests/digitalocean/models/compute/region_tests.rb +2 -2
  235. data/tests/digitalocean/models/compute/server_tests.rb +11 -3
  236. data/tests/digitalocean/models/compute/servers_tests.rb +14 -28
  237. data/tests/digitalocean/models/compute/ssh_key_tests.rb +7 -3
  238. data/tests/digitalocean/models/compute/ssh_keys_tests.rb +5 -1
  239. data/tests/digitalocean/requests/compute/create_server_tests.rb +3 -6
  240. data/tests/digitalocean/requests/compute/destroy_server_tests.rb +1 -2
  241. data/tests/digitalocean/requests/compute/get_server_details_tests.rb +1 -1
  242. data/tests/digitalocean/requests/compute/get_ssh_key_tests.rb +4 -1
  243. data/tests/digitalocean/requests/compute/list_ssh_keys_tests.rb +5 -2
  244. data/tests/dnsimple/requests/dns/dns_tests.rb +30 -26
  245. data/tests/helper.rb +2 -2
  246. data/tests/helpers/collection_helper.rb +4 -4
  247. data/tests/helpers/mock_helper.rb +2 -0
  248. data/tests/openstack/requests/metering/meter_tests.rb +52 -0
  249. data/tests/openstack/requests/metering/resource_tests.rb +19 -0
  250. data/tests/openstack/requests/network/quota_tests.rb +65 -0
  251. data/tests/openstack/requests/storage/object_tests.rb +27 -2
  252. data/tests/rackspace/block_storage_tests.rb +2 -1
  253. data/tests/rackspace/cdn_tests.rb +9 -0
  254. data/tests/rackspace/compute_v2_tests.rb +16 -15
  255. data/tests/rackspace/databases_tests.rb +1 -1
  256. data/tests/rackspace/load_balancer_tests.rb +1 -1
  257. data/tests/rackspace/models/compute_v2/keypairs_tests.rb +47 -0
  258. data/tests/rackspace/models/identity/service_catalog_tests.rb +54 -29
  259. data/tests/rackspace/models/monitoring/agent_token_tests.rb +9 -0
  260. data/tests/rackspace/models/monitoring/agent_tokens_tests.rb +9 -0
  261. data/tests/rackspace/models/monitoring/alarm_example_tests.rb +18 -0
  262. data/tests/rackspace/models/monitoring/alarm_examples_tests.rb +19 -0
  263. data/tests/rackspace/models/monitoring/alarm_tests.rb +56 -0
  264. data/tests/rackspace/models/monitoring/alarms_tests.rb +25 -0
  265. data/tests/rackspace/models/monitoring/check_tests.rb +50 -0
  266. data/tests/rackspace/models/monitoring/check_types_tests.rb +14 -0
  267. data/tests/rackspace/models/monitoring/checks_tests.rb +16 -0
  268. data/tests/rackspace/models/monitoring/data_points_tests.rb +19 -0
  269. data/tests/rackspace/models/monitoring/entities_tests.rb +14 -0
  270. data/tests/rackspace/models/monitoring/entity_tests.rb +26 -0
  271. data/tests/rackspace/models/monitoring/metric_tests.rb +19 -0
  272. data/tests/rackspace/models/monitoring/metrics_tests.rb +17 -0
  273. data/tests/rackspace/monitoring_tests.rb +72 -0
  274. data/tests/rackspace/requests/compute_v2/keypair_tests.rb +55 -0
  275. data/tests/rackspace/requests/monitoring/agent_tests.rb +34 -0
  276. data/tests/rackspace/requests/monitoring/alarm_example_tests.rb +30 -0
  277. data/tests/rackspace/requests/monitoring/alarm_tests.rb +56 -0
  278. data/tests/rackspace/requests/monitoring/check_tests.rb +40 -0
  279. data/tests/rackspace/requests/monitoring/entity_tests.rb +37 -0
  280. data/tests/rackspace/requests/monitoring/helper.rb +78 -0
  281. data/tests/rackspace/requests/monitoring/list_tests.rb +60 -0
  282. data/tests/rackspace/requests/storage/large_object_tests.rb +303 -59
  283. data/tests/rackspace/requests/storage/object_tests.rb +73 -18
  284. data/tests/vsphere/models/compute/server_tests.rb +1 -1
  285. data/tests/vsphere/requests/compute/list_virtual_machines_tests.rb +2 -2
  286. data/tests/vsphere/requests/compute/vm_clone_tests.rb +14 -8
  287. data/tests/xenserver/compute_tests.rb +5 -5
  288. data/tests/xenserver/models/compute/console_test.rb +35 -0
  289. data/tests/xenserver/models/compute/consoles_test.rb +19 -0
  290. data/tests/xenserver/models/compute/server_tests.rb +25 -18
  291. data/tests/xenserver/models/compute/servers_tests.rb +1 -0
  292. metadata +177 -14
@@ -4,14 +4,22 @@ module Fog
4
4
  module AWS
5
5
  class AutoScaling
6
6
  class Activities < Fog::Collection
7
-
8
7
  model Fog::AWS::AutoScaling::Activity
9
8
 
10
- def all
9
+ attribute :filters
10
+
11
+ # Creates a new scaling policy.
12
+ def initialize(attributes={})
13
+ self.filters = attributes
14
+ super(attributes)
15
+ end
16
+
17
+ def all(filters = filters)
11
18
  data = []
12
19
  next_token = nil
20
+ self.filters = filters
13
21
  loop do
14
- result = service.describe_scaling_activities('NextToken' => next_token).body['DescribeScalingActivitiesResult']
22
+ result = service.describe_scaling_activities(filters.merge('NextToken' => next_token)).body['DescribeScalingActivitiesResult']
15
23
  data += result['Activities']
16
24
  next_token = result['NextToken']
17
25
  break if next_token.nil?
@@ -4,19 +4,22 @@ module Fog
4
4
  module AWS
5
5
  class AutoScaling
6
6
  class Groups < Fog::Collection
7
-
8
7
  model Fog::AWS::AutoScaling::Group
9
8
 
9
+ attribute :filters
10
+
10
11
  # Creates a new auto scaling group.
11
12
  def initialize(attributes={})
13
+ self.filters = attributes
12
14
  super
13
15
  end
14
16
 
15
- def all
17
+ def all(filters = filters)
16
18
  data = []
17
19
  next_token = nil
20
+ self.filters = filters
18
21
  loop do
19
- result = service.describe_auto_scaling_groups('NextToken' => next_token).body['DescribeAutoScalingGroupsResult']
22
+ result = service.describe_auto_scaling_groups(filters.merge('NextToken' => next_token)).body['DescribeAutoScalingGroupsResult']
20
23
  data += result['AutoScalingGroups']
21
24
  next_token = result['NextToken']
22
25
  break if next_token.nil?
@@ -6,16 +6,20 @@ module Fog
6
6
  class Policies < Fog::Collection
7
7
  model Fog::AWS::AutoScaling::Policy
8
8
 
9
+ attribute :filters
10
+
9
11
  # Creates a new scaling policy.
10
12
  def initialize(attributes={})
11
- super
13
+ self.filters = attributes
14
+ super(attributes)
12
15
  end
13
16
 
14
- def all
17
+ def all(filters = filters)
15
18
  data = []
16
19
  next_token = nil
20
+ self.filters = filters
17
21
  loop do
18
- result = service.describe_policies('NextToken' => next_token).body['DescribePoliciesResult']
22
+ result = service.describe_policies(filters.merge('NextToken' => next_token)).body['DescribePoliciesResult']
19
23
  data += result['ScalingPolicies']
20
24
  next_token = result['NextToken']
21
25
  break if next_token.nil?
@@ -71,7 +71,7 @@ module Fog
71
71
 
72
72
  def server
73
73
  requires :server_id
74
- service.servers('instance-id' => server_id)
74
+ service.servers.get(server_id)
75
75
  end
76
76
 
77
77
  def server=(new_server)
@@ -0,0 +1,11 @@
1
+ require 'fog/core/model'
2
+ module Fog
3
+ module AWS
4
+ class ELB
5
+ class BackendServerDescription < Fog::Model
6
+ attribute :policy_names, :aliases => 'PolicyNames'
7
+ attribute :instance_port, :aliases => 'InstancePort'
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,22 @@
1
+ require 'fog/aws/models/elb/backend_server_description'
2
+ module Fog
3
+ module AWS
4
+ class ELB
5
+ class BackendServerDescriptions < Fog::Collection
6
+
7
+ model Fog::AWS::ELB::BackendServerDescription
8
+
9
+ attr_accessor :data, :load_balancer
10
+
11
+ def all
12
+ load(data)
13
+ end
14
+
15
+ def get(instance_port)
16
+ all.detect{|e| e.instance_port == instance_port}
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+ end
@@ -32,7 +32,6 @@ module Fog
32
32
  'PolicyNames' => new_listener.policy_names
33
33
  }]
34
34
  end
35
- attributes['Policies'] ||= {'AppCookieStickinessPolicies' => [], 'LBCookieStickinessPolicies' => []}
36
35
  super
37
36
  end
38
37
 
@@ -99,6 +98,14 @@ module Fog
99
98
  merge_attributes(:health_check => data)
100
99
  end
101
100
 
101
+ def backend_server_descriptions
102
+ Fog::AWS::ELB::BackendServerDescriptions.new({
103
+ :data => attributes['BackendServerDescriptions'],
104
+ :service => service,
105
+ :load_balancer => self
106
+ })
107
+ end
108
+
102
109
  def listeners
103
110
  Fog::AWS::ELB::Listeners.new({
104
111
  :data => attributes['ListenerDescriptions'],
@@ -109,12 +116,17 @@ module Fog
109
116
 
110
117
  def policies
111
118
  Fog::AWS::ELB::Policies.new({
112
- :data => attributes['Policies'],
119
+ :data => policy_descriptions,
113
120
  :service => service,
114
121
  :load_balancer => self
115
122
  })
116
123
  end
117
124
 
125
+ def policy_descriptions
126
+ requires :id
127
+ @policy_descriptions ||= service.describe_load_balancer_policies(id).body["DescribeLoadBalancerPoliciesResult"]["PolicyDescriptions"]
128
+ end
129
+
118
130
  def set_listener_policy(port, policy_name)
119
131
  requires :id
120
132
  policy_name = [policy_name].flatten
@@ -159,6 +171,7 @@ module Fog
159
171
  def reload
160
172
  super
161
173
  @instance_health = nil
174
+ @policy_descriptions = nil
162
175
  self
163
176
  end
164
177
 
@@ -17,19 +17,35 @@ module Fog
17
17
  end
18
18
 
19
19
  private
20
- # Munge a hash like:
21
- # {'LBCookieStickinessPolicies' => [policies...],
22
- # 'AppCookieStickinessPolicies' => [policies...]}
23
- # to a single array of policies with a cookie_stickiness value
24
20
  def munged_data
25
- munged_data = []
26
- data['LBCookieStickinessPolicies'].each do |policy|
27
- munged_data << policy.merge(:cookie_stickiness => :lb)
28
- end
29
- data['AppCookieStickinessPolicies'].each do |policy|
30
- munged_data << policy.merge(:cookie_stickiness => :app)
31
- end
32
- munged_data
21
+ data.inject([]){|m,e|
22
+ policy_attribute_descriptions = e["PolicyAttributeDescriptions"]
23
+
24
+ policy = {
25
+ :id => e["PolicyName"],
26
+ :type_name => e["PolicyTypeName"],
27
+ :policy_attributes => policy_attributes(policy_attribute_descriptions)
28
+ }
29
+
30
+ case e["PolicyTypeName"]
31
+ when 'AppCookieStickinessPolicyType'
32
+ cookie_name = policy_attribute_descriptions.detect{|h| h['AttributeName'] == 'CookieName'}['AttributeValue']
33
+ policy['CookieName'] = cookie_name if cookie_name
34
+ when 'LBCookieStickinessPolicyType'
35
+ cookie_expiration_period = policy_attribute_descriptions.detect{|h| h['AttributeName'] == 'CookieExpirationPeriod'}['AttributeValue'].to_i
36
+ policy['CookieExpirationPeriod'] = cookie_expiration_period if cookie_expiration_period > 0
37
+ end
38
+
39
+ m << policy
40
+ m
41
+ }
42
+ end
43
+
44
+ def policy_attributes(policy_attribute_descriptions)
45
+ policy_attribute_descriptions.inject({}){|m,e|
46
+ m[e["AttributeName"]] = e["AttributeValue"]
47
+ m
48
+ }
33
49
  end
34
50
 
35
51
  end
@@ -37,4 +53,3 @@ module Fog
37
53
  end
38
54
  end
39
55
  end
40
-
@@ -8,23 +8,33 @@ module Fog
8
8
 
9
9
  attribute :cookie, :aliases => 'CookieName'
10
10
  attribute :expiration, :aliases => 'CookieExpirationPeriod'
11
+ attribute :type_name
12
+ attribute :policy_attributes
11
13
 
12
14
  attr_accessor :cookie_stickiness # Either :app or :lb
13
15
 
14
16
  def save
15
- requires :id, :load_balancer, :cookie_stickiness
17
+ requires :id, :load_balancer
16
18
  service_method = nil
17
19
  args = [load_balancer.id, id]
18
- case cookie_stickiness
19
- when :app
20
- requires :cookie
21
- method = :create_app_cookie_stickiness_policy
22
- args << cookie
23
- when :lb
24
- method = :create_lb_cookie_stickiness_policy
25
- args << expiration if expiration
20
+
21
+ if cookie_stickiness
22
+ case cookie_stickiness
23
+ when :app
24
+ requires :cookie
25
+ method = :create_app_cookie_stickiness_policy
26
+ args << cookie
27
+ when :lb
28
+ method = :create_lb_cookie_stickiness_policy
29
+ args << expiration if expiration
30
+ else
31
+ raise ArgumentError.new('cookie_stickiness must be :app or :lb')
32
+ end
26
33
  else
27
- raise ArgumentError.new('cookie_stickiness must be :app or :lb')
34
+ requires :type_name, :policy_attributes
35
+ method = :create_load_balancer_policy
36
+ args << type_name
37
+ args << policy_attributes
28
38
  end
29
39
 
30
40
  service.send(method, *args)
@@ -0,0 +1,21 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module AWS
5
+ class RDS
6
+
7
+ class InstanceOption < Fog::Model
8
+
9
+ attribute :multi_az_capable, :aliases => 'MultiAZCapable', :type => :boolean
10
+ attribute :engine, :aliases => 'Engine'
11
+ attribute :license_model, :aliases => 'LicenseModel'
12
+ attribute :read_replica_capable, :aliases => 'ReadReplicaCapable', :type => :boolean
13
+ attribute :engine_version, :aliases => 'EngineVersion'
14
+ attribute :availability_zones, :aliases => 'AvailabilityZones', :type => :array
15
+ attribute :db_instance_class, :aliases => 'DBInstanceClass'
16
+ attribute :vpc, :aliases => 'Vpc', :type => :boolean
17
+
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,30 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/aws/models/rds/instance_option'
3
+
4
+ module Fog
5
+ module AWS
6
+ class RDS
7
+
8
+ class InstanceOptions < Fog::PagedCollection
9
+ attribute :filters
10
+ attribute :engine
11
+ model Fog::AWS::RDS::InstanceOption
12
+
13
+ def initialize(attributes)
14
+ self.filters ||= {}
15
+ super
16
+ end
17
+
18
+ # This method deliberately returns only a single page of results
19
+ def all(filters=filters)
20
+ self.filters.merge!(filters)
21
+
22
+ result = service.describe_orderable_db_instance_options(engine, self.filters).body['DescribeOrderableDBInstanceOptionsResult']
23
+ self.filters[:marker] = result['Marker']
24
+ load(result['OrderableDBInstanceOptions'])
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,26 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module AWS
5
+ class RDS
6
+
7
+ class LogFile < Fog::Model
8
+
9
+ attribute :rds_id, :aliases => 'DBInstanceIdentifier'
10
+ attribute :name, :aliases => 'LogFileName'
11
+ attribute :size, :aliases => 'Size', :type => :integer
12
+ attribute :last_written, :aliases => 'LastWritten', :type => :time
13
+ attribute :content, :aliases => 'LogFileData'
14
+ attribute :marker, :aliases => 'Marker'
15
+ attribute :more_content_available, :aliases => 'AdditionalDataPending', :type => :boolean
16
+
17
+ def content_excerpt(marker=nil)
18
+ result = service.download_db_logfile_portion(self.rds_id, self.name, {:marker => marker})
19
+ merge_attributes(result.body['DownloadDBLogFilePortionResult'])
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,50 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/aws/models/rds/log_file'
3
+
4
+ module Fog
5
+ module AWS
6
+ class RDS
7
+
8
+ class LogFiles < Fog::Collection
9
+ attribute :filters
10
+ attribute :rds_id
11
+ model Fog::AWS::RDS::LogFile
12
+
13
+ def initialize(attributes)
14
+ self.filters ||= {}
15
+ super
16
+ end
17
+
18
+ # This method deliberately returns only a single page of results
19
+ def all(filters=filters)
20
+ self.filters.merge!(filters)
21
+
22
+ result = service.describe_db_log_files(rds_id, self.filters).body['DescribeDBLogFilesResult']
23
+ self.filters[:marker] = result['Marker']
24
+ load(result['DBLogFiles'])
25
+ end
26
+
27
+ def each(filters=filters)
28
+ if block_given?
29
+ begin
30
+ page = self.all(filters)
31
+ # We need to explicitly use the base 'each' method here on the page, otherwise we get infinite recursion
32
+ base_each = Fog::Collection.instance_method(:each)
33
+ base_each.bind(page).call { |log_file| yield log_file }
34
+ end while self.filters[:marker]
35
+ end
36
+ self
37
+ end
38
+
39
+ def get(file_name=nil)
40
+ if file_name
41
+ matches = self.select {|log_file| log_file.name.upcase == file_name.upcase}
42
+ return matches.first unless matches.empty?
43
+ end
44
+ rescue Fog::AWS::RDS::NotFound
45
+ end
46
+
47
+ end
48
+ end
49
+ end
50
+ end
@@ -31,6 +31,7 @@ module Fog
31
31
  attribute :license_model, :aliases => 'LicenseModel'
32
32
  attribute :db_subnet_group_name, :aliases => 'DBSubnetGroupName'
33
33
  attribute :publicly_accessible, :aliases => 'PubliclyAccessible'
34
+ attribute :vpc_security_groups, :aliases => 'VpcSecurityGroups'
34
35
 
35
36
  attr_accessor :password, :parameter_group_name, :security_group_names, :port
36
37
 
@@ -21,26 +21,33 @@ module Fog
21
21
  super
22
22
  end
23
23
 
24
- # This will return a single page based on the current or provided filters,
25
- # updating the filters with the marker for the next page. Calling this repeatedly
26
- # will iterate through pages.
24
+ # This method does NOT return all snapshots. Its implementation deliberately returns a single page
25
+ # of results for any one call. It will return a single page based on the current or provided filters,
26
+ # updating the filters with the marker for the next page. Calling this repeatedly will iterate
27
+ # through pages. See the implementation of each for an example of such iteration.
28
+ #
29
+ # It is arguably incorrect for the method not to return all snapshots, particularly considering the
30
+ # implementation in the corresponding 'elb' files. But this implementation has been released, and
31
+ # backwards-compatibility requires leaving it as implemented.
27
32
  def all(filters = filters)
28
33
  self.filters.merge!(filters)
29
34
 
30
- snapshots = service.describe_db_snapshots(filters)
31
- self.filters[:marker] = snapshots.body['DescribeDBSnapshotsResult']['Marker']
32
- data = snapshots.body['DescribeDBSnapshotsResult']['DBSnapshots']
33
- load(data)
35
+ page = service.describe_db_snapshots(self.filters).body['DescribeDBSnapshotsResult']
36
+ self.filters[:marker] = page['Marker']
37
+ load(page['DBSnapshots'])
34
38
  end
35
39
 
36
40
  # This will execute a block for each snapshot, fetching new pages of snapshots as required.
37
41
  def each(filters = filters)
38
- begin
39
- page = self.all(filters)
40
- # We need to explicitly use the base 'each' method here on the page, otherwise we get infinite recursion
41
- base_each = Fog::Collection.instance_method(:each)
42
- base_each.bind(page).call {|snapshot| yield snapshot}
43
- end while self.filters[:marker]
42
+ if block_given?
43
+ begin
44
+ page = self.all(filters)
45
+ # We need to explicitly use the base 'each' method here on the page, otherwise we get infinite recursion
46
+ base_each = Fog::Collection.instance_method(:each)
47
+ base_each.bind(page).call { |snapshot| yield snapshot }
48
+ end while self.filters[:marker]
49
+ end
50
+ self
44
51
  end
45
52
 
46
53
  def get(identity)