fog 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (228) hide show
  1. data/.gitignore +2 -1
  2. data/Rakefile +90 -1
  3. data/bin/fog +5 -1
  4. data/changelog.txt +156 -0
  5. data/docs/_layouts/default.html +1 -0
  6. data/docs/about/press.markdown +4 -0
  7. data/docs/compute/index.markdown +4 -0
  8. data/docs/storage/index.markdown +4 -0
  9. data/fog.gemspec +3 -3
  10. data/lib/fog.rb +1 -1
  11. data/lib/fog/aws/iam.rb +7 -6
  12. data/lib/fog/aws/models/rds/server.rb +27 -23
  13. data/lib/fog/aws/parsers/iam/get_group.rb +2 -2
  14. data/lib/fog/aws/requests/iam/update_server_certificate.rb +37 -0
  15. data/lib/fog/bin.rb +2 -1
  16. data/lib/fog/bin/dynect.rb +30 -0
  17. data/lib/fog/bin/rackspace.rb +4 -0
  18. data/lib/fog/cdn.rb +4 -0
  19. data/lib/fog/cdn/aws.rb +6 -0
  20. data/lib/fog/cdn/parsers/aws/get_invalidation_list.rb +43 -0
  21. data/lib/fog/cdn/parsers/aws/get_streaming_distribution_list.rb +59 -0
  22. data/lib/fog/cdn/parsers/aws/streaming_distribution.rb +59 -0
  23. data/lib/fog/cdn/requests/aws/delete_streaming_distribution.rb +28 -0
  24. data/lib/fog/cdn/requests/aws/get_invalidation_list.rb +42 -0
  25. data/lib/fog/cdn/requests/aws/get_streaming_distribution.rb +50 -0
  26. data/lib/fog/cdn/requests/aws/get_streaming_distribution_list.rb +59 -0
  27. data/lib/fog/cdn/requests/aws/post_streaming_distribution.rb +78 -0
  28. data/lib/fog/cdn/requests/aws/put_streaming_distribution_config.rb +83 -0
  29. data/lib/fog/compute.rb +6 -2
  30. data/lib/fog/compute/aws.rb +12 -1
  31. data/lib/fog/compute/brightbox.rb +22 -12
  32. data/lib/fog/compute/models/aws/image.rb +5 -0
  33. data/lib/fog/compute/models/aws/server.rb +19 -22
  34. data/lib/fog/compute/models/aws/tag.rb +1 -1
  35. data/lib/fog/compute/models/bluebox/server.rb +2 -18
  36. data/lib/fog/compute/models/brightbox/account.rb +1 -1
  37. data/lib/fog/compute/models/brightbox/server.rb +2 -2
  38. data/lib/fog/compute/models/go_grid/server.rb +2 -18
  39. data/lib/fog/compute/models/linode/server.rb +5 -5
  40. data/lib/fog/compute/models/ninefold/server.rb +2 -2
  41. data/lib/fog/compute/models/rackspace/server.rb +2 -18
  42. data/lib/fog/compute/models/server.rb +27 -0
  43. data/lib/fog/compute/models/slicehost/server.rb +2 -18
  44. data/lib/fog/compute/models/storm_on_demand/server.rb +3 -3
  45. data/lib/fog/compute/models/voxel/server.rb +2 -2
  46. data/lib/fog/compute/parsers/aws/describe_images.rb +15 -3
  47. data/lib/fog/compute/parsers/aws/describe_instances.rb +1 -1
  48. data/lib/fog/compute/parsers/aws/describe_security_groups.rb +31 -7
  49. data/lib/fog/compute/requests/aws/describe_images.rb +33 -14
  50. data/lib/fog/compute/requests/aws/describe_volumes.rb +1 -0
  51. data/lib/fog/compute/requests/aws/modify_image_attribute.rb +39 -0
  52. data/lib/fog/compute/requests/aws/modify_instance_attribute.rb +37 -0
  53. data/lib/fog/compute/requests/aws/modify_snapshot_attribute.rb +10 -10
  54. data/lib/fog/compute/requests/aws/register_image.rb +54 -13
  55. data/lib/fog/compute/requests/aws/run_instances.rb +5 -0
  56. data/lib/fog/compute/requests/aws/stop_instances.rb +2 -1
  57. data/lib/fog/compute/requests/brightbox/activate_console_server.rb +2 -8
  58. data/lib/fog/compute/requests/brightbox/add_listeners_load_balancer.rb +2 -8
  59. data/lib/fog/compute/requests/brightbox/add_nodes_load_balancer.rb +2 -8
  60. data/lib/fog/compute/requests/brightbox/create_api_client.rb +2 -8
  61. data/lib/fog/compute/requests/brightbox/create_cloud_ip.rb +2 -8
  62. data/lib/fog/compute/requests/brightbox/create_image.rb +2 -8
  63. data/lib/fog/compute/requests/brightbox/create_load_balancer.rb +2 -8
  64. data/lib/fog/compute/requests/brightbox/create_server.rb +2 -8
  65. data/lib/fog/compute/requests/brightbox/destroy_api_client.rb +2 -8
  66. data/lib/fog/compute/requests/brightbox/destroy_cloud_ip.rb +2 -8
  67. data/lib/fog/compute/requests/brightbox/destroy_image.rb +2 -8
  68. data/lib/fog/compute/requests/brightbox/destroy_load_balancer.rb +2 -8
  69. data/lib/fog/compute/requests/brightbox/destroy_server.rb +2 -8
  70. data/lib/fog/compute/requests/brightbox/get_account.rb +2 -8
  71. data/lib/fog/compute/requests/brightbox/get_api_client.rb +2 -8
  72. data/lib/fog/compute/requests/brightbox/get_cloud_ip.rb +2 -8
  73. data/lib/fog/compute/requests/brightbox/get_image.rb +2 -8
  74. data/lib/fog/compute/requests/brightbox/get_interface.rb +2 -8
  75. data/lib/fog/compute/requests/brightbox/get_load_balancer.rb +2 -8
  76. data/lib/fog/compute/requests/brightbox/get_server.rb +2 -8
  77. data/lib/fog/compute/requests/brightbox/get_server_type.rb +2 -8
  78. data/lib/fog/compute/requests/brightbox/get_user.rb +2 -8
  79. data/lib/fog/compute/requests/brightbox/get_zone.rb +2 -8
  80. data/lib/fog/compute/requests/brightbox/list_api_clients.rb +2 -8
  81. data/lib/fog/compute/requests/brightbox/list_cloud_ips.rb +2 -8
  82. data/lib/fog/compute/requests/brightbox/list_images.rb +2 -8
  83. data/lib/fog/compute/requests/brightbox/list_load_balancers.rb +2 -8
  84. data/lib/fog/compute/requests/brightbox/list_server_types.rb +2 -8
  85. data/lib/fog/compute/requests/brightbox/list_servers.rb +2 -8
  86. data/lib/fog/compute/requests/brightbox/list_users.rb +2 -8
  87. data/lib/fog/compute/requests/brightbox/list_zones.rb +2 -8
  88. data/lib/fog/compute/requests/brightbox/map_cloud_ip.rb +2 -8
  89. data/lib/fog/compute/requests/brightbox/remove_listeners_load_balancer.rb +2 -8
  90. data/lib/fog/compute/requests/brightbox/remove_nodes_load_balancer.rb +2 -8
  91. data/lib/fog/compute/requests/brightbox/reset_ftp_password_account.rb +2 -8
  92. data/lib/fog/compute/requests/brightbox/shutdown_server.rb +2 -8
  93. data/lib/fog/compute/requests/brightbox/snapshot_server.rb +2 -8
  94. data/lib/fog/compute/requests/brightbox/start_server.rb +2 -8
  95. data/lib/fog/compute/requests/brightbox/stop_server.rb +2 -8
  96. data/lib/fog/compute/requests/brightbox/unmap_cloud_ip.rb +2 -8
  97. data/lib/fog/compute/requests/brightbox/update_account.rb +2 -8
  98. data/lib/fog/compute/requests/brightbox/update_api_client.rb +2 -8
  99. data/lib/fog/compute/requests/brightbox/update_image.rb +2 -8
  100. data/lib/fog/compute/requests/brightbox/update_load_balancer.rb +2 -8
  101. data/lib/fog/compute/requests/brightbox/update_server.rb +2 -8
  102. data/lib/fog/compute/requests/brightbox/update_user.rb +2 -8
  103. data/lib/fog/core.rb +1 -0
  104. data/lib/fog/core/credentials.rb +1 -1
  105. data/lib/fog/core/errors.rb +3 -1
  106. data/lib/fog/core/json.rb +20 -0
  107. data/lib/fog/core/provider.rb +3 -1
  108. data/lib/fog/core/service.rb +5 -0
  109. data/lib/fog/dns.rb +8 -1
  110. data/lib/fog/dns/dynect.rb +80 -0
  111. data/lib/fog/dns/models/dynect/record.rb +67 -0
  112. data/lib/fog/dns/models/dynect/records.rb +53 -0
  113. data/lib/fog/dns/models/dynect/zone.rb +60 -0
  114. data/lib/fog/dns/models/dynect/zones.rb +29 -0
  115. data/lib/fog/dns/requests/dynect/delete_record.rb +24 -0
  116. data/lib/fog/dns/requests/dynect/delete_zone.rb +21 -0
  117. data/lib/fog/dns/requests/dynect/get_node_list.rb +23 -0
  118. data/lib/fog/dns/requests/dynect/get_record.rb +25 -0
  119. data/lib/fog/dns/requests/dynect/get_zone.rb +22 -0
  120. data/lib/fog/dns/requests/dynect/post_record.rb +27 -0
  121. data/lib/fog/dns/requests/dynect/post_session.rb +36 -0
  122. data/lib/fog/dns/requests/dynect/post_zone.rb +32 -0
  123. data/lib/fog/dns/requests/dynect/put_zone.rb +26 -0
  124. data/lib/fog/dns/zerigo.rb +1 -1
  125. data/lib/fog/providers.rb +1 -0
  126. data/lib/fog/providers/dynect.rb +14 -0
  127. data/lib/fog/providers/rackspace.rb +1 -0
  128. data/lib/fog/rackspace/load_balancers.rb +179 -0
  129. data/lib/fog/rackspace/models/load_balancers/access_rule.rb +39 -0
  130. data/lib/fog/rackspace/models/load_balancers/access_rules.rb +29 -0
  131. data/lib/fog/rackspace/models/load_balancers/load_balancer.rb +216 -0
  132. data/lib/fog/rackspace/models/load_balancers/load_balancers.rb +27 -0
  133. data/lib/fog/rackspace/models/load_balancers/node.rb +58 -0
  134. data/lib/fog/rackspace/models/load_balancers/nodes.rb +29 -0
  135. data/lib/fog/rackspace/models/load_balancers/virtual_ip.rb +35 -0
  136. data/lib/fog/rackspace/models/load_balancers/virtual_ips.rb +32 -0
  137. data/lib/fog/rackspace/requests/load_balancers/create_access_rule.rb +24 -0
  138. data/lib/fog/rackspace/requests/load_balancers/create_load_balancer.rb +26 -0
  139. data/lib/fog/rackspace/requests/load_balancers/create_node.rb +27 -0
  140. data/lib/fog/rackspace/requests/load_balancers/create_virtual_ip.rb +20 -0
  141. data/lib/fog/rackspace/requests/load_balancers/delete_access_rule.rb +15 -0
  142. data/lib/fog/rackspace/requests/load_balancers/delete_all_access_rules.rb +15 -0
  143. data/lib/fog/rackspace/requests/load_balancers/delete_load_balancer.rb +15 -0
  144. data/lib/fog/rackspace/requests/load_balancers/delete_node.rb +15 -0
  145. data/lib/fog/rackspace/requests/load_balancers/delete_nodes.rb +17 -0
  146. data/lib/fog/rackspace/requests/load_balancers/delete_virtual_ip.rb +15 -0
  147. data/lib/fog/rackspace/requests/load_balancers/get_connection_logging.rb +15 -0
  148. data/lib/fog/rackspace/requests/load_balancers/get_connection_throttling.rb +15 -0
  149. data/lib/fog/rackspace/requests/load_balancers/get_load_balancer.rb +15 -0
  150. data/lib/fog/rackspace/requests/load_balancers/get_load_balancer_usage.rb +21 -0
  151. data/lib/fog/rackspace/requests/load_balancers/get_monitor.rb +15 -0
  152. data/lib/fog/rackspace/requests/load_balancers/get_node.rb +15 -0
  153. data/lib/fog/rackspace/requests/load_balancers/get_session_persistence.rb +15 -0
  154. data/lib/fog/rackspace/requests/load_balancers/get_usage.rb +20 -0
  155. data/lib/fog/rackspace/requests/load_balancers/list_access_rules.rb +15 -0
  156. data/lib/fog/rackspace/requests/load_balancers/list_algorithms.rb +15 -0
  157. data/lib/fog/rackspace/requests/load_balancers/list_load_balancers.rb +15 -0
  158. data/lib/fog/rackspace/requests/load_balancers/list_nodes.rb +15 -0
  159. data/lib/fog/rackspace/requests/load_balancers/list_protocols.rb +15 -0
  160. data/lib/fog/rackspace/requests/load_balancers/list_virtual_ips.rb +15 -0
  161. data/lib/fog/rackspace/requests/load_balancers/remove_connection_throttling.rb +15 -0
  162. data/lib/fog/rackspace/requests/load_balancers/remove_monitor.rb +15 -0
  163. data/lib/fog/rackspace/requests/load_balancers/remove_session_persistence.rb +15 -0
  164. data/lib/fog/rackspace/requests/load_balancers/set_connection_logging.rb +21 -0
  165. data/lib/fog/rackspace/requests/load_balancers/set_connection_throttling.rb +22 -0
  166. data/lib/fog/rackspace/requests/load_balancers/set_monitor.rb +31 -0
  167. data/lib/fog/rackspace/requests/load_balancers/set_session_persistence.rb +21 -0
  168. data/lib/fog/rackspace/requests/load_balancers/update_load_balancer.rb +24 -0
  169. data/lib/fog/rackspace/requests/load_balancers/update_node.rb +26 -0
  170. data/lib/fog/storage.rb +5 -1
  171. data/lib/fog/storage/aws.rb +3 -0
  172. data/lib/fog/storage/models/aws/directory.rb +1 -3
  173. data/lib/fog/storage/models/aws/file.rb +1 -1
  174. data/lib/fog/storage/models/google/file.rb +1 -1
  175. data/lib/fog/storage/models/local/file.rb +8 -6
  176. data/lib/fog/storage/models/ninefold/file.rb +0 -1
  177. data/lib/fog/storage/requests/aws/copy_object.rb +1 -1
  178. data/lib/fog/storage/requests/aws/get_bucket.rb +14 -11
  179. data/lib/fog/storage/requests/aws/post_object_hidden_fields.rb +2 -4
  180. data/tests/aws/models/rds/server_tests.rb +4 -4
  181. data/tests/compute/models/aws/server_tests.rb +15 -1
  182. data/tests/compute/requests/aws/helper.rb +0 -4
  183. data/tests/compute/requests/aws/image_tests.rb +40 -9
  184. data/tests/compute/requests/brightbox/account_tests.rb +1 -1
  185. data/tests/compute/requests/brightbox/helper.rb +3 -0
  186. data/tests/compute/requests/brightbox/load_balancer_tests.rb +1 -1
  187. data/tests/compute/requests/voxel/server_tests.rb +2 -2
  188. data/tests/dns/helper.rb +18 -0
  189. data/tests/dns/models/record_tests.rb +3 -2
  190. data/tests/dns/models/records_tests.rb +2 -2
  191. data/tests/dns/models/zone_tests.rb +2 -2
  192. data/tests/dns/models/zones_tests.rb +1 -1
  193. data/tests/dns/requests/bluebox/dns_tests.rb +0 -12
  194. data/tests/dns/requests/dnsimple/dns_tests.rb +0 -12
  195. data/tests/dns/requests/dnsmadeeasy/dns_tests.rb +0 -12
  196. data/tests/dns/requests/dynect/dns_tests.rb +132 -0
  197. data/tests/dns/requests/linode/dns_tests.rb +1 -13
  198. data/tests/dns/requests/slicehost/dns_tests.rb +1 -13
  199. data/tests/helper.rb +1 -1
  200. data/tests/helpers/collection_helper.rb +2 -2
  201. data/tests/helpers/formats_helper.rb +2 -0
  202. data/tests/helpers/mock_helper.rb +4 -1
  203. data/tests/rackspace/helper.rb +24 -0
  204. data/tests/rackspace/load_balancer_tests.rb +21 -0
  205. data/tests/rackspace/models/access_list_tests.rb +12 -0
  206. data/tests/rackspace/models/access_lists_tests.rb +12 -0
  207. data/tests/rackspace/models/load_balancer_tests.rb +116 -0
  208. data/tests/rackspace/models/load_balancers_tests.rb +19 -0
  209. data/tests/rackspace/models/node_tests.rb +19 -0
  210. data/tests/rackspace/models/nodes_tests.rb +12 -0
  211. data/tests/rackspace/models/virtual_ip_tests.rb +16 -0
  212. data/tests/rackspace/models/virtual_ips_tests.rb +12 -0
  213. data/tests/rackspace/requests/access_list_tests.rb +56 -0
  214. data/tests/rackspace/requests/algorithm_tests.rb +19 -0
  215. data/tests/rackspace/requests/connection_logging_tests.rb +25 -0
  216. data/tests/rackspace/requests/connection_throttling_tests.rb +37 -0
  217. data/tests/rackspace/requests/helper.rb +112 -0
  218. data/tests/rackspace/requests/load_balancer_tests.rb +63 -0
  219. data/tests/rackspace/requests/load_balancer_usage_tests.rb +19 -0
  220. data/tests/rackspace/requests/monitor_tests.rb +46 -0
  221. data/tests/rackspace/requests/node_tests.rb +87 -0
  222. data/tests/rackspace/requests/protocol_tests.rb +21 -0
  223. data/tests/rackspace/requests/session_persistence_tests.rb +33 -0
  224. data/tests/rackspace/requests/usage_tests.rb +17 -0
  225. data/tests/rackspace/requests/virtual_ip_tests.rb +40 -0
  226. data/tests/storage/requests/aws/bucket_tests.rb +53 -0
  227. metadata +127 -8
  228. data/lib/fog/compute/requests/aws/modify_image_attributes.rb +0 -37
