fog 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. data/Rakefile +106 -17
  2. data/bin/fog +1 -1
  3. data/changelog.txt +17 -0
  4. data/docs/_layouts/default.html +2 -1
  5. data/docs/about/contributing.markdown +1 -1
  6. data/docs/compute/index.markdown +104 -0
  7. data/docs/index.markdown +1 -0
  8. data/docs/storage/index.markdown +17 -0
  9. data/fog.gemspec +3 -2
  10. data/lib/fog.rb +1 -1
  11. data/lib/fog/aws/elb.rb +1 -0
  12. data/lib/fog/aws/iam.rb +1 -0
  13. data/lib/fog/aws/rds.rb +1 -0
  14. data/lib/fog/aws/requests/simpledb/batch_put_attributes.rb +5 -5
  15. data/lib/fog/aws/requests/simpledb/create_domain.rb +1 -1
  16. data/lib/fog/aws/requests/simpledb/delete_attributes.rb +3 -3
  17. data/lib/fog/aws/requests/simpledb/delete_domain.rb +1 -1
  18. data/lib/fog/aws/requests/simpledb/domain_metadata.rb +1 -1
  19. data/lib/fog/aws/requests/simpledb/get_attributes.rb +5 -5
  20. data/lib/fog/aws/requests/simpledb/list_domains.rb +2 -2
  21. data/lib/fog/aws/requests/simpledb/put_attributes.rb +6 -6
  22. data/lib/fog/aws/ses.rb +1 -0
  23. data/lib/fog/aws/simpledb.rb +8 -2
  24. data/lib/fog/bin.rb +2 -2
  25. data/lib/fog/cdn/aws.rb +8 -2
  26. data/lib/fog/cdn/rackspace.rb +8 -2
  27. data/lib/fog/compute/aws.rb +12 -3
  28. data/lib/fog/compute/bluebox.rb +8 -2
  29. data/lib/fog/compute/ecloud.rb +9 -4
  30. data/lib/fog/compute/go_grid.rb +8 -2
  31. data/lib/fog/compute/linode.rb +38 -6
  32. data/lib/fog/compute/models/aws/volumes.rb +4 -4
  33. data/lib/fog/compute/models/bluebox/server.rb +3 -3
  34. data/lib/fog/compute/models/brightbox/server.rb +9 -9
  35. data/lib/fog/compute/models/linode/data_center.rb +12 -0
  36. data/lib/fog/compute/models/linode/data_centers.rb +26 -0
  37. data/lib/fog/compute/models/linode/disk.rb +62 -0
  38. data/lib/fog/compute/models/linode/disks.rb +40 -0
  39. data/lib/fog/compute/models/linode/flavor.rb +23 -0
  40. data/lib/fog/compute/models/linode/flavors.rb +32 -0
  41. data/lib/fog/compute/models/linode/image.rb +14 -0
  42. data/lib/fog/compute/models/linode/images.rb +33 -0
  43. data/lib/fog/compute/models/linode/ip.rb +30 -0
  44. data/lib/fog/compute/models/linode/ips.rb +40 -0
  45. data/lib/fog/compute/models/linode/kernel.rb +12 -0
  46. data/lib/fog/compute/models/linode/kernels.rb +32 -0
  47. data/lib/fog/compute/models/linode/server.rb +88 -0
  48. data/lib/fog/compute/models/linode/servers.rb +32 -0
  49. data/lib/fog/compute/models/linode/stack_script.rb +13 -0
  50. data/lib/fog/compute/models/linode/stack_scripts.rb +32 -0
  51. data/lib/fog/compute/models/rackspace/server.rb +2 -2
  52. data/lib/fog/compute/models/slicehost/server.rb +2 -2
  53. data/lib/fog/compute/models/voxel/server.rb +3 -3
  54. data/lib/fog/compute/new_servers.rb +8 -2
  55. data/lib/fog/compute/rackspace.rb +8 -2
  56. data/lib/fog/compute/requests/aws/allocate_address.rb +4 -2
  57. data/lib/fog/compute/requests/aws/associate_address.rb +4 -2
  58. data/lib/fog/compute/requests/aws/attach_volume.rb +4 -2
  59. data/lib/fog/compute/requests/aws/authorize_security_group_ingress.rb +5 -3
  60. data/lib/fog/compute/requests/aws/create_image.rb +2 -1
  61. data/lib/fog/compute/requests/aws/create_key_pair.rb +4 -2
  62. data/lib/fog/compute/requests/aws/create_security_group.rb +5 -3
  63. data/lib/fog/compute/requests/aws/create_snapshot.rb +6 -4
  64. data/lib/fog/compute/requests/aws/create_tags.rb +7 -5
  65. data/lib/fog/compute/requests/aws/create_volume.rb +4 -2
  66. data/lib/fog/compute/requests/aws/delete_key_pair.rb +3 -1
  67. data/lib/fog/compute/requests/aws/delete_security_group.rb +4 -2
  68. data/lib/fog/compute/requests/aws/delete_snapshot.rb +3 -1
  69. data/lib/fog/compute/requests/aws/delete_tags.rb +5 -3
  70. data/lib/fog/compute/requests/aws/delete_volume.rb +4 -2
  71. data/lib/fog/compute/requests/aws/deregister_image.rb +2 -0
  72. data/lib/fog/compute/requests/aws/describe_addresses.rb +3 -1
  73. data/lib/fog/compute/requests/aws/describe_availability_zones.rb +2 -0
  74. data/lib/fog/compute/requests/aws/describe_images.rb +3 -1
  75. data/lib/fog/compute/requests/aws/describe_instances.rb +12 -10
  76. data/lib/fog/compute/requests/aws/describe_key_pairs.rb +3 -1
  77. data/lib/fog/compute/requests/aws/describe_regions.rb +2 -0
  78. data/lib/fog/compute/requests/aws/describe_reserved_instances.rb +2 -0
  79. data/lib/fog/compute/requests/aws/describe_reserved_instances_offerings.rb +2 -0
  80. data/lib/fog/compute/requests/aws/describe_security_groups.rb +3 -1
  81. data/lib/fog/compute/requests/aws/describe_snapshots.rb +5 -3
  82. data/lib/fog/compute/requests/aws/describe_tags.rb +2 -0
  83. data/lib/fog/compute/requests/aws/describe_volumes.rb +9 -7
  84. data/lib/fog/compute/requests/aws/detach_volume.rb +3 -1
  85. data/lib/fog/compute/requests/aws/disassociate_address.rb +4 -2
  86. data/lib/fog/compute/requests/aws/get_console_output.rb +3 -1
  87. data/lib/fog/compute/requests/aws/get_password_data.rb +15 -1
  88. data/lib/fog/compute/requests/aws/import_key_pair.rb +4 -2
  89. data/lib/fog/compute/requests/aws/modify_image_attributes.rb +4 -0
  90. data/lib/fog/compute/requests/aws/modify_snapshot_attribute.rb +4 -0
  91. data/lib/fog/compute/requests/aws/monitor_instances.rb +3 -1
  92. data/lib/fog/compute/requests/aws/reboot_instances.rb +4 -2
  93. data/lib/fog/compute/requests/aws/register_image.rb +4 -0
  94. data/lib/fog/compute/requests/aws/release_address.rb +3 -1
  95. data/lib/fog/compute/requests/aws/revoke_security_group_ingress.rb +3 -1
  96. data/lib/fog/compute/requests/aws/run_instances.rb +12 -6
  97. data/lib/fog/compute/requests/aws/start_instances.rb +2 -0
  98. data/lib/fog/compute/requests/aws/stop_instances.rb +2 -0
  99. data/lib/fog/compute/requests/aws/terminate_instances.rb +5 -3
  100. data/lib/fog/compute/requests/aws/unmonitor_instances.rb +3 -1
  101. data/lib/fog/compute/requests/go_grid/grid_image_get.rb +1 -1
  102. data/lib/fog/compute/requests/go_grid/grid_image_list.rb +1 -1
  103. data/lib/fog/compute/requests/linode/avail_datacenters.rb +1 -2
  104. data/lib/fog/compute/requests/linode/avail_distributions.rb +1 -2
  105. data/lib/fog/compute/requests/linode/avail_kernels.rb +6 -5
  106. data/lib/fog/compute/requests/linode/avail_linodeplans.rb +9 -3
  107. data/lib/fog/compute/requests/linode/avail_stackscripts.rb +3 -15
  108. data/lib/fog/compute/requests/linode/linode_boot.rb +15 -0
  109. data/lib/fog/compute/requests/linode/linode_config_create.rb +21 -0
  110. data/lib/fog/compute/requests/linode/linode_config_list.rb +18 -0
  111. data/lib/fog/compute/requests/linode/linode_create.rb +3 -4
  112. data/lib/fog/compute/requests/linode/linode_delete.rb +0 -1
  113. data/lib/fog/compute/requests/linode/linode_disk_create.rb +21 -0
  114. data/lib/fog/compute/requests/linode/linode_disk_createfromdistribution.rb +22 -0
  115. data/lib/fog/compute/requests/linode/linode_disk_createfromstackscript.rb +24 -0
  116. data/lib/fog/compute/requests/linode/linode_disk_delete.rb +19 -0
  117. data/lib/fog/compute/requests/linode/linode_disk_list.rb +19 -0
  118. data/lib/fog/compute/requests/linode/linode_ip_addprivate.rb +15 -0
  119. data/lib/fog/compute/requests/linode/linode_ip_list.rb +19 -0
  120. data/lib/fog/compute/requests/linode/linode_list.rb +0 -1
  121. data/lib/fog/compute/requests/linode/linode_reboot.rb +1 -2
  122. data/lib/fog/compute/requests/linode/linode_shutdown.rb +15 -0
  123. data/lib/fog/compute/requests/linode/linode_update.rb +15 -0
  124. data/lib/fog/compute/requests/linode/stackscript_list.rb +31 -0
  125. data/lib/fog/compute/requests/rackspace/confirm_resized_server.rb +3 -3
  126. data/lib/fog/compute/requests/rackspace/create_image.rb +2 -2
  127. data/lib/fog/compute/requests/rackspace/create_server.rb +2 -2
  128. data/lib/fog/compute/requests/rackspace/delete_image.rb +2 -2
  129. data/lib/fog/compute/requests/rackspace/delete_server.rb +2 -2
  130. data/lib/fog/compute/requests/rackspace/list_images_detail.rb +2 -2
  131. data/lib/fog/compute/requests/rackspace/list_servers_detail.rb +2 -2
  132. data/lib/fog/compute/requests/rackspace/resize_server.rb +4 -4
  133. data/lib/fog/compute/requests/rackspace/revert_resized_server.rb +4 -4
  134. data/lib/fog/compute/slicehost.rb +8 -2
  135. data/lib/fog/compute/storm_on_demand.rb +12 -1
  136. data/lib/fog/compute/voxel.rb +8 -2
  137. data/lib/fog/core/mock.rb +14 -1
  138. data/lib/fog/dns/aws.rb +8 -2
  139. data/lib/fog/dns/bluebox.rb +8 -2
  140. data/lib/fog/dns/dnsimple.rb +15 -3
  141. data/lib/fog/dns/linode.rb +8 -2
  142. data/lib/fog/dns/slicehost.rb +8 -2
  143. data/lib/fog/dns/zerigo.rb +8 -2
  144. data/lib/fog/providers/aws.rb +5 -10
  145. data/lib/fog/providers/linode.rb +0 -3
  146. data/lib/fog/storage.rb +6 -4
  147. data/lib/fog/storage/aws.rb +8 -2
  148. data/lib/fog/storage/google.rb +8 -2
  149. data/lib/fog/storage/local.rb +8 -2
  150. data/lib/fog/storage/models/aws/file.rb +0 -1
  151. data/lib/fog/storage/models/google/file.rb +1 -5
  152. data/lib/fog/storage/models/local/file.rb +1 -1
  153. data/lib/fog/storage/models/rackspace/file.rb +1 -5
  154. data/lib/fog/storage/rackspace.rb +8 -2
  155. data/lib/fog/storage/requests/aws/copy_object.rb +2 -2
  156. data/lib/fog/storage/requests/aws/delete_bucket.rb +3 -3
  157. data/lib/fog/storage/requests/aws/delete_object.rb +1 -1
  158. data/lib/fog/storage/requests/aws/get_bucket.rb +1 -1
  159. data/lib/fog/storage/requests/aws/get_bucket_acl.rb +1 -1
  160. data/lib/fog/storage/requests/aws/get_bucket_location.rb +1 -1
  161. data/lib/fog/storage/requests/aws/get_object.rb +1 -1
  162. data/lib/fog/storage/requests/aws/get_object_acl.rb +1 -1
  163. data/lib/fog/storage/requests/aws/get_request_payment.rb +1 -1
  164. data/lib/fog/storage/requests/aws/get_service.rb +1 -1
  165. data/lib/fog/storage/requests/aws/put_bucket.rb +3 -3
  166. data/lib/fog/storage/requests/aws/put_object.rb +3 -3
  167. data/lib/fog/storage/requests/aws/put_request_payment.rb +1 -1
  168. data/lib/fog/storage/requests/google/copy_object.rb +2 -2
  169. data/lib/fog/storage/requests/google/delete_bucket.rb +3 -3
  170. data/lib/fog/storage/requests/google/delete_object.rb +1 -1
  171. data/lib/fog/storage/requests/google/get_bucket.rb +1 -1
  172. data/lib/fog/storage/requests/google/get_bucket_acl.rb +1 -1
  173. data/lib/fog/storage/requests/google/get_object.rb +1 -1
  174. data/lib/fog/storage/requests/google/get_object_acl.rb +1 -1
  175. data/lib/fog/storage/requests/google/get_service.rb +2 -2
  176. data/lib/fog/storage/requests/google/put_bucket.rb +3 -3
  177. data/lib/fog/storage/requests/google/put_object.rb +3 -3
  178. data/lib/fog/terremark/requests/shared/get_network.rb +1 -1
  179. data/lib/fog/terremark/requests/shared/get_organization.rb +1 -1
  180. data/lib/fog/terremark/requests/shared/get_organizations.rb +1 -1
  181. data/lib/fog/terremark/requests/shared/get_public_ips.rb +1 -1
  182. data/lib/fog/terremark/requests/shared/get_vdc.rb +1 -1
  183. data/lib/fog/terremark/shared.rb +4 -0
  184. data/lib/fog/terremark/vcloud.rb +11 -1
  185. data/spec/ecloud/bin_spec.rb +8 -2
  186. data/spec/ecloud/spec_helper.rb +3 -3
  187. data/tests/compute/helper.rb +1 -3
  188. data/tests/compute/models/aws/server_tests.rb +3 -2
  189. data/tests/compute/requests/aws/instance_tests.rb +12 -9
  190. data/tests/compute/requests/aws/key_pair_tests.rb +1 -1
  191. data/tests/compute/requests/aws/volume_tests.rb +2 -2
  192. data/tests/compute/requests/brightbox/helper.rb +3 -0
  193. data/tests/compute/requests/linode/kernel_tests.rb +27 -0
  194. data/tests/compute/requests/linode/linode_tests.rb +62 -4
  195. data/tests/compute/requests/linode/stackscripts_tests.rb +35 -0
  196. data/tests/compute/requests/rackspace/resize_tests.rb +2 -2
  197. data/tests/compute/requests/voxel/server_tests.rb +1 -0
  198. data/tests/core/credential_tests.rb +7 -2
  199. data/tests/core/parser_tests.rb +1 -1
  200. data/tests/helper.rb +1 -1
  201. data/tests/helpers/compute/server_helper.rb +6 -0
  202. data/tests/helpers/formats_helper.rb +2 -0
  203. data/tests/helpers/mock_helper.rb +8 -1
  204. data/tests/helpers/model_helper.rb +1 -3
  205. data/tests/helpers/responds_to_helper.rb +2 -2
  206. data/tests/storage/helper.rb +1 -1
  207. data/tests/storage/models/directories_tests.rb +8 -4
  208. data/tests/storage/models/directory_test.rb +15 -11
  209. data/tests/storage/models/file_tests.rb +6 -6
  210. data/tests/storage/models/files_tests.rb +5 -5
  211. metadata +105 -55
