fog 1.32.0 → 1.33.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 (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