@@ -23,7 +23,7 @@ module Fog
23
23
 
24
24
  def end_element(name)
25
25
  case name
26
- when 'Arn'
26
+ when 'Arn', 'Path'
27
27
  if @in_group
28
28
  @response['Group'][name] = value
29
29
  elsif @in_users
@@ -35,7 +35,7 @@ module Fog
35
35
  @response['Group'][name] = value
36
36
  when 'Users'
37
37
  @in_users = false
38
- when 'UserId', 'UserName', 'Path'
38
+ when 'UserId', 'UserName'
39
39
  @user[name] = value
40
40
  when 'member'
41
41
  @response['Users'] << @user
@@ -0,0 +1,37 @@
1
+ module Fog
2
+ module AWS
3
+ class IAM
4
+ class Real
5
+ # Updates the name and/or the path of the specified server certificate.
6
+ #
7
+ # ==== Parameters
8
+ # * server_certificate_name<~String> - The name of the server
9
+ # certificate that you want to update.
10
+ # * options<~Hash>:
11
+ # * 'NewPath'<~String> - The new path for the server certificate.
12
+ # Include this only if you are updating the server certificate's
13
+ # path.
14
+ # * 'NewServerCertificateName'<~String> - The new name for the server
15
+ # certificate. Include this only if you are updating the server
16
+ # certificate's name.
17
+ #
18
+ # ==== Returns
19
+ # * response<~Excon::Response>:
20
+ # * body<~Hash>:
21
+ # * 'RequestId'<~String> - Id of the request
22
+ #
23
+ # ==== See Also
24
+ # http://docs.amazonwebservices.com/IAM/latest/APIReference/index.html?API_UpdateServerCertificate.html
25
+ #
26
+ def update_server_certificate(server_certificate_name, options = {})
27
+ request({
28
+ 'Action' => 'UpdateServerCertificate',
29
+ 'ServerCertificateName' => server_certificate_name,
30
+ :parser => Fog::Parsers::AWS::IAM::Basic.new
31
+ }.merge!(options))
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
data/lib/fog/bin.rb CHANGED
@@ -4,7 +4,7 @@ module Fog
4
4
  class << self