@@ -253,7 +253,7 @@ end
253
253
 
254
254
  Spec::Runner.configure do |config|
255
255
  config.after(:all) do
256
- Fog::Ecloud::Compute::Mock.data_reset
256
+ Fog::Ecloud::Compute::Mock.reset
257
257
  end
258
258
 
259
259
  config.before(:each, :type => :vcloud_request) do
@@ -261,12 +261,12 @@ Spec::Runner.configure do |config|
261
261
  end
262
262
 
263
263
  config.before(:each, :type => :mock_tmrk_ecloud_request) do
264
- Fog::Ecloud::Compute::Mock.data_reset
264
+ Fog::Ecloud::Compute::Mock.reset
265
265
  setup_ecloud_mock_data
266
266
  @vcloud = Fog::Ecloud::Compute.new(:ecloud_username => "foo", :ecloud_password => "bar", :ecloud_versions_uri => "http://fakey.com/api/versions")
267
267
  end
268
268
  config.before(:each, :type => :mock_tmrk_ecloud_model) do
269
- Fog::Ecloud::Compute::Mock.data_reset
269
+ Fog::Ecloud::Compute::Mock.reset
270
270
  setup_ecloud_mock_data
271
271
  @vcloud = Fog::Ecloud::Compute.new(:ecloud_username => "foo", :ecloud_password => "bar", :ecloud_versions_uri => "http://fakey.com/api/versions")
