fog 1.7.0 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
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