fog 0.3.17 → 0.3.18

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 (180) hide show
  1. data/Gemfile.lock +5 -5
  2. data/README.rdoc +16 -7
  3. data/fog.gemspec +102 -27
  4. data/lib/fog.rb +3 -2
  5. data/lib/fog/aws/cdn.rb +2 -1
  6. data/lib/fog/aws/compute.rb +3 -2
  7. data/lib/fog/aws/iam.rb +8 -0
  8. data/lib/fog/aws/models/compute/flavors.rb +2 -1
  9. data/lib/fog/aws/models/compute/server.rb +3 -0
  10. data/lib/fog/aws/models/compute/volume.rb +9 -8
  11. data/lib/fog/aws/models/storage/file.rb +24 -14
  12. data/lib/fog/aws/models/storage/files.rb +4 -14
  13. data/lib/fog/aws/parsers/cdn/distribution.rb +16 -1
  14. data/lib/fog/aws/parsers/cdn/get_distribution_list.rb +13 -0
  15. data/lib/fog/aws/parsers/compute/describe_volumes.rb +2 -0
  16. data/lib/fog/aws/parsers/iam/create_group.rb +2 -2
  17. data/lib/fog/aws/parsers/iam/create_user.rb +26 -0
  18. data/lib/fog/aws/parsers/iam/list_group_policies.rb +28 -0
  19. data/lib/fog/aws/parsers/iam/list_groups.rb +1 -1
  20. data/lib/fog/aws/parsers/storage/complete_multipart_upload.rb +24 -0
  21. data/lib/fog/aws/parsers/storage/initiate_multipart_upload.rb +24 -0
  22. data/lib/fog/aws/parsers/storage/list_multipart_uploads.rb +56 -0
  23. data/lib/fog/aws/parsers/storage/list_parts.rb +40 -0
  24. data/lib/fog/aws/requests/cdn/get_distribution.rb +11 -1
  25. data/lib/fog/aws/requests/cdn/get_distribution_list.rb +9 -1
  26. data/lib/fog/aws/requests/cdn/post_distribution.rb +16 -5
  27. data/lib/fog/aws/requests/cdn/put_distribution_config.rb +102 -0
  28. data/lib/fog/aws/requests/compute/describe_volumes.rb +1 -0
  29. data/lib/fog/aws/requests/compute/run_instances.rb +1 -1
  30. data/lib/fog/aws/requests/iam/add_user_to_group.rb +42 -0
  31. data/lib/fog/aws/requests/iam/create_group.rb +7 -3
  32. data/lib/fog/aws/requests/iam/create_user.rb +47 -0
  33. data/lib/fog/aws/requests/iam/delete_group.rb +5 -1
  34. data/lib/fog/aws/requests/iam/delete_group_policy.rb +42 -0
  35. data/lib/fog/aws/requests/iam/delete_user.rb +40 -0
  36. data/lib/fog/aws/requests/iam/list_group_policies.rb +47 -0
  37. data/lib/fog/aws/requests/iam/list_groups.rb +9 -4
  38. data/lib/fog/aws/requests/iam/put_group_policy.rb +44 -0
  39. data/lib/fog/aws/requests/iam/remove_user_from_group.rb +42 -0
  40. data/lib/fog/aws/requests/simpledb/put_attributes.rb +2 -2
  41. data/lib/fog/aws/requests/storage/abort_multipart_upload.rb +38 -0
  42. data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +60 -0
  43. data/lib/fog/aws/requests/storage/get_service.rb +1 -1
  44. data/lib/fog/aws/requests/storage/initiate_multipart_upload.rb +55 -0
  45. data/lib/fog/aws/requests/storage/list_multipart_uploads.rb +68 -0
  46. data/lib/fog/aws/requests/storage/list_parts.rb +67 -0
  47. data/lib/fog/aws/requests/storage/put_object.rb +12 -5
  48. data/lib/fog/aws/requests/storage/upload_part.rb +51 -0
  49. data/lib/fog/aws/storage.rb +12 -6
  50. data/lib/fog/brightbox.rb +7 -0
  51. data/lib/fog/brightbox/bin.rb +23 -0
  52. data/lib/fog/brightbox/compute.rb +134 -0
  53. data/lib/fog/brightbox/models/compute/account.rb +51 -0
  54. data/lib/fog/brightbox/models/compute/cloud_ip.rb +43 -0
  55. data/lib/fog/brightbox/models/compute/cloud_ips.rb +34 -0
  56. data/lib/fog/brightbox/models/compute/flavor.rb +33 -0
  57. data/lib/fog/brightbox/models/compute/flavors.rb +28 -0
  58. data/lib/fog/brightbox/models/compute/image.rb +52 -0
  59. data/lib/fog/brightbox/models/compute/images.rb +28 -0
  60. data/lib/fog/brightbox/models/compute/server.rb +94 -0
  61. data/lib/fog/brightbox/models/compute/servers.rb +29 -0
  62. data/lib/fog/brightbox/models/compute/user.rb +39 -0
  63. data/lib/fog/brightbox/models/compute/users.rb +29 -0
  64. data/lib/fog/brightbox/models/compute/zone.rb +21 -0
  65. data/lib/fog/brightbox/models/compute/zones.rb +29 -0
  66. data/lib/fog/brightbox/requests/compute/create_api_client.rb +27 -0
  67. data/lib/fog/brightbox/requests/compute/create_cloud_ip.rb +27 -0
  68. data/lib/fog/brightbox/requests/compute/create_image.rb +27 -0
  69. data/lib/fog/brightbox/requests/compute/create_server.rb +27 -0
  70. data/lib/fog/brightbox/requests/compute/destroy_api_client.rb +28 -0
  71. data/lib/fog/brightbox/requests/compute/destroy_cloud_ip.rb +28 -0
  72. data/lib/fog/brightbox/requests/compute/destroy_image.rb +28 -0
  73. data/lib/fog/brightbox/requests/compute/destroy_server.rb +28 -0
  74. data/lib/fog/brightbox/requests/compute/get_account.rb +27 -0
  75. data/lib/fog/brightbox/requests/compute/get_api_client.rb +28 -0
  76. data/lib/fog/brightbox/requests/compute/get_cloud_ip.rb +28 -0
  77. data/lib/fog/brightbox/requests/compute/get_image.rb +28 -0
  78. data/lib/fog/brightbox/requests/compute/get_interface.rb +28 -0
  79. data/lib/fog/brightbox/requests/compute/get_server.rb +28 -0
  80. data/lib/fog/brightbox/requests/compute/get_server_type.rb +28 -0
  81. data/lib/fog/brightbox/requests/compute/get_user.rb +28 -0
  82. data/lib/fog/brightbox/requests/compute/get_zone.rb +28 -0
  83. data/lib/fog/brightbox/requests/compute/list_api_clients.rb +27 -0
  84. data/lib/fog/brightbox/requests/compute/list_cloud_ips.rb +27 -0
  85. data/lib/fog/brightbox/requests/compute/list_images.rb +27 -0
  86. data/lib/fog/brightbox/requests/compute/list_server_types.rb +27 -0
  87. data/lib/fog/brightbox/requests/compute/list_servers.rb +27 -0
  88. data/lib/fog/brightbox/requests/compute/list_users.rb +27 -0
  89. data/lib/fog/brightbox/requests/compute/list_zones.rb +27 -0
  90. data/lib/fog/brightbox/requests/compute/map_cloud_ip.rb +28 -0
  91. data/lib/fog/brightbox/requests/compute/reset_ftp_password_account.rb +27 -0
  92. data/lib/fog/brightbox/requests/compute/resize_server.rb +27 -0
  93. data/lib/fog/brightbox/requests/compute/shutdown_server.rb +28 -0
  94. data/lib/fog/brightbox/requests/compute/snapshot_server.rb +28 -0
  95. data/lib/fog/brightbox/requests/compute/start_server.rb +28 -0
  96. data/lib/fog/brightbox/requests/compute/stop_server.rb +28 -0
  97. data/lib/fog/brightbox/requests/compute/unmap_cloud_ip.rb +28 -0
  98. data/lib/fog/brightbox/requests/compute/update_account.rb +28 -0
  99. data/lib/fog/brightbox/requests/compute/update_api_client.rb +29 -0
  100. data/lib/fog/brightbox/requests/compute/update_image.rb +29 -0
  101. data/lib/fog/brightbox/requests/compute/update_server.rb +29 -0
  102. data/lib/fog/brightbox/requests/compute/update_user.rb +29 -0
  103. data/lib/fog/core/attributes.rb +3 -3
  104. data/lib/fog/core/bin.rb +2 -0
  105. data/lib/fog/core/compute.rb +5 -2
  106. data/lib/fog/core/credentials.rb +2 -0
  107. data/lib/fog/core/service.rb +24 -12
  108. data/lib/fog/google/models/storage/file.rb +23 -14
  109. data/lib/fog/google/models/storage/files.rb +4 -14
  110. data/lib/fog/google/requests/storage/get_bucket.rb +0 -1
  111. data/lib/fog/google/requests/storage/put_object.rb +9 -2
  112. data/lib/fog/rackspace/models/storage/file.rb +3 -3
  113. data/lib/fog/rackspace/models/storage/files.rb +5 -13
  114. data/spec/aws/models/compute/server_spec.rb +0 -3
  115. data/spec/aws/requests/simpledb/get_attributes_spec.rb +11 -0
  116. data/spec/core/attributes_spec.rb +52 -0
  117. data/spec/vcloud/bin_spec.rb +1 -1
  118. data/spec/vcloud/vcloud_spec.rb +1 -1
  119. data/tests/aws/models/compute/flavors_tests.rb +5 -0
  120. data/tests/aws/models/compute/server_tests.rb +6 -0
  121. data/tests/aws/models/compute/servers_tests.rb +6 -0
  122. data/tests/aws/requests/storage/bucket_tests.rb +1 -1
  123. data/tests/aws/requests/storage/multipart_upload_tests.rb +135 -0
  124. data/tests/bluebox/models/compute/flavors_tests.rb +5 -0
  125. data/tests/bluebox/models/compute/server_tests.rb +5 -0
  126. data/tests/bluebox/models/compute/servers_tests.rb +6 -0
  127. data/tests/brightbox/helper.rb +0 -0
  128. data/tests/brightbox/models/compute/flavors_tests.rb +5 -0
  129. data/tests/brightbox/models/compute/server_tests.rb +6 -0
  130. data/tests/brightbox/models/compute/servers_tests.rb +6 -0
  131. data/tests/google/requests/storage/bucket_tests.rb +78 -0
  132. data/tests/google/requests/storage/object_tests.rb +81 -0
  133. data/tests/helper.rb +19 -4
  134. data/tests/helpers/collection_tests.rb +51 -0
  135. data/tests/helpers/compute/flavors_tests.rb +34 -0
  136. data/tests/helpers/compute/server_tests.rb +19 -0
  137. data/tests/helpers/compute/servers_tests.rb +11 -0
  138. data/tests/helpers/model_tests.rb +28 -0
  139. data/tests/helpers/storage/directories_tests.rb +4 -36
  140. data/tests/helpers/storage/directory_tests.rb +8 -22
  141. data/tests/helpers/storage/file_tests.rb +8 -25
  142. data/tests/helpers/storage/files_tests.rb +5 -39
  143. data/tests/local/models/storage/directories_tests.rb +1 -1
  144. data/tests/local/models/storage/directory_tests.rb +1 -1
  145. data/tests/local/models/storage/file_tests.rb +1 -1
  146. data/tests/local/models/storage/files_tests.rb +1 -1
  147. data/tests/rackspace/models/compute/flavors_tests.rb +5 -0
  148. data/tests/rackspace/models/compute/server_tests.rb +6 -0
  149. data/tests/rackspace/models/compute/servers_tests.rb +6 -0
  150. data/tests/rackspace/models/storage/directories_tests.rb +1 -1
  151. data/tests/rackspace/models/storage/directory_tests.rb +1 -1
  152. data/tests/rackspace/models/storage/file_tests.rb +1 -1
  153. data/tests/rackspace/models/storage/files_tests.rb +1 -1
  154. data/tests/slicehost/models/compute/flavors_tests.rb +5 -0
  155. data/tests/slicehost/models/compute/server_tests.rb +6 -0
  156. data/tests/slicehost/models/compute/servers_tests.rb +6 -0
  157. metadata +108 -31
  158. data/spec/aws/models/compute/flavors_spec.rb +0 -14
  159. data/spec/aws/models/compute/servers_spec.rb +0 -21
  160. data/spec/bluebox/models/compute/flavors_spec.rb +0 -17
  161. data/spec/bluebox/models/compute/server_spec.rb +0 -29
  162. data/spec/bluebox/models/compute/servers_spec.rb +0 -31
  163. data/spec/google/requests/storage/copy_object_spec.rb +0 -61
  164. data/spec/google/requests/storage/delete_bucket_spec.rb +0 -35
  165. data/spec/google/requests/storage/delete_object_spec.rb +0 -38
  166. data/spec/google/requests/storage/get_bucket_spec.rb +0 -110
  167. data/spec/google/requests/storage/get_object_spec.rb +0 -58
  168. data/spec/google/requests/storage/get_service_spec.rb +0 -32
  169. data/spec/google/requests/storage/head_object_spec.rb +0 -26
  170. data/spec/google/requests/storage/put_bucket_spec.rb +0 -21
  171. data/spec/google/requests/storage/put_object_spec.rb +0 -43
  172. data/spec/rackspace/models/compute/flavors_spec.rb +0 -18
  173. data/spec/rackspace/models/compute/server_spec.rb +0 -55
  174. data/spec/rackspace/models/compute/servers_spec.rb +0 -22
  175. data/spec/shared_examples/flavors_examples.rb +0 -16
  176. data/spec/shared_examples/server_examples.rb +0 -43
  177. data/spec/shared_examples/servers_examples.rb +0 -37
  178. data/spec/slicehost/models/compute/flavors_spec.rb +0 -18
  179. data/spec/slicehost/models/compute/server_spec.rb +0 -55
  180. data/spec/slicehost/models/compute/servers_spec.rb +0 -26