272
272
  end
@@ -1,9 +1,7 @@
1
1
  def compute_providers
2
2
  {
3
3
  AWS => {
4
- :server_attributes => {
5
- :image_id => 'ami-1a837773' # image ami-1a837773 = Ubuntu
6
- },
4
+ :server_attributes => {},
7
5
  :mocked => true
8
6
  },
9
7
  Bluebox => {
@@ -1,10 +1,11 @@
1
1
  Shindo.tests("AWS::Compute | monitor", ['aws']) do
2
2
 
3
- [:addresses, :flavor, :key_pair, :key_pair=, :volume].each do |association|
3
+ @instance = AWS[:compute].servers.new
4
+
5
+ [:addresses, :flavor, :key_pair, :key_pair=, :volumes].each do |association|
4
6
  responds_to(association)
5
7
  end
6
8
 
7
- @instance = AWS[:compute].servers.new
8
9
 
9
10
  tests('new instance') do
10
11
 
@@ -4,7 +4,7 @@ Shindo.tests('AWS::Compute | instance requests', ['aws']) do
4
4
  # 'architecture' => String,
5
5
  'amiLaunchIndex' => Integer,
6
6
  'blockDeviceMapping' => [],
7
- 'clientToken' => NilClass,
7
+ 'clientToken' => Fog::Nullable::String,
8
8
  'dnsName' => NilClass,
9
9
  'imageId' => String,
10
10
  'instanceId' => String,
@@ -60,7 +60,7 @@ Shindo.tests('AWS::Compute | instance requests', ['aws']) do
60
60
 
61
61
  @get_password_data_format = {
62
62
  'instanceId' => String,
63
- 'passwordData' => String,
63
+ 'passwordData' => Fog::Nullable::String,
64
64
  'requestId' => String,
65
65
  'timestamp' => Time
66
66
  }
@@ -119,15 +119,18 @@ Shindo.tests('AWS::Compute | instance requests', ['aws']) do
119
119
  end
120
120
 
121
121
  tests("#get_password_data('#{@instance_id}')").formats(@get_password_data_format) do
122
- pending if Fog.mock?
123
- result = nil
124
- Fog.wait_for do
125
- result = AWS[:compute].get_password_data(@instance_id).body
126
- !result['passwordData'].nil?
127
- end
122
+ result = AWS[:compute].get_password_data(@instance_id).body
128
123
 
129
124
  tests("key can decrypt passwordData").returns(true) do
130
- decoded_password = Base64.decode64(result['passwordData'])
125
+
126
+ pending if Fog.mocking?
127
+
128
+ password_data = result['passwordData']
129
+ Fog.wait_for do
130
+ password_data ||= AWS[:compute].get_password_data(@instance_id).body['passwordData']
131
+ end
132
+
133
+ decoded_password = Base64.decode64(password_data)
131
134
  pkey = OpenSSL::PKey::RSA.new(key.private_key)
132
135
  String === pkey.private_decrypt(decoded_password)
133
136
  end
@@ -21,7 +21,7 @@ Shindo.tests('AWS::Compute | key pair requests', ['aws']) do
21
21
 
22
22
  tests("#create_key_pair('#{@key_pair_name}')").formats(@keypair_format.merge({'keyMaterial' => String})) do
23
23
  body = AWS[:compute].create_key_pair(@key_pair_name).body
24
- tests("private key is valid RSA key").returns(OpenSSL::PKey::RSA) do
24
+ tests("key material").returns(OpenSSL::PKey::RSA, "is a valid private RSA key") do
25
25
  OpenSSL::PKey::RSA.new(body['keyMaterial']).class
26
26
  end
27
27
  body
@@ -22,12 +22,12 @@ Shindo.tests('AWS::Compute | volume requests', ['aws']) do
22
22
  @volumes_format = {
23
23
  'volumeSet' => [{
24
24
  'availabilityZone' => String,
25
- 'attachmentSet' => [],
25
+ 'attachmentSet' => Array,
26
26
  'createTime' => Time,
27
27
  'size' => Integer,
28
28
  'snapshotId' => Fog::Nullable::String,
29
29
  'status' => String,
30
- 'tagSet' => {},
30
+ 'tagSet' => Hash,
31
31
  'volumeId' => String
32
32
  }],
33
33
  'requestId' => String
@@ -270,6 +270,9 @@ class Brightbox
270
270
  "library_ftp_host" => String,
271
271
  "library_ftp_user" => String,
272
272
  "library_ftp_password" => Fog::Nullable::String,
273
+ "verified_telephone" => Fog::Nullable::Boolean,
274
+ "verified_at" => Fog::Nullable::Time,
275
+ "verified_ip" => Fog::Nullable::String,
273
276
  "owner" => Brightbox::Compute::Formats::Nested::USER,
274
277
  "users" => [Brightbox::Compute::Formats::Nested::USER],
275
278
  "clients" => [Brightbox::Compute::Formats::Nested::API_CLIENT],
@@ -0,0 +1,27 @@
1
+ Shindo.tests('Linode::Compute | kernel requests', ['linode']) do
2
+
3
+ @kernels_format = Linode::Compute::Formats::BASIC.merge({
4
+ 'DATA' => [{
5
+ 'LABEL' => String,
6
+ 'ISXEN' => Integer,
7
+ 'ISPVOPS' => Integer,
8
+ 'KERNELID' => Integer
9
+ }]
10
+ })
11
+
12
+ tests('success') do
13
+ @kernel_id = nil
14
+
15
+ tests('#avail_kernels').formats(@kernels_format) do
16
+ pending if Fog.mocking?
17
+ data = Linode[:compute].avail_kernels.body
18
+ @kernel_id = data['DATA'].first['KERNELID']
19
+ data
20
+ end
21
+
22
+ tests("@avail_kernels(#{@kernel_id})").formats(@kernels_format) do
23
+ pending if Fog.mocking?
24
+ Linode[:compute].avail_kernels(@kernel_id).body
25
+ end
26
+ end
27
+ end
@@ -35,6 +35,28 @@ Shindo.tests('Linode::Compute | linode requests', ['linode']) do
35
35
  'DATA' => { 'JobID' => Integer }
36
36
  })
37
37
 
38
+ @ip_format = Linode::Compute::Formats::BASIC.merge({
39
+ 'DATA' => { 'IPAddressID' => Integer }
40
+ })
41
+
42
+ @disks_format = Linode::Compute::Formats::BASIC.merge({
43
+ 'DATA' => [{
44
+ "UPDATE_DT" => String,
45
+ "DISKID" => Integer,
46
+ "LABEL" => String,
47
+ "TYPE" => String,
48
+ "LINODEID" => Integer,
49
+ "ISREADONLY" => Integer,
50
+ "STATUS" => Integer,
51
+ "CREATE_DT" => String,
52
+ "SIZE" => Integer
53
+ }]
54
+ })
55
+
56
+ @disk_format = Linode::Compute::Formats::BASIC.merge({
57
+ 'DATA' => { 'JobID' => Integer, 'DiskID' => Integer }
58
+ })
59
+
38
60
  tests('success') do
39
61
 
40
62
  @linode_id = nil
@@ -53,16 +75,52 @@ Shindo.tests('Linode::Compute | linode requests', ['linode']) do
53
75
  end
54
76
 
55
77
  tests('#linode_list').formats(@linodes_format) do
56
- pending if Fog.mocking?
78
+ pending if Fog.mocking?
57
79
  Linode[:compute].linode_list.body
58
80
  end
59
81
 
82
+ tests('#linode_update').formats(@linode_format) do
83
+ pending if Fog.mocking?
84
+ Linode[:compute].linode_update(@linode_id, :label => 'testing').body
85
+ end
86
+
87
+ tests('#linode_ip_addprivate').formats(@ip_format) do
88
+ pending if Fog.mocking?
89
+ Linode[:compute].linode_ip_addprivate(@linode_id).body
90
+ end
91
+
92
+ tests('#linode_disk_create').formats(@disk_format) do
93
+ pending if Fog.mocking?
94
+ data = Linode[:compute].linode_disk_create(@linode_id, 'test1', 'ext3', 1).body
95
+ @disk1_id = data['DATA']['DiskID']
96
+ data
97
+ end
98
+
99
+ tests('#linode_disk_createfromdistribution').formats(@disk_format) do
100
+ pending if Fog.mocking?
101
+ data = Linode[:compute].linode_disk_createfromdistribution(@linode_id, 73, 'test1', 600, 'P@SSW)RD').body
102
+ @disk2_id = data['DATA']['DiskID']
103
+ data
104
+ end
105
+
106
+ tests('#linode_disk_list').formats(@disks_format) do
107
+ pending if Fog.mocking?
108
+ Linode[:compute].linode_disk_list(@linode_id).body
109
+ end
110
+
60
111
  # tests("#linode_reboot(#{@linode_id})").formats(@reboot_format) do
61
112
  # Linode[:compute].linode_reboot(@linode_id).body
62
- # end
113
+ # end
114
+
115
+ tests('#linode_disk_delete').formats(@disk_format) do
116
+ pending if Fog.mocking?
117
+ Linode[:compute].linode_disk_delete(@linode_id, @disk1_id).body
118
+ Linode[:compute].linode_disk_delete(@linode_id, @disk2_id).body
119
+ end
63
120
 
64
121
  tests('#linode_delete(#{@linode_id})').succeeds do
65
122
  pending if Fog.mocking?
123
+ sleep 1 until Linode[:compute].linode_disk_list(@linode_id).body['DATA'].size == 0
66
124
  Linode[:compute].linode_delete(@linode_id)
67
125
  end
68
126
 
@@ -72,12 +130,12 @@ Shindo.tests('Linode::Compute | linode requests', ['linode']) do
72
130
 
73
131
  tests('#linode_reboot(0)').raises(Fog::Linode::Compute::NotFound) do
74
132
  pending if Fog.mocking?
75
- Linode[:compute].linode_reboot(0)
133
+ Linode[:compute].linode_reboot(1)
76
134
  end
77
135
 
78
136
  tests('#linode_delete(0)').raises(Fog::Linode::Compute::NotFound) do
79
137
  pending if Fog.mocking?
80
- Linode[:compute].linode_delete(0)
138
+ Linode[:compute].linode_delete(1)
81
139
  end
82
140
 
83
141
  end
@@ -0,0 +1,35 @@
1
+ Shindo.tests('Linode::Compute | stack_script requests', ['linode']) do
2
+
3
+ @stack_scripts_format = Linode::Compute::Formats::BASIC.merge({
4
+ 'DATA' => [{
5
+ 'STACKSCRIPTID' => Integer,
6
+ 'SCRIPT' => String,
7
+ 'DESCRIPTION' => String,
8
+ 'DISTRIBUTIONIDLIST' => String,
9
+ 'LABEL' => String,
10
+ 'DEPLOYMENTSTOTAL' => Integer,
11
+ 'LATESTREV' => Integer,
12
+ 'CREATE_DT' => String,
13
+ 'DEPLOYMENTSACTIVE' => Integer,
14
+ 'REV_NOTE' => String,
15
+ 'REV_DT' => String,
16
+ 'ISPUBLIC' => Integer,
17
+ 'USERID' => Integer
18
+ }]
19
+ })
20
+
21
+ tests('success') do
22
+
23
+ tests('#avail_stackscripts').formats(@stack_scripts_format) do
24
+ pending if Fog.mocking?
25
+ Linode[:compute].avail_stackscripts.body
26
+ end
27
+
28
+ tests('#stackscript_list').formats(@stack_scripts_format) do
29
+ pending if Fog.mocking?
30
+ Linode[:compute].stackscript_list.body
31
+ end
32
+
33
+ end
34
+
35
+ end
@@ -14,12 +14,12 @@ Shindo.tests('Rackspace::Compute | resize request', ['rackspace']) do
14
14
  Rackspace[:compute].resize_server(@revert_server.id, 2)
15
15
  end
16
16
 
17
- @confirm_server.wait_for { status == 'VERIFY_RESIZE' }
17
+ @confirm_server.wait_for { state == 'VERIFY_RESIZE' }
18
18
  tests("#confirm_resized_server(#{@confirm_server.id})").succeeds do
19
19
  Rackspace[:compute].confirm_resized_server(@confirm_server.id)
20
20
  end
21
21
 
22
- @revert_server.wait_for { status == 'VERIFY_RESIZE' }
22
+ @revert_server.wait_for { state == 'VERIFY_RESIZE' }
23
23
  tests("#revert_resized_server(#{@revert_server.id})").succeeds do
24
24
  Rackspace[:compute].revert_resized_server(@revert_server.id)
25
25
  end
@@ -34,6 +34,7 @@ Shindo.tests('Voxel::Compute | server requests', ['voxel']) do
34
34
  'id' => String,
35
35
  'value' => String
36
36
  },