5
5
 
6
6
  def available_providers
7
- @providers.select {|provider| Kernel.const_get(provider).available?}
7
+ @available_providers ||= @providers.select {|provider| Kernel.const_get(provider).available?}.sort
8
8
  end
9
9
 
10
10
  end
@@ -58,6 +58,7 @@ require 'fog/bin/bluebox'
58
58
  require 'fog/bin/brightbox'
59
59
  require 'fog/bin/dnsimple'
60
60
  require 'fog/bin/dnsmadeeasy'
61
+ require 'fog/bin/dynect'
61
62
  require 'fog/bin/ecloud'
62
63
  require 'fog/bin/go_grid'
63
64
  require 'fog/bin/google'
@@ -0,0 +1,30 @@
1
+ class Dynect < Fog::Bin
2
+ class << self
3
+
4
+ def class_for(key)
5
+ case key
6
+ when :dns
7
+ Fog::DNS::Dynect
8
+ else
9
+ raise ArgumentError, "Unrecognized service: #{key}"
10
+ end
11
+ end
12
+
13
+ def [](service)
14
+ @@connections ||= Hash.new do |hash, key|
15
+ hash[key] = case key
16
+ when :dns
17
+ Fog::DNS.new(:provider => 'Dynect')
18
+ else
19
+ raise ArgumentError, "Unrecognized service: #{service}"
20
+ end
21
+ end
22
+ @@connections[service]
23
+ end
24
+
25
+ def services
26
+ [:dns]
27
+ end
28
+
29
+ end
30
+ end
@@ -9,6 +9,8 @@ class Rackspace < Fog::Bin
9
9
  Fog::Compute::Rackspace