@@ -0,0 +1,28 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/brightbox/models/compute/flavor'
3
+
4
+ module Fog
5
+ module Brightbox
6
+ class Compute
7
+
8
+ class Flavors < Fog::Collection
9
+
10
+ model Fog::Brightbox::Compute::Flavor
11
+
12
+ def all
13
+ data = connection.list_server_types
14
+ load(data)
15
+ end
16
+
17
+ def get(identifier)
18
+ data = connection.get_server_type(identifier)
19
+ new(data)
20
+ rescue Excon::Errors::NotFound
21
+ nil
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,52 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Brightbox
5
+ class Compute
6
+
7
+ class Image < Fog::Model
8
+
9
+ identity :id
10
+
11
+ attribute :url
12
+ attribute :name
13
+ attribute :status
14
+ attribute :source
15
+ attribute :source_type
16
+
17
+ attribute :ancestor_id, :aliases => "ancestor", :squash => "id"
18
+ attribute :owner_id, :aliases => "owner", :squash => "id"
19
+ attribute :arch
20
+
21
+ attribute :resource_type
22
+ attribute :description
23
+ attribute :public
24
+ attribute :official
25
+ attribute :virtual_size
26
+ attribute :disk_size
27
+ attribute :created_at
28
+
29
+ def save
30
+ requires :source, :arch
31
+ options = {
32
+ :source => @source,
33
+ :arch => @arch,
34
+ :name => @name,
35
+ :description => @description
36
+ }.delete_if {|k,v| v.nil? || v == "" }
37
+ data = connection.create_image(options)
38
+ merge_attributes(data)
39
+ true
40
+ end
41
+
42
+ def destroy
43
+ requires :identity
44
+ connection.destroy_image(identity)
45
+ true
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,28 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/brightbox/models/compute/image'
3
+
4
+ module Fog
5
+ module Brightbox
6
+ class Compute
7
+
8
+ class Images < Fog::Collection
9
+
10
+ model Fog::Brightbox::Compute::Image
11
+
12
+ def all
13
+ data = connection.list_images
14
+ load(data)
15
+ end
16
+
17
+ def get(identifier)
18
+ data = connection.get_image(identifier)
19
+ new(data)
20
+ rescue Excon::Errors::NotFound
21
+ nil
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,94 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Brightbox
5
+ class Compute
6
+
7
+ class Server < Fog::Model
8
+
9
+ identity :id
10
+
11
+ attribute :url
12
+ attribute :name
13
+ attribute :status
14
+ attribute :hostname
15
+ attribute :created_at, :type => :time
16
+ attribute :deleted_at, :type => :time
17
+ attribute :started_at, :type => :time
18
+ attribute :user_data
19
+
20
+ attribute :resource_type
21
+
22
+ attribute :account_id, :aliases => "account", :squash => "id"
23
+ attribute :image_id, :aliases => "image", :squash => "id"
24
+ attribute :flavor_id, :aliases => "server_type", :squash => "id"
25
+ attribute :zone_id, :aliases => "zone", :squash => "id"
26
+
27
+ attribute :snapshots
28
+ attribute :cloud_ips
29
+ attribute :interfaces
30
+
31
+ def snapshot
32
+ requires :identity
33
+ connection.snapshot_server(identity)
34
+ end
35
+
36
+ def reboot
37
+ false
38
+ end
39
+
40
+ def start
41
+ requires :identity
42
+ connection.start_server(identity)
43
+ true
44
+ end
45
+
46
+ def stop
47
+ requires :identity
48
+ connection.stop_server(identity)
49
+ true
50
+ end
51
+
52
+ def shutdown
53
+ requires :identity
54
+ connection.shutdown_server(identity)
55
+ true
56
+ end
57
+
58
+ def destroy
59
+ requires :identity
60
+ connection.destroy_server(identity)
61
+ true
62
+ end
63
+
64
+ def flavor
65
+ requires :flavor_id
66
+ connection.flavors.get(@flavor_id)
67
+ end
68
+
69
+ def image
70
+ requires :image_id
71
+ connection.images.get(@image_id)
72
+ end
73
+
74
+ def ready?
75
+ status == 'active'
76
+ end
77
+
78
+ def save
79
+ requires :image_id
80
+ options = {
81
+ :image => @image_id,
82
+ :server_type => @flavor_id,
83
+ :name => @name,
84
+ :zone => @zone_id,
85
+ :user_data => @user_data
86
+ }.delete_if {|k,v| v.nil? || v == "" }
87
+ data = connection.create_server(options)
88
+ merge_attributes(data)
89
+ true
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,29 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/brightbox/models/compute/server'
3
+
4
+ module Fog
5
+ module Brightbox
6
+ class Compute
7
+
8
+ class Servers < Fog::Collection
9
+
10
+ model Fog::Brightbox::Compute::Server
11
+
12
+ def all
13
+ data = connection.list_servers
14
+ load(data)
15
+ end
16
+
17
+ def get(identifier)
18
+ return nil if identifier.nil? || identifier == ""
19
+ data = connection.get_server(identifier)
20
+ new(data)
21
+ rescue Excon::Errors::NotFound
22
+ nil
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,39 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Brightbox
5
+ class Compute
6
+
7
+ class User < Fog::Model
8
+
9
+ identity :id
10
+
11
+ attribute :url
12
+ attribute :resource_type
13
+ attribute :name
14
+ attribute :email_address
15
+ attribute :email_verified
16
+ attribute :ssh_key
17
+
18
+ attribute :account_id, :aliases => "default_account", :squash => "id"
19
+ attribute :accounts
20
+
21
+ def save
22
+ requires :identity
23
+
24
+ options = {
25
+ :email_address => @email_address,
26
+ :ssh_key => @ssh_key,
27
+ :name => @name
28
+ }
29
+
30
+ data = connection.update_user(identity, options)
31
+ merge_attributes(data)
32
+ true
33
+ end
34
+
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,29 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/brightbox/models/compute/user'
3
+
4
+ module Fog
5
+ module Brightbox
6
+ class Compute
7
+
8
+ class Users < Fog::Collection
9
+
10
+ model Fog::Brightbox::Compute::User
11
+
12
+ def all
13
+ data = connection.list_users
14
+ load(data)
15
+ end
16
+
17
+ def get(identifier)
18
+ return nil if identifier.nil? || identifier == ""
19
+ data = connection.get_user(identifier)
20
+ new(data)
21
+ rescue Excon::Errors::NotFound
22
+ nil
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,21 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Brightbox
5
+ class Compute
6
+
7
+ class Zone < Fog::Model
8
+
9
+ identity :id
10
+
11
+ attribute :url
12
+ attribute :handle
13
+ attribute :status
14
+ attribute :resource_type
15
+ attribute :description
16
+
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,29 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/brightbox/models/compute/zone'
3
+
4
+ module Fog
5
+ module Brightbox
6
+ class Compute
7
+
8
+ class Zones < Fog::Collection
9
+
10
+ model Fog::Brightbox::Compute::Zone
11
+
12
+ def all
13
+ data = connection.list_zones
14
+ load(data)
15
+ end
16
+
17
+ def get(identifier)
18
+ return nil if identifier.nil? || identifier == ""
19
+ data = connection.get_zone(identifier)
20
+ new(data)
21
+ rescue Excon::Errors::NotFound
22
+ nil
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,27 @@
1
+ module Fog
2
+ module Brightbox
3
+ class Compute
4
+ class Real
5
+
6
+ def create_api_client(options = {})
7
+ request(
8
+ :expects => [201],
9
+ :method => 'POST',
10
+ :path => "/1.0/api_clients",
11
+ :headers => {"Content-Type" => "application/json"},
12
+ :body => options.to_json
13
+ )
14
+ end
15
+
16
+ end
17
+
18
+ class Mock
19
+
20
+ def create_api_client(options = {})
21
+ Fog::Mock.not_implemented
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ module Fog
2
+ module Brightbox
3
+ class Compute
4
+ class Real
5
+
6
+ def create_cloud_ip(options = {})
7
+ request(
8
+ :expects => [201],
9
+ :method => 'POST',
10
+ :path => "/1.0/cloud_ips",
11
+ :headers => {"Content-Type" => "application/json"},
12
+ :body => options.to_json
13
+ )
14
+ end
15
+
16
+ end
17
+
18
+ class Mock
19
+
20
+ def create_cloud_ip(options = {})
21
+ Fog::Mock.not_implemented
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ module Fog
2
+ module Brightbox
3
+ class Compute
4
+ class Real
5
+
6
+ def create_image(options = {})
7
+ request(
8
+ :expects => [201],
9
+ :method => 'POST',
10
+ :path => "/1.0/images",
11
+ :headers => {"Content-Type" => "application/json"},
12
+ :body => options.to_json
13
+ )
14
+ end
15
+
16
+ end
17
+
18
+ class Mock
19
+
20
+ def create_image(options = {})
21
+ Fog::Mock.not_implemented
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end