37
+ 'position' => Fog::Nullable::Integer,
37
38
  'rack' => {
38
39
  'id' => String,
39
40
  'value' => String
@@ -21,12 +21,17 @@ Shindo.tests do
21
21
  Fog.credentials_path
22
22
  }
23
23
 
24
- returns('/home/me/.fog', 'falls back to home path if FOG_RC not set') {
25
- ENV['HOME'] = '/home/me'
24
+ returns(File.join(ENV['HOME'], '.fog'), 'falls back to home path if FOG_RC not set') {
26
25
  ENV.delete('FOG_RC')
27
26
  Fog.credentials_path
28
27
  }
29
28
 
29
+ returns(nil, 'ignores home path if it does not exist') {
30
+ ENV.delete('FOG_RC')
31
+ ENV['HOME'] = '/no/such/path'
32
+ Fog.credentials_path
33
+ }
34
+
30
35
  returns(nil, 'returns nil when neither FOG_RC or HOME are set') {
31
36
  ENV.delete('HOME')
32
37
  ENV.delete('FOG_RC')
@@ -59,7 +59,7 @@ posuere eu odio. Donec sodales, ante porta condimentum
59
59
  }
60
60
 
61
61
 
62
- tests('TestParser').returns(@response) do
62
+ tests('TestParser').returns(@response, "returns the response") do
63
63
  test_parser = TestParser.new
64
64
  Nokogiri::XML::SAX::Parser.new(test_parser).parse(@xml)
65
65
  test_parser.response
@@ -9,7 +9,7 @@ end
9
9
 
10
10
  # check to see which credentials are available and add others to the skipped tags list
11
11
  all_providers = ['aws', 'bluebox', 'brightbox', 'dnsimple', 'ecloud', 'gogrid', 'google', 'linode', 'local', 'newservers', 'rackspace', 'slicehost', 'stormondemand', 'voxel', 'zerigo']
12
- available_providers = Fog.providers.map {|provider| provider.downcase}
12
+ available_providers = Fog.available_providers.map {|provider| provider.downcase}
13
13
  for provider in (all_providers - available_providers)
14
14
  Formatador.display_line("[yellow]Skipping tests for [bold]#{provider}[/] [yellow]due to lacking credentials (add some to '~/.fog' to run them)[/]")
15
15
  Thread.current[:tags] << ('-' << provider)
@@ -2,6 +2,12 @@ def server_tests(connection, params = {}, mocks_implemented = true)
2
2
 
3
3
  model_tests(connection.servers, params, mocks_implemented) do
4
4
 
5
+ tests('#reload').returns(true) do
6
+ pending if Fog.mocking? && !mocks_implemented
7
+ identity = @instance.identity
8
+ !identity.nil? && identity == @instance.reload.identity
9
+ end
10
+
5
11
  responds_to([:ready?, :state])
6
12
 
7
13
  tests('#reboot').succeeds do
@@ -4,12 +4,14 @@
4
4
  module Fog
5
5
  module Boolean; end
6
6
  module Nullable
7
+ module Boolean; end
7
8
  module Integer; end
8
9
  module String; end
9
10
  module Time; end
10
11
  end
11
12
  end
12
13
  [FalseClass, TrueClass].each {|klass| klass.send(:include, Fog::Boolean)}
14
+ [NilClass, Fog::Boolean].each {|klass| klass.send(:include, Fog::Nullable::Boolean)}
13
15
  [NilClass, String].each {|klass| klass.send(:include, Fog::Nullable::String)}
14
16
  [NilClass, Time].each {|klass| klass.send(:include, Fog::Nullable::Time)}
15
17
  [Integer, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Integer)}
