fog 1.7.0 → 1.8.0

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 (219) hide show
  1. data/.gitignore +2 -2
  2. data/README.md +9 -10
  3. data/Rakefile +15 -299
  4. data/changelog.txt +153 -0
  5. data/docs/about/contributing.markdown +1 -0
  6. data/docs/dns/index.markdown +1 -1
  7. data/docs/index.markdown +8 -3
  8. data/fog.gemspec +3 -3
  9. data/lib/fog.rb +0 -5
  10. data/lib/fog/aws/auto_scaling.rb +1 -1
  11. data/lib/fog/aws/cloud_watch.rb +1 -1
  12. data/lib/fog/aws/compute.rb +2 -1
  13. data/lib/fog/aws/dynamodb.rb +30 -64
  14. data/lib/fog/aws/elb.rb +1 -1
  15. data/lib/fog/aws/glacier.rb +1 -1
  16. data/lib/fog/aws/iam.rb +1 -0
  17. data/lib/fog/aws/models/auto_scaling/group.rb +1 -1
  18. data/lib/fog/aws/models/compute/server.rb +2 -0
  19. data/lib/fog/aws/models/compute/volume.rb +0 -1
  20. data/lib/fog/aws/models/iam/user.rb +1 -1
  21. data/lib/fog/aws/parsers/compute/describe_instances.rb +3 -1
  22. data/lib/fog/aws/parsers/compute/describe_reserved_instances_offerings.rb +1 -1
  23. data/lib/fog/aws/parsers/storage/delete_multiple_objects.rb +50 -0
  24. data/lib/fog/aws/rds.rb +2 -2
  25. data/lib/fog/aws/requests/compute/describe_availability_zones.rb +3 -0
  26. data/lib/fog/aws/requests/compute/describe_reserved_instances_offerings.rb +11 -8
  27. data/lib/fog/aws/requests/compute/modify_volume_attribute.rb +51 -0
  28. data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +1 -0
  29. data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +172 -0
  30. data/lib/fog/aws/signaturev4.rb +1 -1
  31. data/lib/fog/aws/sqs.rb +1 -1
  32. data/lib/fog/aws/storage.rb +2 -0
  33. data/lib/fog/bluebox/requests/compute/create_block.rb +1 -3
  34. data/lib/fog/brightbox/compute.rb +239 -84
  35. data/lib/fog/brightbox/models/compute/account.rb +9 -3
  36. data/lib/fog/brightbox/models/compute/server.rb +2 -1
  37. data/lib/fog/brightbox/models/compute/servers.rb +33 -1
  38. data/lib/fog/brightbox/oauth2.rb +164 -0
  39. data/lib/fog/brightbox/requests/compute/activate_console_server.rb +9 -2
  40. data/lib/fog/brightbox/requests/compute/add_listeners_load_balancer.rb +11 -2
  41. data/lib/fog/brightbox/requests/compute/add_nodes_load_balancer.rb +11 -2
  42. data/lib/fog/brightbox/requests/compute/add_servers_server_group.rb +9 -11
  43. data/lib/fog/brightbox/requests/compute/apply_to_firewall_policy.rb +11 -2
  44. data/lib/fog/brightbox/requests/compute/create_api_client.rb +11 -2
  45. data/lib/fog/brightbox/requests/compute/create_application.rb +11 -2
  46. data/lib/fog/brightbox/requests/compute/create_cloud_ip.rb +11 -1
  47. data/lib/fog/brightbox/requests/compute/create_firewall_policy.rb +13 -2
  48. data/lib/fog/brightbox/requests/compute/create_firewall_rule.rb +17 -2
  49. data/lib/fog/brightbox/requests/compute/create_image.rb +18 -2
  50. data/lib/fog/brightbox/requests/compute/create_load_balancer.rb +14 -2
  51. data/lib/fog/brightbox/requests/compute/create_server.rb +17 -2
  52. data/lib/fog/brightbox/requests/compute/create_server_group.rb +11 -2
  53. data/lib/fog/brightbox/requests/compute/destroy_api_client.rb +9 -2
  54. data/lib/fog/brightbox/requests/compute/destroy_application.rb +9 -2
  55. data/lib/fog/brightbox/requests/compute/destroy_cloud_ip.rb +9 -2
  56. data/lib/fog/brightbox/requests/compute/destroy_firewall_policy.rb +9 -2
  57. data/lib/fog/brightbox/requests/compute/destroy_firewall_rule.rb +9 -2
  58. data/lib/fog/brightbox/requests/compute/destroy_image.rb +9 -2
  59. data/lib/fog/brightbox/requests/compute/destroy_load_balancer.rb +9 -2
  60. data/lib/fog/brightbox/requests/compute/destroy_server.rb +9 -2
  61. data/lib/fog/brightbox/requests/compute/destroy_server_group.rb +9 -2
  62. data/lib/fog/brightbox/requests/compute/get_account.rb +7 -15
  63. data/lib/fog/brightbox/requests/compute/get_api_client.rb +9 -2
  64. data/lib/fog/brightbox/requests/compute/get_application.rb +9 -2
  65. data/lib/fog/brightbox/requests/compute/get_authenticated_user.rb +1 -3
  66. data/lib/fog/brightbox/requests/compute/get_cloud_ip.rb +9 -2
  67. data/lib/fog/brightbox/requests/compute/get_firewall_policy.rb +9 -2
  68. data/lib/fog/brightbox/requests/compute/get_firewall_rule.rb +9 -2
  69. data/lib/fog/brightbox/requests/compute/get_image.rb +9 -2
  70. data/lib/fog/brightbox/requests/compute/get_interface.rb +9 -2
  71. data/lib/fog/brightbox/requests/compute/get_load_balancer.rb +9 -2
  72. data/lib/fog/brightbox/requests/compute/get_scoped_account.rb +1 -5
  73. data/lib/fog/brightbox/requests/compute/get_server.rb +9 -2
  74. data/lib/fog/brightbox/requests/compute/get_server_group.rb +9 -2
  75. data/lib/fog/brightbox/requests/compute/get_server_type.rb +9 -2
  76. data/lib/fog/brightbox/requests/compute/get_user.rb +7 -15
  77. data/lib/fog/brightbox/requests/compute/get_zone.rb +9 -2
  78. data/lib/fog/brightbox/requests/compute/list_accounts.rb +6 -2
  79. data/lib/fog/brightbox/requests/compute/list_api_clients.rb +8 -2
  80. data/lib/fog/brightbox/requests/compute/list_applications.rb +8 -2
  81. data/lib/fog/brightbox/requests/compute/list_cloud_ips.rb +8 -2
  82. data/lib/fog/brightbox/requests/compute/list_firewall_policies.rb +8 -2
  83. data/lib/fog/brightbox/requests/compute/list_images.rb +8 -2
  84. data/lib/fog/brightbox/requests/compute/list_load_balancers.rb +8 -2
  85. data/lib/fog/brightbox/requests/compute/list_server_groups.rb +8 -2
  86. data/lib/fog/brightbox/requests/compute/list_server_types.rb +8 -2
  87. data/lib/fog/brightbox/requests/compute/list_servers.rb +8 -2
  88. data/lib/fog/brightbox/requests/compute/list_users.rb +8 -2
  89. data/lib/fog/brightbox/requests/compute/list_zones.rb +8 -2
  90. data/lib/fog/brightbox/requests/compute/map_cloud_ip.rb +11 -2
  91. data/lib/fog/brightbox/requests/compute/move_servers_server_group.rb +10 -12
  92. data/lib/fog/brightbox/requests/compute/remove_firewall_policy.rb +11 -2
  93. data/lib/fog/brightbox/requests/compute/remove_listeners_load_balancer.rb +11 -2
  94. data/lib/fog/brightbox/requests/compute/remove_nodes_load_balancer.rb +11 -2
  95. data/lib/fog/brightbox/requests/compute/remove_servers_server_group.rb +9 -10
  96. data/lib/fog/brightbox/requests/compute/reset_ftp_password_account.rb +22 -3
  97. data/lib/fog/brightbox/requests/compute/reset_ftp_password_scoped_account.rb +18 -0
  98. data/lib/fog/brightbox/requests/compute/reset_secret_api_client.rb +13 -1
  99. data/lib/fog/brightbox/requests/compute/reset_secret_application.rb +9 -2
  100. data/lib/fog/brightbox/requests/compute/shutdown_server.rb +9 -2
  101. data/lib/fog/brightbox/requests/compute/snapshot_server.rb +9 -2
  102. data/lib/fog/brightbox/requests/compute/start_server.rb +9 -2
  103. data/lib/fog/brightbox/requests/compute/stop_server.rb +9 -2
  104. data/lib/fog/brightbox/requests/compute/unmap_cloud_ip.rb +9 -2
  105. data/lib/fog/brightbox/requests/compute/update_account.rb +32 -34
  106. data/lib/fog/brightbox/requests/compute/update_api_client.rb +12 -2
  107. data/lib/fog/brightbox/requests/compute/update_application.rb +12 -2
  108. data/lib/fog/brightbox/requests/compute/update_cloud_ip.rb +13 -2
  109. data/lib/fog/brightbox/requests/compute/update_firewall_rule.rb +16 -1
  110. data/lib/fog/brightbox/requests/compute/update_image.rb +17 -2
  111. data/lib/fog/brightbox/requests/compute/update_load_balancer.rb +15 -2
  112. data/lib/fog/brightbox/requests/compute/update_scoped_account.rb +12 -19
  113. data/lib/fog/brightbox/requests/compute/update_server.rb +12 -2
  114. data/lib/fog/brightbox/requests/compute/update_server_group.rb +12 -2
  115. data/lib/fog/brightbox/requests/compute/update_user.rb +15 -2
  116. data/lib/fog/cloudstack/models/compute/server.rb +3 -1
  117. data/lib/fog/core.rb +1 -0
  118. data/lib/fog/core/connection.rb +1 -0
  119. data/lib/fog/google/storage.rb +13 -2
  120. data/lib/fog/libvirt/models/compute/server.rb +1 -0
  121. data/lib/fog/libvirt/requests/compute/list_domains.rb +2 -2
  122. data/lib/fog/openstack.rb +57 -58
  123. data/lib/fog/openstack/compute.rb +15 -14
  124. data/lib/fog/openstack/identity.rb +10 -2
  125. data/lib/fog/openstack/image.rb +1 -1
  126. data/lib/fog/openstack/models/compute/flavor.rb +5 -1
  127. data/lib/fog/openstack/models/compute/security_group.rb +1 -1
  128. data/lib/fog/openstack/models/compute/server.rb +5 -0
  129. data/lib/fog/openstack/models/identity/users.rb +1 -2
  130. data/lib/fog/openstack/requests/compute/create_flavor.rb +4 -1
  131. data/lib/fog/openstack/requests/compute/create_security_group.rb +1 -1
  132. data/lib/fog/openstack/requests/compute/get_limits.rb +93 -0
  133. data/lib/fog/openstack/requests/compute/list_tenants.rb +1 -0
  134. data/lib/fog/openstack/requests/compute/release_address.rb +13 -1
  135. data/lib/fog/openstack/requests/compute/reset_server_state.rb +24 -0
  136. data/lib/fog/openstack/requests/identity/create_role.rb +1 -1
  137. data/lib/fog/openstack/requests/identity/set_tenant.rb +21 -0
  138. data/lib/fog/openstack/volume.rb +2 -1
  139. data/lib/fog/rackspace/models/compute_v2/server.rb +27 -0
  140. data/lib/fog/rackspace/models/compute_v2/servers.rb +8 -0
  141. data/lib/fog/rackspace/models/dns/record.rb +14 -1
  142. data/lib/fog/rackspace/models/storage/file.rb +68 -2
  143. data/lib/fog/rackspace/requests/compute_v2/create_server.rb +3 -0
  144. data/lib/fog/version.rb +5 -0
  145. data/lib/fog/vsphere/compute.rb +74 -8
  146. data/lib/fog/vsphere/models/compute/cluster.rb +31 -0
  147. data/lib/fog/vsphere/models/compute/clusters.rb +26 -0
  148. data/lib/fog/vsphere/models/compute/datacenter.rb +35 -0
  149. data/lib/fog/vsphere/models/compute/datacenters.rb +23 -0
  150. data/lib/fog/vsphere/models/compute/datastore.rb +24 -0
  151. data/lib/fog/vsphere/models/compute/datastores.rb +25 -0
  152. data/lib/fog/vsphere/models/compute/folder.rb +28 -0
  153. data/lib/fog/vsphere/models/compute/folders.rb +27 -0
  154. data/lib/fog/vsphere/models/compute/interface.rb +39 -0
  155. data/lib/fog/vsphere/models/compute/interfaces.rb +33 -0
  156. data/lib/fog/vsphere/models/compute/network.rb +21 -0
  157. data/lib/fog/vsphere/models/compute/networks.rb +25 -0
  158. data/lib/fog/vsphere/models/compute/resource_pool.rb +23 -0
  159. data/lib/fog/vsphere/models/compute/resource_pools.rb +26 -0
  160. data/lib/fog/vsphere/models/compute/server.rb +78 -12
  161. data/lib/fog/vsphere/models/compute/servers.rb +16 -20
  162. data/lib/fog/vsphere/models/compute/template.rb +13 -0
  163. data/lib/fog/vsphere/models/compute/templates.rb +23 -0
  164. data/lib/fog/vsphere/models/compute/volume.rb +45 -0
  165. data/lib/fog/vsphere/models/compute/volumes.rb +33 -0
  166. data/lib/fog/vsphere/requests/compute/create_vm.rb +114 -0
  167. data/lib/fog/vsphere/requests/compute/get_cluster.rb +25 -0
  168. data/lib/fog/vsphere/requests/compute/get_datacenter.rb +29 -0
  169. data/lib/fog/vsphere/requests/compute/get_datastore.rb +25 -0
  170. data/lib/fog/vsphere/requests/compute/get_folder.rb +73 -0
  171. data/lib/fog/vsphere/requests/compute/get_network.rb +25 -0
  172. data/lib/fog/vsphere/requests/compute/get_resource_pool.rb +26 -0
  173. data/lib/fog/vsphere/requests/compute/get_virtual_machine.rb +62 -0
  174. data/lib/fog/vsphere/requests/compute/list_clusters.rb +37 -0
  175. data/lib/fog/vsphere/requests/compute/list_datacenters.rb +34 -0
  176. data/lib/fog/vsphere/requests/compute/list_datastores.rb +40 -0
  177. data/lib/fog/vsphere/requests/compute/list_folders.rb +45 -0
  178. data/lib/fog/vsphere/requests/compute/list_networks.rb +38 -0
  179. data/lib/fog/vsphere/requests/compute/list_resource_pools.rb +39 -0
  180. data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +132 -166
  181. data/lib/fog/vsphere/requests/compute/list_vm_interfaces.rb +52 -0
  182. data/lib/fog/vsphere/requests/compute/list_vm_volumes.rb +51 -0
  183. data/lib/fog/vsphere/requests/compute/vm_clone.rb +6 -8
  184. data/lib/fog/vsphere/requests/compute/vm_destroy.rb +1 -8
  185. data/lib/fog/vsphere/requests/compute/vm_reconfig_hardware.rb +1 -2
  186. data/lib/tasks/changelog_task.rb +98 -0
  187. data/lib/tasks/documentation_task.rb +155 -0
  188. data/lib/tasks/test_task.rb +46 -0
  189. data/tests/aws/models/iam/users_tests.rb +16 -2
  190. data/tests/aws/requests/auto_scaling/notification_configuration_tests.rb +1 -0
  191. data/tests/aws/requests/auto_scaling/tag_tests.rb +1 -0
  192. data/tests/aws/requests/compute/instance_tests.rb +2 -0
  193. data/tests/aws/requests/compute/volume_tests.rb +8 -0
  194. data/tests/aws/requests/storage/object_tests.rb +18 -1
  195. data/tests/aws/requests/storage/versioning_tests.rb +70 -0
  196. data/tests/brightbox/compute_tests.rb +96 -4
  197. data/tests/brightbox/models/compute/account_tests.rb +15 -0
  198. data/tests/brightbox/oauth2_tests.rb +103 -0
  199. data/tests/brightbox/requests/compute/account_tests.rb +9 -2
  200. data/tests/brightbox/requests/compute/interface_tests.rb +18 -4
  201. data/tests/dns/models/record_tests.rb +17 -3
  202. data/tests/openstack/requests/compute/address_tests.rb +22 -19
  203. data/tests/openstack/requests/compute/flavor_tests.rb +4 -2
  204. data/tests/openstack/requests/compute/limit_tests.rb +60 -0
  205. data/tests/openstack/requests/compute/quota_tests.rb +16 -3
  206. data/tests/openstack/requests/compute/security_group_tests.rb +1 -1
  207. data/tests/rackspace/models/compute_v2/servers_tests.rb +6 -0
  208. data/tests/rackspace/models/storage/file_tests.rb +172 -0
  209. data/tests/rackspace/requests/dns/helper.rb +12 -26
  210. data/tests/vsphere/compute_tests.rb +3 -3
  211. data/tests/vsphere/models/compute/server_tests.rb +1 -2
  212. data/tests/vsphere/requests/compute/list_virtual_machines_tests.rb +5 -13
  213. data/tests/vsphere/requests/compute/vm_clone_tests.rb +2 -2
  214. metadata +59 -11
  215. data/lib/fog/vsphere/requests/compute/datacenters.rb +0 -34
  216. data/lib/fog/vsphere/requests/compute/find_vm_by_ref.rb +0 -41
  217. data/lib/fog/vsphere/requests/compute/vm_create.rb +0 -97
  218. data/tests/vsphere/requests/compute/find_vm_by_ref_tests.rb +0 -26
  219. data/tests/vsphere/requests/compute/vm_create_tests.rb +0 -20
