fog 1.32.0 → 1.33.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +59 -0
  3. data/Gemfile +1 -0
  4. data/Rakefile +4 -4
  5. data/fog.gemspec +3 -2
  6. data/lib/fog/linode/requests/compute/avail_datacenters.rb +8 -7
  7. data/lib/fog/openstack.rb +1 -0
  8. data/lib/fog/openstack/compute.rb +7 -1
  9. data/lib/fog/openstack/core.rb +28 -54
  10. data/lib/fog/openstack/identity.rb +1 -0
  11. data/lib/fog/openstack/identity_v3.rb +10 -9
  12. data/lib/fog/openstack/models/baremetal/chassis.rb +3 -14
  13. data/lib/fog/openstack/models/baremetal/chassis_collection.rb +5 -5
  14. data/lib/fog/openstack/models/baremetal/driver.rb +2 -8
  15. data/lib/fog/openstack/models/baremetal/drivers.rb +3 -5
  16. data/lib/fog/openstack/models/baremetal/node.rb +3 -14
  17. data/lib/fog/openstack/models/baremetal/nodes.rb +4 -4
  18. data/lib/fog/openstack/models/baremetal/port.rb +3 -14
  19. data/lib/fog/openstack/models/baremetal/ports.rb +4 -4
  20. data/lib/fog/openstack/models/collection.rb +45 -0
  21. data/lib/fog/openstack/models/compute/address.rb +2 -2
  22. data/lib/fog/openstack/models/compute/addresses.rb +3 -5
  23. data/lib/fog/openstack/models/compute/aggregate.rb +2 -8
  24. data/lib/fog/openstack/models/compute/aggregates.rb +3 -5
  25. data/lib/fog/openstack/models/compute/availability_zone.rb +14 -0
  26. data/lib/fog/openstack/models/compute/availability_zones.rb +22 -0
  27. data/lib/fog/openstack/models/compute/flavor.rb +2 -8
  28. data/lib/fog/openstack/models/compute/flavors.rb +6 -6
  29. data/lib/fog/openstack/models/compute/host.rb +1 -1
  30. data/lib/fog/openstack/models/compute/hosts.rb +4 -6
  31. data/lib/fog/openstack/models/compute/image.rb +2 -8
  32. data/lib/fog/openstack/models/compute/images.rb +4 -6
  33. data/lib/fog/openstack/models/compute/key_pair.rb +2 -2
  34. data/lib/fog/openstack/models/compute/key_pairs.rb +3 -4
  35. data/lib/fog/openstack/models/compute/metadata.rb +3 -2
  36. data/lib/fog/openstack/models/compute/metadatum.rb +2 -2
  37. data/lib/fog/openstack/models/compute/network.rb +2 -2
  38. data/lib/fog/openstack/models/compute/networks.rb +3 -2
  39. data/lib/fog/openstack/models/compute/security_group.rb +2 -2
  40. data/lib/fog/openstack/models/compute/security_group_rule.rb +2 -2
  41. data/lib/fog/openstack/models/compute/security_group_rules.rb +2 -2
  42. data/lib/fog/openstack/models/compute/security_groups.rb +3 -5
  43. data/lib/fog/openstack/models/compute/server.rb +20 -1
  44. data/lib/fog/openstack/models/compute/servers.rb +9 -5
  45. data/lib/fog/openstack/models/compute/service.rb +2 -8
  46. data/lib/fog/openstack/models/compute/services.rb +4 -4
  47. data/lib/fog/openstack/models/compute/snapshot.rb +2 -8
  48. data/lib/fog/openstack/models/compute/snapshots.rb +5 -5
  49. data/lib/fog/openstack/models/compute/tenant.rb +2 -2
  50. data/lib/fog/openstack/models/compute/tenants.rb +3 -4
  51. data/lib/fog/openstack/models/compute/volume.rb +2 -8
  52. data/lib/fog/openstack/models/compute/volumes.rb +5 -5
  53. data/lib/fog/openstack/models/identity_v2/ec2_credential.rb +3 -9
  54. data/lib/fog/openstack/models/identity_v2/ec2_credentials.rb +3 -5
  55. data/lib/fog/openstack/models/identity_v2/role.rb +3 -3
  56. data/lib/fog/openstack/models/identity_v2/roles.rb +3 -5
  57. data/lib/fog/openstack/models/identity_v2/tenant.rb +5 -9
  58. data/lib/fog/openstack/models/identity_v2/tenants.rb +3 -5
  59. data/lib/fog/openstack/models/identity_v2/user.rb +2 -8
  60. data/lib/fog/openstack/models/identity_v2/users.rb +3 -5
  61. data/lib/fog/openstack/models/identity_v3/domain.rb +5 -9
  62. data/lib/fog/openstack/models/identity_v3/domains.rb +3 -5
  63. data/lib/fog/openstack/models/identity_v3/endpoint.rb +5 -9
  64. data/lib/fog/openstack/models/identity_v3/endpoints.rb +3 -5
  65. data/lib/fog/openstack/models/identity_v3/group.rb +5 -9
  66. data/lib/fog/openstack/models/identity_v3/groups.rb +3 -5
  67. data/lib/fog/openstack/models/identity_v3/os_credential.rb +3 -3
  68. data/lib/fog/openstack/models/identity_v3/os_credentials.rb +3 -5
  69. data/lib/fog/openstack/models/identity_v3/policies.rb +3 -5
  70. data/lib/fog/openstack/models/identity_v3/policy.rb +5 -9
  71. data/lib/fog/openstack/models/identity_v3/project.rb +5 -8
  72. data/lib/fog/openstack/models/identity_v3/projects.rb +21 -10
  73. data/lib/fog/openstack/models/identity_v3/role.rb +3 -8
  74. data/lib/fog/openstack/models/identity_v3/role_assignment.rb +3 -3
  75. data/lib/fog/openstack/models/identity_v3/role_assignments.rb +3 -5
  76. data/lib/fog/openstack/models/identity_v3/roles.rb +3 -5
  77. data/lib/fog/openstack/models/identity_v3/service.rb +3 -3
  78. data/lib/fog/openstack/models/identity_v3/services.rb +3 -5
  79. data/lib/fog/openstack/models/identity_v3/token.rb +3 -3
  80. data/lib/fog/openstack/models/identity_v3/tokens.rb +3 -3
  81. data/lib/fog/openstack/models/identity_v3/user.rb +3 -9
  82. data/lib/fog/openstack/models/identity_v3/users.rb +3 -5
  83. data/lib/fog/openstack/models/image/image.rb +2 -13
  84. data/lib/fog/openstack/models/image/images.rb +5 -5
  85. data/lib/fog/openstack/models/metering/resource.rb +2 -7
  86. data/lib/fog/openstack/models/metering/resources.rb +3 -3
  87. data/lib/fog/openstack/models/model.rb +44 -0
  88. data/lib/fog/openstack/models/network/floating_ip.rb +2 -7
  89. data/lib/fog/openstack/models/network/floating_ips.rb +3 -5
  90. data/lib/fog/openstack/models/network/lb_health_monitor.rb +2 -12
  91. data/lib/fog/openstack/models/network/lb_health_monitors.rb +3 -5
  92. data/lib/fog/openstack/models/network/lb_member.rb +2 -12
  93. data/lib/fog/openstack/models/network/lb_members.rb +3 -5
  94. data/lib/fog/openstack/models/network/lb_pool.rb +2 -12
  95. data/lib/fog/openstack/models/network/lb_pools.rb +3 -5
  96. data/lib/fog/openstack/models/network/lb_vip.rb +2 -12
  97. data/lib/fog/openstack/models/network/lb_vips.rb +3 -5
  98. data/lib/fog/openstack/models/network/network.rb +2 -12
  99. data/lib/fog/openstack/models/network/networks.rb +3 -5
  100. data/lib/fog/openstack/models/network/port.rb +2 -13
  101. data/lib/fog/openstack/models/network/ports.rb +3 -5
  102. data/lib/fog/openstack/models/network/router.rb +2 -13
  103. data/lib/fog/openstack/models/network/routers.rb +3 -5
  104. data/lib/fog/openstack/models/network/security_group.rb +2 -2
  105. data/lib/fog/openstack/models/network/security_group_rule.rb +2 -2
  106. data/lib/fog/openstack/models/network/security_group_rules.rb +3 -5
  107. data/lib/fog/openstack/models/network/security_groups.rb +3 -5
  108. data/lib/fog/openstack/models/network/subnet.rb +3 -14
  109. data/lib/fog/openstack/models/network/subnets.rb +3 -5
  110. data/lib/fog/openstack/models/orchestration/event.rb +2 -2
  111. data/lib/fog/openstack/models/orchestration/events.rb +5 -7
  112. data/lib/fog/openstack/models/orchestration/resource.rb +2 -2
  113. data/lib/fog/openstack/models/orchestration/resource_schemas.rb +2 -2
  114. data/lib/fog/openstack/models/orchestration/resources.rb +3 -5
  115. data/lib/fog/openstack/models/orchestration/stack.rb +3 -7
  116. data/lib/fog/openstack/models/orchestration/stacks.rb +5 -5
  117. data/lib/fog/openstack/models/orchestration/template.rb +2 -2
  118. data/lib/fog/openstack/models/orchestration/templates.rb +1 -1
  119. data/lib/fog/openstack/models/planning/plan.rb +2 -13
  120. data/lib/fog/openstack/models/planning/plans.rb +3 -5
  121. data/lib/fog/openstack/models/planning/role.rb +2 -8
  122. data/lib/fog/openstack/models/planning/roles.rb +3 -6
  123. data/lib/fog/openstack/models/storage/directories.rb +4 -6
  124. data/lib/fog/openstack/models/storage/directory.rb +2 -2
  125. data/lib/fog/openstack/models/storage/file.rb +15 -2
  126. data/lib/fog/openstack/models/storage/files.rb +7 -8
  127. data/lib/fog/openstack/models/volume/availability_zone.rb +13 -0
  128. data/lib/fog/openstack/models/volume/availability_zones.rb +17 -0
  129. data/lib/fog/openstack/models/volume/transfer.rb +36 -0
  130. data/lib/fog/openstack/models/volume/transfers.rb +38 -0
  131. data/lib/fog/openstack/models/volume/volume.rb +9 -8
  132. data/lib/fog/openstack/models/volume/volume_type.rb +2 -8
  133. data/lib/fog/openstack/models/volume/volume_types.rb +3 -6
  134. data/lib/fog/openstack/models/volume/volumes.rb +5 -6
  135. data/lib/fog/openstack/requests/compute/list_servers.rb +8 -5
  136. data/lib/fog/openstack/requests/compute/list_servers_detail.rb +9 -6
  137. data/lib/fog/openstack/requests/compute/list_zones.rb +6 -5
  138. data/lib/fog/openstack/requests/compute/list_zones_detailed.rb +55 -0
  139. data/lib/fog/openstack/requests/compute/shelve_offload_server.rb +24 -0
  140. data/lib/fog/openstack/requests/compute/shelve_server.rb +24 -0
  141. data/lib/fog/openstack/requests/compute/unshelve_server.rb +24 -0
  142. data/lib/fog/openstack/requests/identity_v3/get_project.rb +2 -2
  143. data/lib/fog/openstack/requests/network/create_subnet.rb +1 -1
  144. data/lib/fog/openstack/requests/network/update_subnet.rb +8 -7
  145. data/lib/fog/openstack/requests/volume/accept_transfer.rb +24 -0
  146. data/lib/fog/openstack/requests/volume/create_transfer.rb +27 -0
  147. data/lib/fog/openstack/requests/volume/delete_transfer.rb +17 -0
  148. data/lib/fog/openstack/requests/volume/extend_volume.rb +25 -0
  149. data/lib/fog/openstack/requests/volume/get_transfer_details.rb +17 -0
  150. data/lib/fog/openstack/requests/volume/list_transfers.rb +18 -0
  151. data/lib/fog/openstack/requests/volume/list_transfers_detailed.rb +18 -0
  152. data/lib/fog/openstack/requests/volume/list_zones.rb +32 -0
  153. data/lib/fog/openstack/storage.rb +3 -1
  154. data/lib/fog/openstack/volume.rb +16 -0
  155. data/lib/fog/rackspace/examples/compute_v2/create_network.rb +1 -1
  156. data/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb +31 -30
  157. data/lib/fog/vcloud_director/models/compute/task.rb +2 -2
  158. data/lib/fog/version.rb +1 -1
  159. data/lib/fog/vsphere/compute.rb +1 -0
  160. data/lib/fog/vsphere/requests/compute/get_resource_pool.rb +1 -1
  161. data/lib/fog/vsphere/requests/compute/get_virtual_machine.rb +4 -3
  162. data/lib/fog/vsphere/requests/compute/list_clusters.rb +1 -1
  163. data/lib/fog/vsphere/requests/compute/list_vm_interfaces.rb +2 -2
  164. data/lib/fog/vsphere/requests/compute/vm_clone.rb +101 -30
  165. data/lib/fog/vsphere/requests/compute/vm_execute.rb +47 -0
  166. data/lib/tasks/changelog_task.rb +1 -0
  167. data/spec/fog/openstack/identity_v3/{idv3.yml → common_setup.yml} +0 -0
  168. data/spec/fog/openstack/identity_v3/idv3_project_hier_crud_list.yml +1394 -0
  169. data/spec/fog/openstack/identity_v3_spec.rb +255 -196
  170. data/spec/fog/openstack/network/common_setup.yml +131 -0
  171. data/spec/fog/openstack/network/subnets_crud.yml +140 -0
  172. data/spec/fog/openstack/network_spec.rb +43 -0
  173. data/spec/fog/openstack/shared_context.rb +98 -0
  174. data/spec/fog/openstack/volume/{volume_common_setup.yml → common_setup.yml} +0 -0
  175. data/spec/fog/openstack/volume/volume_extend.yml +762 -0
  176. data/spec/fog/openstack/volume/volume_transfer_and_accept.yml +1078 -0
  177. data/spec/fog/openstack/volume/volume_transfer_and_delete.yml +695 -0
  178. data/spec/fog/openstack/volume_spec.rb +232 -67
  179. data/tests/openstack/models/storage/file_tests.rb +26 -0
  180. data/tests/openstack/requests/compute/availability_zone_tests.rb +18 -0
  181. data/tests/openstack/requests/compute/server_tests.rb +12 -0
  182. data/tests/openstack/requests/network/subnet_tests.rb +2 -2
  183. data/tests/openstack/requests/volume/availability_zone_tests.rb +13 -0
  184. data/tests/vcloud_director/requests/compute/edge_gateway_tests.rb +2 -2
  185. metadata +61 -26
  186. data/lib/fog/dynect.rb +0 -1
  187. data/lib/fog/dynect/core.rb +0 -26
  188. data/lib/fog/dynect/dns.rb +0 -157
  189. data/lib/fog/dynect/models/dns/record.rb +0 -67
  190. data/lib/fog/dynect/models/dns/records.rb +0 -48
  191. data/lib/fog/dynect/models/dns/zone.rb +0 -56
  192. data/lib/fog/dynect/models/dns/zones.rb +0 -25
  193. data/lib/fog/dynect/requests/dns/delete_record.rb +0 -55
  194. data/lib/fog/dynect/requests/dns/delete_zone.rb +0 -41
  195. data/lib/fog/dynect/requests/dns/get_all_records.rb +0 -56
  196. data/lib/fog/dynect/requests/dns/get_node_list.rb +0 -55
  197. data/lib/fog/dynect/requests/dns/get_record.rb +0 -83
  198. data/lib/fog/dynect/requests/dns/get_zone.rb +0 -57
  199. data/lib/fog/dynect/requests/dns/post_record.rb +0 -71
  200. data/lib/fog/dynect/requests/dns/post_session.rb +0 -43
  201. data/lib/fog/dynect/requests/dns/post_zone.rb +0 -70
  202. data/lib/fog/dynect/requests/dns/put_record.rb +0 -76
  203. data/lib/fog/dynect/requests/dns/put_zone.rb +0 -76
  204. data/tests/dynect/requests/dns/dns_tests.rb +0 -258