@@ -15,12 +15,17 @@ if Fog.mock?
15
15
  :bluebox_customer_id => 'bluebox_customer_id',
16
16
  :brightbox_client_id => 'brightbox_client_id',
17
17
  :brightbox_secret => 'brightbox_secret',
18
+ :dnsimple_email => 'dnsimple_email',
19
+ :dnsimple_password => 'dnsimple_password',
20
+ :ecloud_username => 'ecloud_username',
21
+ :ecloud_password => 'ecloud_password',
22
+ :ecloud_versions_uri => 'http://ecloud.versions.uri',
18
23
  :go_grid_api_key => 'go_grid_api_key',
19
24
  :go_grid_shared_secret => 'go_grid_shared_secret',
20
25
  :google_storage_access_key_id => 'google_storage_access_key_id',
21
26
  :google_storage_secret_access_key => 'google_storage_secret_access_key',
22
27
  :linode_api_key => 'linode_api_key',
23
- # :local_root => '~/.fog'
28
+ :local_root => '~/.fog',
24
29
  :new_servers_password => 'new_servers_password',
25
30
  :new_servers_username => 'new_servers_username',
26
31
  # :public_key_path => '~/.ssh/id_rsa.pub',
@@ -28,6 +33,8 @@ if Fog.mock?
28
33
  :rackspace_api_key => 'rackspace_api_key',