10
10
  when :storage
11
11
  Fog::Storage::Rackspace
12
+ when :load_balancers
13
+ Fog::Rackspace::LoadBalancers
12
14
  else
13
15
  raise ArgumentError, "Unrecognized service: #{key}"
14
16
  end
@@ -25,6 +27,8 @@ class Rackspace < Fog::Bin
25
27
  Fog::Compute.new(:provider => 'Rackspace')
26
28
  when :dns
27
29
  Fog::DNS.new(:provider => 'Rackspace')
30
+ when :load_balancers
31
+ Fog::Rackspace::LoadBalancers.new
28
32
  when :storage
29
33
  Formatador.display_line("[yellow][WARN] Rackspace[:storage] is deprecated, use Storage[:rackspace] instead[/]")
30
34
  Fog::Storage.new(:provider => 'Rackspace')
data/lib/fog/cdn.rb CHANGED
@@ -19,5 +19,9 @@ module Fog
19
19
  end
20
20
  end
21
21
 
22
+ def self.providers
23
+ Fog.services[:cdn]
24
+ end
25
+
22
26
  end
23
27
  end
data/lib/fog/cdn/aws.rb CHANGED
@@ -9,11 +9,17 @@ module Fog
9
9
 
10
10
  request_path 'fog/cdn/requests/aws'