@@ -1,30 +1,44 @@
1
1
  Shindo.tests('Fog::Compute[:brightbox] | interface requests', ['brightbox']) do
2
2
 
3
+ @test_service = Fog::Compute[:brightbox]
4
+
3
5
  tests('success') do
4
6
 
5
7
  unless Fog.mocking?
6
- server = Fog::Compute[:brightbox].servers.first
8
+ server = @test_service.servers.first
9
+
10
+ # If no server is available, create one just for the test
11
+ unless server
12
+ @test_server = Brightbox::Compute::TestSupport.get_test_server
13
+ server = @test_server
14
+ end
15
+
7
16
  @interface_id = server.interfaces.first["id"]
8
17
  end
9
18
 
10
19
  tests("#get_interface('#{@interface_id}')") do
11
20
  pending if Fog.mocking?
12
- result = Fog::Compute[:brightbox].get_interface(@interface_id)
21
+ result = @test_service.get_interface(@interface_id)
13
22
  formats(Brightbox::Compute::Formats::Full::INTERFACE, false) { result }
14
23
  end
15
24
 
25
+ unless Fog.mocking?
26
+ # If we created a server just for this test, clean it up
27
+ @test_server.destroy if @test_server
28
+ end
29
+
16
30
  end
17
31
 
18
32
  tests('failure') do