@@ -2,17 +2,18 @@ module Fog
2
2
  module Compute
3
3
  class OpenStack
4
4
  class Real
5
- def list_zones(*args)
5
+ def list_zones(options = {})
6
6
  request(
7
- :expects => 200,
8
- :method => 'GET',
9
- :path => 'os-availability-zone.json'
7
+ :expects => 200,
8
+ :method => 'GET',
9
+ :path => 'os-availability-zone.json',
10
+ :query => options
10
11
  )
11
12
  end
12
13
  end
13
14
 
14
15
  class Mock
15
- def list_zones(*args)
16
+ def list_zones(options = {})
16
17
  Excon::Response.new(
17
18
  :body => { "availabilityZoneInfo" => [
18
19
  {
@@ -0,0 +1,55 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def list_zones_detailed(options = {})
6
+ request(
7
+ :expects => 200,
8
+ :method => 'GET',
9
+ :path => 'os-availability-zone/detail.json',
10
+ :query => options
11
+ )
12
+ end
13
+ end
14
+
15
+ class Mock
16
+ def list_zones_detailed(options = {})
17
+ Excon::Response.new(
18
+ :body => {
19
+ "availabilityZoneInfo" => [
20
+ {
21
+ "zoneState" => {
22
+ "available" => true},
23
+ "hosts" => {
24
+ "instack.localdomain" => {
25
+ "nova-conductor" => {
26
+ "available" => true,
27
+ "active" => true,
28
+ "updated_at" => "2015-07-22T07:40:08.000000"},
29
+ "nova-scheduler" => {
30
+ "available" => true,
31
+ "active" => true,
32
+ "updated_at" => "2015-07-22T07:40:04.000000"},
33
+ "nova-consoleauth" => {
34
+ "available" => true,
35
+ "active" => true,
36
+ "updated_at" => "2015-07-22T07:40:09.000000"}}},
37
+ "zoneName" => "internal"
38
+ },
39
+ {
40
+ "zoneState" => {
41
+ "available" => true},
42
+ "hosts" => {
43
+ "instack.localdomain" => {
44
+ "nova-compute" => {
45
+ "available" => true,
46
+ "active" => true,
47
+ "updated_at" => "2015-07-22T07:40:04.000000"}}},
48
+ "zoneName" => "nova"}]},
49
+ :status => 200
50
+ )
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,24 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ # Shelve Off load the server. Data and resource associations are deleted.
6
+ #
7
+ # === Parameters
8
+ # * server_id <~String> - The ID of the server to be shelve off loaded
9
+ # === Returns
10
+ # * success <~Boolean>
11
+ def shelve_offload_server(server_id)
12
+ body = { 'shelveOffload' => nil }
13
+ server_action(server_id, body).status == 202
14
+ end # def shelve_off_load_server
15
+ end # class Real
16
+
17
+ class Mock
18
+ def shelve_offload_server(server_id)
19
+ true
20
+ end # def shelve_off_load_server
21
+ end # class Mock
22
+ end # class OpenStack
23
+ end # module Compute
24
+ end # module Fog
@@ -0,0 +1,24 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ # Shelve the server.
6
+ #
7
+ # === Parameters
8
+ # * server_id <~String> - The ID of the server to be shelved
9
+ # === Returns
10
+ # * success <~Boolean>
11
+ def shelve_server(server_id)
12
+ body = { 'shelve' => nil }
13
+ server_action(server_id, body).status == 202
14
+ end # def shelve_server
15
+ end # class Real
16
+
17
+ class Mock
18
+ def shelve_server(server_id)
19
+ true
20
+ end # def shelve_server
21
+ end # class Mock
22
+ end # class OpenStack
23
+ end # module Compute
24
+ end # module Fog
@@ -0,0 +1,24 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ # Unshelve the server.
6
+ #
7
+ # === Parameters
8
+ # * server_id <~String> - The ID of the server to be unshelved
9
+ # === Returns
10
+ # * success <~Boolean>
11
+ def unshelve_server(server_id)
12
+ body = { 'unshelve' => nil }
13
+ server_action(server_id, body).status == 202
14
+ end # def unshelve_server
15
+ end # class Real
16
+
17
+ class Mock
18
+ def unshelve_server(server_id)
19
+ true
20
+ end # def unshelve_server
21
+ end # class Mock
22
+ end # class OpenStack
23
+ end # module Compute
24
+ end # module Fog
@@ -3,11 +3,11 @@ module Fog
3
3
  class OpenStack
4
4
  class V3
5
5
  class Real
6
- def get_project(id)
6
+ def get_project(id, options=[])
7
7
  request(
8
8
  :expects => [200],
9
9
  :method => 'GET',
10
- :path => "projects/#{id}"
10
+ :path => "projects/#{id}?#{options.join '&'}"
11
11
  )
12
12
  end
13
13
  end
@@ -14,7 +14,7 @@ module Fog
14
14
  vanilla_options = [:name, :gateway_ip, :allocation_pools,
15
15
  :dns_nameservers, :host_routes, :enable_dhcp,
16
16
  :tenant_id]
17
- vanilla_options.each do |key|
17
+ vanilla_options.select{ |o| options.key?(o) }.each do |key|
18
18
  data['subnet'][key] = options[key]
19
19
  end
20
20
 
@@ -5,8 +5,8 @@ module Fog
5
5
  def update_subnet(subnet_id, options = {})
6
6
  data = { 'subnet' => {} }
7
7
 
8
- vanilla_options = [:name, :gateway_ip, :dns_nameservers,
9
- :host_routes, :enable_dhcp]
8
+ vanilla_options = [:name, :gateway_ip, :allocation_pools,
9
+ :dns_nameservers, :host_routes, :enable_dhcp]
10
10
  vanilla_options.select{ |o| options.key?(o) }.each do |key|
11
11
  data['subnet'][key] = options[key]
12
12
  end
@@ -24,11 +24,12 @@ module Fog
24
24
  def update_subnet(subnet_id, options = {})
25
25
  response = Excon::Response.new
26
26
  if subnet = list_subnets.body['subnets'].find { |_| _['id'] == subnet_id }
27
- subnet['name'] = options[:name]
28
- subnet['gateway_ip'] = options[:gateway_ip]
29
- subnet['dns_nameservers'] = options[:dns_nameservers]
30
- subnet['host_routes'] = options[:host_routes]
31
- subnet['enable_dhcp'] = options[:enable_dhcp]
27
+ subnet['name'] = options[:name]
28
+ subnet['gateway_ip'] = options[:gateway_ip]
29
+ subnet['dns_nameservers'] = options[:dns_nameservers] || []
30
+ subnet['host_routes'] = options[:host_routes] || []
31
+ subnet['allocation_pools'] = options[:allocation_pools] || []
32
+ subnet['enable_dhcp'] = options[:enable_dhcp]
32
33
  response.body = { 'subnet' => subnet }
33
34
  response.status = 200
34
35
  response
@@ -0,0 +1,24 @@
1
+ module Fog
2
+ module Volume
3
+ class OpenStack
4
+ # no Mock needed, test coverage in RSpec
5
+
6
+ class Real
7
+ def accept_transfer(transfer_id, auth_key)
8
+ data = {
9
+ 'accept' => {
10
+ 'auth_key' => auth_key
11
+ }
12
+ }
13
+
14
+ request(
15
+ :body => Fog::JSON.encode(data),
16
+ :expects => [200, 202],
17
+ :method => 'POST',
18
+ :path => "os-volume-transfer/#{transfer_id}/accept"
19
+ )
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,27 @@
1
+ module Fog
2
+ module Volume
3
+ class OpenStack
4
+ # no Mock needed, test coverage in RSpec
5
+
6
+ class Real
7
+ def create_transfer(volume_id, options={})
8
+ data = {
9
+ 'transfer' => {
10
+ 'volume_id' => volume_id
11
+ }
12
+ }
13
+ if options[:name]
14
+ data['transfer']['name'] = options[:name]
15
+ end
16
+
17
+ request(
18
+ :body => Fog::JSON.encode(data),
19
+ :expects => [200, 202],
20
+ :method => 'POST',
21
+ :path => 'os-volume-transfer'
22
+ )
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,17 @@
1
+ module Fog
2
+ module Volume
3
+ class OpenStack
4
+ # no Mock needed, test coverage in RSpec
5
+
6
+ class Real
7
+ def delete_transfer(transfer_id)
8
+ request(
9
+ :expects => 202,
10
+ :method => 'DELETE',
11
+ :path => "os-volume-transfer/#{transfer_id}"
12
+ )
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ module Fog
2
+ module Volume
3
+ class OpenStack
4
+ class Real
5
+ def extend_volume(volume_id, size)
6
+ body = { 'os-extend' => { 'new_size' => size } }
7
+ request(
8
+ :expects => 202,
9
+ :method => 'POST',
10
+ :path => "volumes/#{volume_id}/action",
11
+ :body => Fog::JSON.encode(body)
12
+ )
13
+ end
14
+ end
15
+
16
+ class Mock
17
+ def extend_volume(volume_id, size)
18
+ response = Excon::Response.new
19
+ response.status = 202
20
+ response
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,17 @@
1
+ module Fog
2
+ module Volume
3
+ class OpenStack
4
+ # no Mock needed, test coverage in RSpec
5
+
6
+ class Real
7
+ def get_transfer_details(transfer_id)
8
+ request(
9
+ :expects => 200,
10
+ :method => 'GET',
11
+ :path => "os-volume-transfer/#{transfer_id}"
12
+ )
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ module Fog
2
+ module Volume
3
+ class OpenStack
4
+ # no Mock needed, test coverage in RSpec
5
+
6
+ class Real
7
+ def list_transfers(options = {})
8
+ request(
9
+ :expects => 200,
10
+ :method => 'GET',
11
+ :path => 'os-volume-transfer',
12
+ :query => options
13
+ )
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module Fog
2
+ module Volume
3
+ class OpenStack
4
+ # no Mock needed, test coverage in RSpec
5
+
6
+ class Real
7
+ def list_transfers_detailed(options = {})
8
+ request(
9
+ :expects => 200,
10
+ :method => 'GET',
11
+ :path => 'os-volume-transfer/detail',
12
+ :query => options
13
+ )
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,32 @@
1
+ module Fog
2
+ module Volume
3
+ class OpenStack
4
+ class Real
5
+ def list_zones(options = {})
6
+ request(
7
+ :expects => 200,
8
+ :method => 'GET',
9
+ :path => 'os-availability-zone.json',
10
+ :query => options
11
+ )
12
+ end
13
+ end
14
+
15
+ class Mock
16
+ def list_zones(options = {})
17
+ Excon::Response.new(
18
+ :body => {
19
+ "availabilityZoneInfo" => [
20
+ {
21
+ "zoneState" => { "available" => true },
22
+ "zoneName" => "nova"
23
+ }
24
+ ]
25
+ },
26
+ :status => 200
27
+ )
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -8,7 +8,8 @@ module Fog
8
8
  recognizes :persistent, :openstack_service_name,
9
9
  :openstack_service_type, :openstack_tenant,
10
10
  :openstack_region, :openstack_temp_url_key,
11
- :openstack_endpoint_type
11
+ :openstack_endpoint_type, :openstack_auth_token,
12
+ :openstack_management_url
12
13
 
13
14
  model_path 'fog/openstack/models/storage'
14
15
  model :directory
@@ -89,6 +90,7 @@ module Fog
89
90
  @connection_options = options[:connection_options] || {}
90
91
  @openstack_temp_url_key = options[:openstack_temp_url_key]
91
92
  @openstack_endpoint_type = options[:openstack_endpoint_type] || 'publicURL'
93
+ @openstack_management_url = options[:openstack_management_url]
92
94
  authenticate
93
95
  @persistent = options[:persistent] || false
94
96
  @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
@@ -15,9 +15,15 @@ module Fog
15
15
  model :volume
16
16
  collection :volumes
17
17
 
18
+ model :availability_zone
19
+ collection :availability_zones
20
+
18
21
  model :volume_type
19
22
  collection :volume_types
20
23
 
24
+ model :transfer
25
+ collection :transfers
26
+
21
27
  request_path 'fog/openstack/requests/volume'
22
28
 
23
29
  # Volume
@@ -25,8 +31,11 @@ module Fog
25
31
  request :list_volumes_detailed
26
32
  request :create_volume
27
33
  request :get_volume_details
34
+ request :extend_volume
28
35
  request :delete_volume
29
36
 
37
+ request :list_zones
38
+
30
39
  request :list_volume_types
31
40
  request :get_volume_type_details
32
41
 
@@ -35,6 +44,13 @@ module Fog
35
44
  request :get_snapshot_details
36
45
  request :delete_snapshot
37
46
 
47
+ request :list_transfers
48
+ request :list_transfers_detailed
49
+ request :create_transfer
50
+ request :get_transfer_details
51
+ request :accept_transfer
52
+ request :delete_transfer
53
+
38
54
  request :update_quota
39
55
  request :get_quota
40
56
  request :get_quota_defaults