11
11
  request 'delete_distribution'
12
+ request 'delete_streaming_distribution'
12
13
  request 'get_distribution'
13
14
  request 'get_distribution_list'
15
+ request 'get_invalidation_list'
16
+ request 'get_streaming_distribution'
17
+ request 'get_streaming_distribution_list'
14
18
  request 'post_distribution'
19
+ request 'post_streaming_distribution'
15
20
  request 'post_invalidation'
16
21
  request 'put_distribution_config'
22
+ request 'put_streaming_distribution_config'
17
23
 
18
24
  class Mock
19
25
 
@@ -0,0 +1,43 @@
1
+ module Fog
2
+ module Parsers
3
+ module CDN
4
+ module AWS
5
+
6
+ class GetInvalidationList < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @invalidation_summary = { }
10
+ @response = { 'InvalidationSummary' => [] }
11
+ end
12
+
13
+ def start_element(name, attrs = [])
14
+ super
15
+ end
16
+
17
+ def end_element(name)
18
+ puts name
19
+ case name
20
+ when 'InvalidationSummary'
21
+ @response['InvalidationSummary'] << @invalidation_summary
22
+ @invalidation_summary = {}
23
+ when 'Id', 'Status'
24
+ @invalidation_summary[name] = @value
25
+ when 'IsTruncated'
26
+ if @value == 'true'
27
+ @response[name] = true
28
+ else
29
+ @response[name] = false
30
+ end
31
+ when 'Marker', 'NextMarker'
32
+ @response[name] = @value
33
+ when 'MaxItems'
34
+ @response[name] = @value.to_i
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,59 @@
1
+ module Fog
2
+ module Parsers
3
+ module CDN
4
+ module AWS
5
+
6
+ class GetStreamingDistributionList < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @distribution_summary = { 'CNAME' => [], 'TrustedSigners' => [] }
10
+ @response = { 'StreamingDistributionSummary' => [] }
11
+ end
12
+
13
+ def start_element(name, attrs = [])
14
+ super
15
+ case name
16
+ when 'S3Origin'
17
+ @origin = name
18
+ @distribution_summary[@origin] = {}
19
+ end
20
+ end
21
+
22
+ def end_element(name)
23
+ case name
24
+ when 'StreamingDistributionSummary'
25
+ @response['StreamingDistributionSummary'] << @distribution_summary
26
+ @distribution_summary = { 'CNAME' => [], 'TrustedSigners' => [] }
27
+ when 'Comment', 'DomainName', 'Id', 'Status'
28
+ @distribution_summary[name] = @value
29
+ when 'CNAME'
30
+ @distribution_summary[name] << @value
31
+ when 'DNSName', 'OriginAccessIdentity'
32
+ @distribution_summary[@origin][name] = @value
33
+ when 'Enabled'
34
+ if @value == 'true'
35
+ @distribution_summary[name] = true
36
+ else
37
+ @distribution_summary[name] = false
38
+ end
39
+ when 'LastModifiedTime'
40
+ @distribution_summary[name] = Time.parse(@value)
41
+ when 'IsTruncated'
42
+ if @value == 'true'
43
+ @response[name] = true
44
+ else
45
+ @response[name] = false
46
+ end
47
+ when 'Marker', 'NextMarker'
48
+ @response[name] = @value
49
+ when 'MaxItems'
50
+ @response[name] = @value.to_i
51
+ end
52
+ end
53
+
54
+ end
55
+
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,59 @@
1
+ module Fog
2
+ module Parsers
3
+ module CDN
4
+ module AWS
5
+
6
+ class StreamingDistribution < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = { 'StreamingDistributionConfig' => { 'CNAME' => [], 'Logging' => {}, 'TrustedSigners' => [] } }
10
+ end
11
+
12
+ def start_element(name, attrs = [])
13
+ super
14
+ case name
15
+ when 'CustomOrigin', 'S3Origin'
16
+ @origin = name
17
+ @response['StreamingDistributionConfig'][@origin] = {}
18
+ end
19
+ end
20
+
21
+ def end_element(name)
22
+ case name
23
+ when 'AwsAccountNumber'
24
+ @response['StreamingDistributionConfig']['TrustedSigners'] << @value
25
+ when 'Bucket', 'Prefix'
26
+ @response['StreamingDistributionConfig']['Logging'][name] = @value
27
+ when 'CNAME'
28
+ @response['StreamingDistributionConfig']['CNAME'] << @value
29
+ when 'DNSName', 'OriginAccessIdentity', 'OriginProtocolPolicy'
30
+ @response['StreamingDistributionConfig'][@origin][name] = @value
31
+ when 'DomainName', 'Id', 'Status'
32
+ @response[name] = @value
33
+ when 'CallerReference', 'Comment', 'DefaultRootObject', 'Origin', 'OriginAccessIdentity'
34
+ @response['StreamingDistributionConfig'][name] = @value
35
+ when 'Enabled'
36
+ if @value == 'true'
37
+ @response['StreamingDistributionConfig'][name] = true
38
+ else
39
+ @response['StreamingDistributionConfig'][name] = false
40
+ end
41
+ when 'HTTPPort', 'HTTPSPort'
42
+ @response['StreamingDistributionConfig'][@origin][name] = @value.to_i
43
+ when 'InProgressInvalidationBatches'
44
+ @response[name] = @value.to_i
45
+ when 'LastModifiedTime'
46
+ @response[name] = Time.parse(@value)
47
+ when 'Protocol'
48
+ @response['StreamingDistributionConfig']['RequireProtocols'] = @value
49
+ when 'Self'
50
+ @response['StreamingDistributionConfig']['TrustedSigners'] << 'Self'
51
+ end
52
+ end
53
+
54
+ end
55
+
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,28 @@
1
+ module Fog
2
+ module CDN
3
+ class AWS
4
+ class Real
5
+
6
+ # Delete a streaming distribution from CloudFront
7
+ #
8
+ # ==== Parameters
9
+ # * distribution_id<~String> - Id of distribution to delete
10
+ # * etag<~String> - etag of that distribution from earlier get or put
11
+ #
12
+ # ==== See Also
13
+ # http://docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/DeleteStreamingDistribution.html
14
+
15
+ def delete_streaming_distribution(distribution_id, etag)
16
+ request({
17
+ :expects => 204,
18
+ :headers => { 'If-Match' => etag },
19
+ :idempotent => true,
20
+ :method => 'DELETE',
21
+ :path => "/streaming-distribution/#{distribution_id}"
22
+ })
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,42 @@
1
+ module Fog
2
+ module CDN
3
+ class AWS
4
+ class Real
5
+
6
+ require 'fog/cdn/parsers/aws/get_invalidation_list'
7
+
8
+ # ==== Parameters
9
+ # * options<~Hash> - config arguments for list. Defaults to {}.
10
+ # * 'Marker'<~String> - limits object keys to only those that appear
11
+ # lexicographically after its value.
12
+ # * 'MaxItems'<~Integer> - limits number of object keys returned
13
+ #
14
+ # ==== Returns
15
+ # * response<~Excon::Response>:
16
+ # * body<~Hash>:
17
+ # * 'IsTruncated'<~Boolean> - Whether or not the listing is truncated
18
+ # * 'Marker'<~String> - Marker specified for query
19
+ # * 'MaxItems'<~Integer> - Maximum number of keys specified for query
20
+ # * 'NextMarker'<~String> - Marker to specify for next page (id of last result of current page)
21
+ # * 'InvalidationSummary'<~Array>:
22
+ # * 'Id'<~String>:
23
+ # * 'Status'<~String>:
24
+ #
25
+ # ==== See Also
26
+ # http://docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/ListInvalidation.html
27
+
28
+ def get_invalidation_list(distribution_id, options = {})
29
+ request({
30
+ :expects => 200,
31
+ :idempotent => true,
32
+ :method => 'GET',
33
+ :parser => Fog::Parsers::CDN::AWS::GetInvalidationList.new,
34
+ :path => "/distribution/#{distribution_id}/invalidation",
35
+ :query => options
36
+ })
37
+ end
38
+
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,50 @@
1
+ module Fog
2
+ module CDN
3
+ class AWS
4
+ class Real
5
+
6
+ require 'fog/cdn/parsers/aws/streaming_distribution'
7
+
8
+ # Get information about a streaming distribution from CloudFront
9
+ #
10
+ # ==== Parameters
11
+ # * distribution_id<~String> - id of distribution
12
+ #
13
+ # ==== Returns
14
+ # * response<~Excon::Response>:
15
+ # * body<~Hash>:
16
+ # * 'S3Origin'<~Hash>:
17
+ # * 'DNSName'<~String> - origin to associate with distribution, ie 'mybucket.s3.amazonaws.com'
18
+ # * 'OriginAccessIdentity'<~String> - Optional: Used when serving private content
19
+ # * 'Id'<~String> - Id of distribution
20
+ # * 'LastModifiedTime'<~String> - Timestamp of last modification of distribution
21
+ # * 'Status'<~String> - Status of distribution
22
+ # * 'StreamingDistributionConfig'<~Array>:
23
+ # * 'CallerReference'<~String> - Used to prevent replay, defaults to Time.now.to_i.to_s
24
+ # * 'CNAME'<~Array> - array of associated cnames
25
+ # * 'Comment'<~String> - comment associated with distribution
26
+ # * 'Enabled'<~Boolean> - whether or not distribution is enabled
27
+ # * 'InProgressInvalidationBatches'<~Integer> - number of invalidation batches in progress
28
+ # * 'Logging'<~Hash>:
29
+ # * 'Bucket'<~String> - bucket logs are stored in
30
+ # * 'Prefix'<~String> - prefix logs are stored with
31
+ # * 'Origin'<~String> - s3 origin bucket
32
+ # * 'TrustedSigners'<~Array> - trusted signers
33
+ #
34
+ # ==== See Also
35
+ # http://docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/GetStreamingDistribution.html
36
+
37
+ def get_streaming_distribution(distribution_id)
38
+ request({
39
+ :expects => 200,
40
+ :idempotent => true,
41
+ :method => 'GET',
42
+ :parser => Fog::Parsers::CDN::AWS::StreamingDistribution.new,
43
+ :path => "/streaming-distribution/#{distribution_id}"
44
+ })
45
+ end
46
+
47
+ end
48
+ end
49
+ end
50
+ end