29
34
  :rackspace_username => 'rackspace_username',
30
35
  :slicehost_password => 'slicehost_password',
36
+ :storm_on_demand_username => 'storm_on_demand_username',
37
+ :storm_on_demand_password => 'storm_on_demand_password',
31
38
  :voxel_api_key => 'voxel_api_key',
32
39
  :voxel_api_secret => 'voxel_api_secret',
33
40
  :zerigo_email => 'zerigo_email',
@@ -2,9 +2,7 @@ def model_tests(collection, params = {}, mocks_implemented = true)
2
2
 
3
3
  tests('success') do
4
4
 
5
- if !Fog.mocking? || mocks_implemented
6
- @instance = collection.new(params)
7
- end
5
+ @instance = collection.new(params)
8
6
 
9
7
  tests("#save").succeeds do
10
8
  pending if Fog.mocking? && !mocks_implemented
@@ -3,11 +3,11 @@ module Shindo
3
3
 
4
4
  def responds_to(method_names)
5
5
  for method_name in [*method_names]
6
- tests("#respond_to?(:#{method_name})").succeeds do
6
+ tests("#respond_to?(:#{method_name})").returns(true) do
7
7
  @instance.respond_to?(method_name)
8
8
  end
9
9
  end
10
10
  end
11
11
 
12
12
  end
13
- end
13
+ end
@@ -7,7 +7,7 @@ def storage_providers
7
7
  :mocked => true
8
8
  },
9
9
  Local => {
10
- :mocked => true
10
+ :mocked => false
11
11
  },
12
12
  Rackspace => {
13
13
  :mocked => false