19
33
 
20
34
  tests("#get_interface('int-00000')").raises(Excon::Errors::NotFound) do
21
35
  pending if Fog.mocking?
22
- Fog::Compute[:brightbox].get_interface('int-00000')
36
+ @test_service.get_interface('int-00000')
23
37
  end
24
38
 
25
39
  tests("#get_interface()").raises(ArgumentError) do
26
40
  pending if Fog.mocking?
27
- Fog::Compute[:brightbox].get_interface()
41
+ @test_service.get_interface()
28
42
  end
29
43
  end
30
44
 
@@ -7,12 +7,24 @@ for provider, config in dns_providers
7
7
 
8
8
  Shindo.tests("Fog::DNS[:#{provider}] | record", [provider.to_s]) do
9
9
 
10
- record_attributes = {
11
- :name => 'www.' + domain_name,
10
+ a_record_attributes = {
11
+ :name => 'a.' + domain_name,
12
12
  :type => 'A',
13
13
  :value => '1.2.3.4'
14
14
  }.merge!(config[:record_attributes] || {})
15
15
 
16
+ aaaa_record_attributes = {
17
+ :name => 'aaaa.' + domain_name,
18
+ :type => 'AAAA',
19
+ :value => '2001:0db8:0000:0000:0000:ff00:0042:8329'
20
+ }.merge!(config[:record_attributes] || {})
21
+
22
+ cname_record_attributes = {
23
+ :name => 'cname.' + domain_name,
24
+ :type => 'CNAME',
25
+ :value => 'real.' + domain_name
26
+ }.merge!(config[:record_attributes] || {})
27
+
16
28
  if !Fog.mocking? || config[:mocked]
17
29
  zone_attributes = {
18
30
  :domain => domain_name
@@ -20,7 +32,9 @@ for provider, config in dns_providers
20
32
 
21
33
  @zone = Fog::DNS[provider].zones.create(zone_attributes)
22
34
 
23
- model_tests(@zone.records, record_attributes, config[:mocked])
35
+ model_tests(@zone.records, a_record_attributes, config[:mocked])
36
+ model_tests(@zone.records, aaaa_record_attributes, config[:mocked])
37
+ model_tests(@zone.records, cname_record_attributes, config[:mocked])
24
38
 
25
39
  @zone.destroy
26
40
  end
@@ -1,16 +1,10 @@
1
1
  Shindo.tests('Fog::Compute[:openstack] | address requests', ['openstack']) do
2
- # clean the servers
3
- =begin
4
- @servers = Fog::Compute[:openstack].servers.each do |server|
5
- Fog::Compute[:openstack].list_all_addresses(server.id).body['floating_ips'].each do |ip_add|
6
- Fog::Compute[:openstack].release_address(ip_add['id'])
7
- end
8
2
 
9
- Fog::Compute[:openstack].delete_server(server.id)
10
- end
11
- =end
3
+ compute = Fog::Compute[:openstack]
4
+ flavor_ref = ENV['OPENSTACK_FLAVOR_REF'] || compute.list_flavors.body['flavors'].first['links'].first['href']
5
+ image_ref = ENV['OPENSTACK_IMAGE_REF'] || compute.list_images.body['images'].first['links'].first['href']
12
6
 
13
- @server = Fog::Compute[:openstack].create_server("shindo_test_server", Fog::Compute[:openstack].list_images.body['images'].last['links'].first['href'], Fog::Compute[:openstack].list_flavors.body['flavors'].first['links'].first['href'])
7
+ @server_id = compute.create_server("shindo_test_server", image_ref, flavor_ref).body['server']['id']
14
8
 
15
9
  @address_format = {
16
10
  "instance_id" => NilClass,
@@ -21,29 +15,38 @@ Shindo.tests('Fog::Compute[:openstack] | address requests', ['openstack']) do
21
15
  }
22
16
 
23
17
  tests('success') do
18
+
24
19
  tests('#allocate_address').formats({"floating_ip" => @address_format}) do
25
- Fog::Compute[:openstack].allocate_address.body
20
+ data = compute.allocate_address.body
21
+ @address_id = data['floating_ip']['id']
22
+ @address_ip = data['floating_ip']['ip']
23
+ data
26
24
  end
27
25
 
28
26
  tests('#list_all_addresses').formats({"floating_ips" => [@address_format]}) do
29
- Fog::Compute[:openstack].list_all_addresses.body
27
+ compute.list_all_addresses.body
30
28
  end
31
29
 
32
30
  tests('#get_address(address_id)').formats({"floating_ip" => @address_format}) do
33
- address_id = Fog::Compute[:openstack].addresses.all.first.id
34
- Fog::Compute[:openstack].get_address(address_id).body
31
+ compute.get_address(@address_id).body
35
32
  end
36
33
 
37
- Fog::Compute[:openstack].servers.get(@server.body['server']['id']).wait_for { ready? }
34
+ compute.servers.get(@server_id).wait_for { ready? }
38
35
 
39
36
  tests('#associate_address(server_id, ip_address)').succeeds do
40
- address_ip = Fog::Compute[:openstack].addresses.all.first.ip
41
- Fog::Compute[:openstack].associate_address(@server.body['server']['id'], address_ip).body
37
+ compute.associate_address(@server_id, @address_ip).body
42
38
  end
43
39
 
44
40
  tests('#disassociate_address(server_id, ip_address)').succeeds do
45
- address_ip = Fog::Compute[:openstack].addresses.all.first.ip
46
- Fog::Compute[:openstack].disassociate_address(@server.body['server']['id'], address_ip).body
41
+ compute.disassociate_address(@server_id, @address_ip).body
42
+ end
43
+
44
+ tests('#release_address(ip_address)').succeeds do
45
+ compute.release_address(@address_id)
47
46
  end
47
+
48
48
  end
49
+
50
+ compute.delete_server(@server_id)
51
+
49
52
  end
@@ -6,9 +6,11 @@ Shindo.tests('Fog::Compute[:openstack] | flavor requests', ['openstack']) do
6
6
  'disk' => Integer,
7
7
  'ram' => Integer,
8
8
  'links' => Array,
9
- 'swap' => String,
9
+ 'swap' => Fog::Nullable::String,
10
10
  'rxtx_factor' => Fog::Nullable::Float,
11
11
  'OS-FLV-EXT-DATA:ephemeral' => Integer,
12
+ 'os-flavor-access:is_public' => Fog::Nullable::Boolean,
13
+ 'OS-FLV-DISABLED:disabled' => Fog::Nullable::Boolean,
12
14
  'vcpus' => Integer
13
15
  }
14
16
 
@@ -27,7 +29,7 @@ Shindo.tests('Fog::Compute[:openstack] | flavor requests', ['openstack']) do
27
29
  end
28
30
 
29
31
  tests('#create_flavor(attributes)').formats({'flavor' => @flavor_format}) do
30
- attributes = {:flavor_id => '100', :name => 'shindo test flavor', :disk => 10, :ram => 10, :vcpus => 10, :swap => "0", :rxtx_factor => 1.0, :ephemeral => 0}
32
+ attributes = {:flavor_id => '100', :name => 'shindo test flavor', :disk => 10, :ram => 10, :vcpus => 10, :swap => "0", :rxtx_factor => 2.4, :ephemeral => 0, :is_public => false}
31
33
  Fog::Compute[:openstack].create_flavor(attributes).body
32
34
  end
33
35
 
@@ -0,0 +1,60 @@
1
+ Shindo.tests('Fog::Compute[:openstack] | limits requests', ['openstack']) do
2
+ @rate_limit_format = {
3
+ 'regex' => String,
4
+ 'uri' => String,
5
+ 'limit' => Array
6
+ }
7
+
8
+ @rate_limit_usage_format = {
9
+ 'next-available' => String,
10
+ 'unit' => String,
11
+ 'verb' => String,
12
+ 'remaining' => Fixnum,
13
+ 'value' => Fixnum
14
+ }
15
+
16
+ @absolute_limits_format = {
17
+ 'maxServerMeta' => Fixnum,
18
+ 'maxTotalInstances' => Fixnum,
19
+ 'maxPersonality' => Fixnum,
20
+ 'maxImageMeta' => Fixnum,
21
+ 'maxPersonalitySize' => Fixnum,
22
+ 'maxSecurityGroupRules' => Fixnum,
23
+ 'maxTotalKeypairs' => Fixnum,
24
+ 'maxSecurityGroups' => Fixnum,
25
+ 'maxTotalCores' => Fixnum,
26
+ 'maxTotalFloatingIps' => Fixnum,
27
+ 'maxTotalRAMSize' => Fixnum,
28
+ 'totalCoresUsed' => Fixnum,
29
+ 'totalRAMUsed' => Fixnum,
30
+ 'totalInstancesUsed' => Fixnum,
31
+ 'totalSecurityGroupsUsed' => Fixnum,
32
+ 'totalKeyPairsUsed' => Fixnum
33
+ }
34
+
35
+ @limits_format = {
36
+ 'rate' => Array,
37
+ 'absolute' => Hash
38
+ }
39
+
40
+ tests('success') do
41
+ tests('#get_limits') do
42
+ tests('format').formats(@limits_format) do
43
+ Fog::Compute[:openstack].get_limits.body['limits']
44
+ end
45
+
46
+ tests('rate limit format').formats(@rate_limit_format) do
47
+ Fog::Compute[:openstack].get_limits.body['limits']['rate'].first
48
+ end
49
+
50
+ tests('rate limit usage format').formats(@rate_limit_usage_format) do
51
+ Fog::Compute[:openstack].get_limits.body['limits']['rate'].first['limit'].first
52
+ end
53
+
54
+ tests('absolute limits format').formats(@absolute_limits_format) do
55
+ Fog::Compute[:openstack].get_limits.body['limits']['absolute']
56
+ end
57
+ end
58
+ end
59
+ end
60
+
@@ -2,14 +2,14 @@ Shindo.tests('Fog::Compute[:openstack] | quota requests', ['openstack']) do
2
2
 
3
3
  @tenant_id = Fog::Compute[:openstack].list_tenants.body['tenants'].first['id']
4
4
  @quota_set_format = {
5
+ 'key_pairs' => Fixnum,
5
6
  'metadata_items' => Fixnum,
6
7
  'injected_file_content_bytes' => Fixnum,
8
+ 'injected_file_path_bytes' => Fixnum,
7
9
  'injected_files' => Fixnum,
8
- 'gigabytes' => Fixnum,
9
10
  'ram' => Fixnum,
10
11
  'floating_ips' => Fixnum,
11
12
  'instances' => Fixnum,
12
- 'volumes' => Fixnum,
13
13
  'cores' => Fixnum,
14
14
  'security_groups' => Fog::Nullable::Integer,
15
15
  'security_group_rules' => Fog::Nullable::Integer,
@@ -17,6 +17,7 @@ Shindo.tests('Fog::Compute[:openstack] | quota requests', ['openstack']) do
17
17
  }
18
18
 
19
19
  tests('success') do
20
+
20
21
  tests('#get_quota_defaults').formats({ 'quota_set' => @quota_set_format }) do
21
22
  Fog::Compute[:openstack].get_quota_defaults(@tenant_id).body
22
23
  end
@@ -27,8 +28,9 @@ Shindo.tests('Fog::Compute[:openstack] | quota requests', ['openstack']) do
27
28
  end
28
29
 
29
30
  tests('#update_quota') do
31
+
30
32
  new_values = @quota.merge({
31
- 'volumes' => @quota['volumes']/2,
33
+ 'floating_ips' => @quota['floating_ips']/2,
32
34
  'cores' => @quota['cores']/2
33
35
  })
34
36
 
@@ -39,6 +41,17 @@ Shindo.tests('Fog::Compute[:openstack] | quota requests', ['openstack']) do
39
41
  returns(new_values, 'returns new values') do
40
42
  Fog::Compute[:openstack].get_quota(@tenant_id).body['quota_set']
41
43
  end
44
+
45
+ # set quota back to old values
46
+ succeeds do
47
+ Fog::Compute[:openstack].update_quota(@tenant_id, @quota.clone)
48
+ end
49
+
50
+ # ensure old values are restored
51
+ returns(@quota, 'old values restored') do
52
+ Fog::Compute[:openstack].get_quota(@tenant_id).body['quota_set']
53
+ end
54
+
42
55
  end
43
56
 
44
57
  end
@@ -20,7 +20,7 @@ Shindo.tests('Fog::Compute[:openstack] | security group requests', ['openstack']
20
20
  }
21
21
 
22
22
  tests('success') do
23
- tests('#create_security_group(name, description)').formats({"security_group" => [@security_group_format]}) do
23
+ tests('#create_security_group(name, description)').formats({"security_group" => @security_group_format}) do
24
24
  Fog::Compute[:openstack].create_security_group('from_shindo_test', 'this is from the shindo test').body
25
25
  end
26
26
 
@@ -11,4 +11,10 @@ Shindo.tests('Fog::Compute::RackspaceV2 | servers', ['rackspace']) do
11
11
  collection_tests(service.servers, options, false) do
12
12
  @instance.wait_for { ready? }
13
13
  end
14
+
15
+ tests("#bootstrap").succeeds do
16
+ @server = service.servers.bootstrap(options)
17
+ end
18
+ @server.destroy
19
+
14
20
  end
@@ -0,0 +1,172 @@
1
+ Shindo.tests('Fog::Rackspace::Storage | file', ['rackspace']) do
2
+
3
+ pending if Fog.mocking?
4
+
5
+ def object_meta_attributes
6
+ @instance.connection.head_object(@directory.key, @instance.key).headers.reject {|k, v| !(k =~ /X-Object-Meta-/)}
7
+ end
8
+
9
+ def clear_metadata
10
+ @instance.metadata.tap do |metadata|
11
+ metadata.each_pair {|k, v| metadata[k] = nil }
12
+ end
13
+ end
14
+
15
+ file_attributes = {
16
+ :key => 'fog_file_tests',
17
+ :body => lorem_file
18
+ }
19
+
20
+ directory_attributes = {
21
+ # Add a random suffix to prevent collision
22
+ :key => "fogfilestests-#{rand(65536)}"
23
+ }
24
+
25
+ @directory = Fog::Storage[:rackspace].
26
+ directories.
27
+ create(directory_attributes)
28
+
29
+ model_tests(@directory.files, file_attributes, Fog.mocking?) do
30
+
31
+ tests("#metadata should load empty metadata").returns({}) do
32
+ @instance.metadata
33
+ end
34
+
35
+ tests('#save') do
36
+
37
+ tests('#metadata') do
38
+
39
+ before do
40
+ @instance.metadata[:foo] = 'bar'
41
+ @instance.save
42
+ end
43
+
44
+ after do
45
+ clear_metadata
46
+ @instance.save
47
+ end
48
+
49
+ tests("should update metadata").returns('bar') do
50
+ object_meta_attributes['X-Object-Meta-Foo']
51
+ end
52
+
53
+ tests('should cache metadata').returns('bar') do
54
+ @instance.metadata[:foo]
55
+ end
56
+
57
+ tests('should remove empty metadata').returns({}) do
58
+ @instance.metadata[:foo] = nil
59
+ @instance.save
60
+ object_meta_attributes
61
+ end
62
+
63
+ end
64
+
65
+ tests('#metadata keys') do
66
+
67
+ after do
68
+ clear_metadata
69
+ @instance.save
70
+ end
71
+
72
+ @instance.metadata[:foo_bar] = 'baz'
73
+ tests("should support compound key names").returns('baz') do
74
+ @instance.save
75
+ object_meta_attributes['X-Object-Meta-Foo-Bar']
76
+ end
77
+
78
+ @instance.metadata['foo'] = 'bar'
79
+ tests("should support string keys").returns('bar') do
80
+ @instance.save
81
+ object_meta_attributes['X-Object-Meta-Foo']
82
+ end
83
+
84
+ @instance.metadata['foo_bar'] = 'baz'
85
+ tests("should support compound string key names").returns('baz') do
86
+ @instance.save
87
+ object_meta_attributes['X-Object-Meta-Foo-Bar']
88
+ end
89
+
90
+ @instance.metadata['foo-bar'] = 'baz'
91
+ tests("should support hyphenated keys").returns('baz') do
92
+ @instance.save
93
+ object_meta_attributes['X-Object-Meta-Foo-Bar']
94
+ end
95
+
96
+ @instance.metadata['foo-bar'] = 'baz'
97
+ @instance.metadata[:'foo_bar'] = 'bref'
98
+ tests("should only support one value per metadata key").returns('bref') do
99
+ @instance.save
100
+ object_meta_attributes['X-Object-Meta-Foo-Bar']
101
+ end
102
+
103
+ end
104
+
105
+ end
106
+
107
+ tests("#access_control_allow_origin") do
108
+
109
+ tests("#access_control_allow_origin should default to nil").returns(nil) do
110
+ @instance.access_control_allow_origin
111
+ end
112
+
113
+ @instance.access_control_allow_origin = 'http://example.com'
114
+ @instance.save
115
+ tests("#access_control_allow_origin should return access control attribute").returns('http://example.com') do
116
+ @instance.access_control_allow_origin
117
+ end
118
+
119
+ @instance.access_control_allow_origin = 'foo'
120
+ @instance.save
121
+ tests("#access_control_allow_origin= should update access_control_allow_origin").returns('bar') do
122
+ @instance.access_control_allow_origin = 'bar'
123
+ @instance.save
124
+ @instance.access_control_allow_origin
125
+ end
126
+
127
+ tests("#access_control_allow_origin= should not blow up on nil") do
128
+ @instance.access_control_allow_origin = nil
129
+ @instance.save
130
+ end
131
+
132
+ end
133
+
134
+ end
135
+
136
+
137
+ model_tests(@directory.files, file_attributes, Fog.mocking?) do
138
+
139
+ tests("#origin") do
140
+
141
+ tests("#origin should default to nil").returns(nil) do
142
+ @instance.save
143
+ @instance.origin
144
+ end
145
+
146
+ @instance.origin = 'http://example.com'
147
+ @instance.save
148
+ tests("#origin should return access control attributes").returns('http://example.com') do
149
+ @instance.origin
150
+ end
151
+ @instance.attributes.delete('Origin')
152
+
153
+ @instance.origin = 'foo'
154
+ @instance.save
155
+ tests("#origin= should update origin").returns('bar') do
156
+ @instance.origin = 'bar'
157
+ @instance.save
158
+ @instance.origin
159
+ end
160
+
161
+ tests("#origin= should not blow up on nil") do
162
+ @instance.origin = nil
163
+ @instance.save
164
+ end
165
+
166
+ end
167
+
168
+ end
169
+
170
+ @directory.destroy
171
+
172
+ end