fog 1.31.0 → 1.32.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (176) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +53 -0
  3. data/Rakefile +5 -5
  4. data/fog.gemspec +6 -5
  5. data/lib/fog/cloudstack/models/compute/network.rb +1 -0
  6. data/lib/fog/openstack/compute.rb +41 -98
  7. data/lib/fog/openstack/core.rb +257 -118
  8. data/lib/fog/openstack/identity.rb +4 -0
  9. data/lib/fog/openstack/identity_v3.rb +10 -41
  10. data/lib/fog/openstack/models/baremetal/chassis_collection.rb +10 -4
  11. data/lib/fog/openstack/models/baremetal/drivers.rb +4 -2
  12. data/lib/fog/openstack/models/baremetal/nodes.rb +10 -4
  13. data/lib/fog/openstack/models/baremetal/ports.rb +10 -4
  14. data/lib/fog/openstack/models/compute/addresses.rb +4 -2
  15. data/lib/fog/openstack/models/compute/aggregate.rb +64 -0
  16. data/lib/fog/openstack/models/compute/aggregates.rb +28 -0
  17. data/lib/fog/openstack/models/compute/flavors.rb +5 -0
  18. data/lib/fog/openstack/models/compute/hosts.rb +4 -2
  19. data/lib/fog/openstack/models/compute/images.rb +2 -0
  20. data/lib/fog/openstack/models/compute/key_pairs.rb +4 -2
  21. data/lib/fog/openstack/models/compute/security_groups.rb +4 -2
  22. data/lib/fog/openstack/models/compute/servers.rb +2 -0
  23. data/lib/fog/openstack/models/compute/services.rb +7 -4
  24. data/lib/fog/openstack/models/compute/snapshots.rb +15 -2
  25. data/lib/fog/openstack/models/compute/volumes.rb +15 -2
  26. data/lib/fog/openstack/models/identity_v2/ec2_credentials.rb +6 -3
  27. data/lib/fog/openstack/models/identity_v2/roles.rb +5 -3
  28. data/lib/fog/openstack/models/identity_v2/tenants.rb +5 -3
  29. data/lib/fog/openstack/models/identity_v2/users.rb +7 -3
  30. data/lib/fog/openstack/models/identity_v3/domains.rb +7 -6
  31. data/lib/fog/openstack/models/identity_v3/endpoints.rb +5 -4
  32. data/lib/fog/openstack/models/identity_v3/groups.rb +5 -3
  33. data/lib/fog/openstack/models/identity_v3/os_credentials.rb +5 -3
  34. data/lib/fog/openstack/models/identity_v3/policies.rb +5 -3
  35. data/lib/fog/openstack/models/identity_v3/project.rb +1 -0
  36. data/lib/fog/openstack/models/identity_v3/projects.rb +7 -5
  37. data/lib/fog/openstack/models/identity_v3/role_assignments.rb +10 -5
  38. data/lib/fog/openstack/models/identity_v3/roles.rb +11 -5
  39. data/lib/fog/openstack/models/identity_v3/services.rb +5 -3
  40. data/lib/fog/openstack/models/identity_v3/users.rb +4 -2
  41. data/lib/fog/openstack/models/image/images.rb +10 -4
  42. data/lib/fog/openstack/models/network/floating_ips.rb +2 -0
  43. data/lib/fog/openstack/models/network/lb_health_monitors.rb +2 -0
  44. data/lib/fog/openstack/models/network/lb_members.rb +2 -0
  45. data/lib/fog/openstack/models/network/lb_pools.rb +2 -0
  46. data/lib/fog/openstack/models/network/lb_vips.rb +2 -0
  47. data/lib/fog/openstack/models/network/networks.rb +2 -0
  48. data/lib/fog/openstack/models/network/port.rb +1 -0
  49. data/lib/fog/openstack/models/network/ports.rb +2 -0
  50. data/lib/fog/openstack/models/network/routers.rb +2 -0
  51. data/lib/fog/openstack/models/network/security_group_rules.rb +2 -0
  52. data/lib/fog/openstack/models/network/security_groups.rb +2 -0
  53. data/lib/fog/openstack/models/network/subnets.rb +2 -0
  54. data/lib/fog/openstack/models/orchestration/events.rb +10 -6
  55. data/lib/fog/openstack/models/orchestration/resources.rb +4 -2
  56. data/lib/fog/openstack/models/orchestration/stack.rb +1 -1
  57. data/lib/fog/openstack/models/orchestration/stacks.rb +9 -1
  58. data/lib/fog/openstack/models/planning/plans.rb +4 -2
  59. data/lib/fog/openstack/models/planning/roles.rb +5 -2
  60. data/lib/fog/openstack/models/storage/directories.rb +4 -2
  61. data/lib/fog/openstack/models/storage/files.rb +2 -0
  62. data/lib/fog/openstack/models/volume/volume.rb +1 -0
  63. data/lib/fog/openstack/models/volume/volume_types.rb +2 -0
  64. data/lib/fog/openstack/models/volume/volumes.rb +13 -2
  65. data/lib/fog/openstack/network.rb +18 -97
  66. data/lib/fog/openstack/orchestration.rb +2 -0
  67. data/lib/fog/openstack/requests/baremetal/list_chassis.rb +2 -8
  68. data/lib/fog/openstack/requests/baremetal/list_chassis_detailed.rb +3 -9
  69. data/lib/fog/openstack/requests/baremetal/list_drivers.rb +4 -3
  70. data/lib/fog/openstack/requests/baremetal/list_nodes.rb +3 -9
  71. data/lib/fog/openstack/requests/baremetal/list_nodes_detailed.rb +3 -9
  72. data/lib/fog/openstack/requests/baremetal/list_ports.rb +3 -9
  73. data/lib/fog/openstack/requests/baremetal/list_ports_detailed.rb +3 -9
  74. data/lib/fog/openstack/requests/compute/add_aggregate_host.rb +30 -0
  75. data/lib/fog/openstack/requests/compute/create_aggregate.rb +42 -0
  76. data/lib/fog/openstack/requests/compute/delete_aggregate.rb +28 -0
  77. data/lib/fog/openstack/requests/compute/get_aggregate.rb +26 -0
  78. data/lib/fog/openstack/requests/compute/list_aggregates.rb +36 -0
  79. data/lib/fog/openstack/requests/compute/list_all_addresses.rb +4 -3
  80. data/lib/fog/openstack/requests/compute/list_flavors.rb +6 -5
  81. data/lib/fog/openstack/requests/compute/list_hosts.rb +4 -3
  82. data/lib/fog/openstack/requests/compute/list_key_pairs.rb +4 -3
  83. data/lib/fog/openstack/requests/compute/list_security_groups.rb +15 -2
  84. data/lib/fog/openstack/requests/compute/list_snapshots.rb +18 -4
  85. data/lib/fog/openstack/requests/compute/list_snapshots_detail.rb +27 -0
  86. data/lib/fog/openstack/requests/compute/list_volumes.rb +18 -4
  87. data/lib/fog/openstack/requests/compute/list_volumes_detail.rb +25 -0
  88. data/lib/fog/openstack/requests/compute/remove_aggregate_host.rb +30 -0
  89. data/lib/fog/openstack/requests/compute/update_aggregate.rb +37 -0
  90. data/lib/fog/openstack/requests/compute/update_aggregate_metadata.rb +30 -0
  91. data/lib/fog/openstack/requests/identity_v2/list_ec2_credentials.rb +23 -7
  92. data/lib/fog/openstack/requests/identity_v2/list_roles.rb +5 -4
  93. data/lib/fog/openstack/requests/identity_v2/list_tenants.rb +14 -8
  94. data/lib/fog/openstack/requests/identity_v2/list_users.rb +16 -4
  95. data/lib/fog/openstack/requests/identity_v3/auth_domains.rb +2 -7
  96. data/lib/fog/openstack/requests/identity_v3/auth_projects.rb +6 -11
  97. data/lib/fog/openstack/requests/identity_v3/list_domains.rb +7 -14
  98. data/lib/fog/openstack/requests/identity_v3/list_endpoints.rb +7 -14
  99. data/lib/fog/openstack/requests/identity_v3/list_group_users.rb +5 -13
  100. data/lib/fog/openstack/requests/identity_v3/list_groups.rb +14 -24
  101. data/lib/fog/openstack/requests/identity_v3/list_os_credentials.rb +7 -12
  102. data/lib/fog/openstack/requests/identity_v3/list_policies.rb +7 -11
  103. data/lib/fog/openstack/requests/identity_v3/list_projects.rb +14 -25
  104. data/lib/fog/openstack/requests/identity_v3/list_role_assignments.rb +21 -17
  105. data/lib/fog/openstack/requests/identity_v3/list_roles.rb +7 -25
  106. data/lib/fog/openstack/requests/identity_v3/list_services.rb +7 -13
  107. data/lib/fog/openstack/requests/identity_v3/list_users.rb +7 -15
  108. data/lib/fog/openstack/requests/image/list_public_images.rb +4 -3
  109. data/lib/fog/openstack/requests/image/list_public_images_detailed.rb +9 -6
  110. data/lib/fog/openstack/requests/network/create_port.rb +12 -11
  111. data/lib/fog/openstack/requests/network/create_subnet.rb +7 -7
  112. data/lib/fog/openstack/requests/network/get_port.rb +1 -0
  113. data/lib/fog/openstack/requests/network/update_port.rb +7 -6
  114. data/lib/fog/openstack/requests/orchestration/list_events.rb +46 -0
  115. data/lib/fog/openstack/requests/orchestration/list_resource_events.rb +7 -2
  116. data/lib/fog/openstack/requests/orchestration/list_resource_types.rb +3 -2
  117. data/lib/fog/openstack/requests/orchestration/list_resources.rb +27 -4
  118. data/lib/fog/openstack/requests/orchestration/list_stack_data.rb +2 -2
  119. data/lib/fog/openstack/requests/orchestration/list_stack_data_detailed.rb +49 -0
  120. data/lib/fog/openstack/requests/orchestration/list_stack_events.rb +6 -2
  121. data/lib/fog/openstack/requests/planning/list_plans.rb +4 -3
  122. data/lib/fog/openstack/requests/planning/list_roles.rb +3 -9
  123. data/lib/fog/openstack/requests/volume/create_volume.rb +2 -1
  124. data/lib/fog/openstack/requests/volume/list_snapshots.rb +16 -3
  125. data/lib/fog/openstack/requests/volume/list_snapshots_detailed.rb +27 -0
  126. data/lib/fog/openstack/requests/volume/list_volume_types.rb +6 -6
  127. data/lib/fog/openstack/requests/volume/list_volumes.rb +20 -7
  128. data/lib/fog/openstack/requests/volume/list_volumes_detailed.rb +49 -0
  129. data/lib/fog/openstack/volume.rb +1 -0
  130. data/lib/fog/ovirt/models/compute/server.rb +1 -0
  131. data/lib/fog/ovirt/models/compute/template.rb +1 -0
  132. data/lib/fog/rackspace/docs/queues.md +2 -2
  133. data/lib/fog/rackspace/models/block_storage/snapshot.rb +5 -1
  134. data/lib/fog/version.rb +1 -1
  135. data/lib/fog/vsphere/requests/compute/vm_clone.rb +1 -1
  136. data/lib/tasks/changelog_task.rb +1 -0
  137. data/spec/fog/openstack/identity_v3/authv3_a.yml +55 -35
  138. data/spec/fog/openstack/identity_v3/authv3_b.yml +55 -35
  139. data/spec/fog/openstack/identity_v3/authv3_c.yml +159 -33
  140. data/spec/fog/openstack/identity_v3/authv3_project.yml +79 -35
  141. data/spec/fog/openstack/identity_v3/authv3_token.yml +377 -76
  142. data/spec/fog/openstack/identity_v3/authv3_unscoped.yml +298 -155
  143. data/spec/fog/openstack/identity_v3/authv3_unscoped_reauth.yml +371 -0
  144. data/spec/fog/openstack/identity_v3/idv3.yml +456 -41
  145. data/spec/fog/openstack/identity_v3/idv3_credential.yml +36 -30
  146. data/spec/fog/openstack/identity_v3/idv3_credential_crud.yml +223 -190
  147. data/spec/fog/openstack/identity_v3/idv3_domain.yml +64 -58
  148. data/spec/fog/openstack/identity_v3/idv3_domain_crud.yml +176 -393
  149. data/spec/fog/openstack/identity_v3/idv3_domain_group_roles_mutation.yml +277 -379
  150. data/spec/fog/openstack/identity_v3/idv3_domain_roles_mutation.yml +177 -204
  151. data/spec/fog/openstack/identity_v3/idv3_endpoint.yml +492 -174
  152. data/spec/fog/openstack/identity_v3/idv3_endpoints_crud.yml +669 -435
  153. data/spec/fog/openstack/identity_v3/idv3_group_crud_mutation.yml +378 -298
  154. data/spec/fog/openstack/identity_v3/idv3_other_region.yml +187 -0
  155. data/spec/fog/openstack/identity_v3/idv3_policy.yml +54 -46
  156. data/spec/fog/openstack/identity_v3/idv3_policy_crud.yml +137 -117
  157. data/spec/fog/openstack/identity_v3/idv3_project.yml +116 -86
  158. data/spec/fog/openstack/identity_v3/idv3_project_crud.yml +179 -387
  159. data/spec/fog/openstack/identity_v3/idv3_project_group_user_roles_mutation.yml +415 -556
  160. data/spec/fog/openstack/identity_v3/idv3_role.yml +108 -74
  161. data/spec/fog/openstack/identity_v3/idv3_role_crud.yml +160 -368
  162. data/spec/fog/openstack/identity_v3/idv3_service.yml +156 -94
  163. data/spec/fog/openstack/identity_v3/idv3_services_crud.yml +250 -306
  164. data/spec/fog/openstack/identity_v3/idv3_token.yml +195 -101
  165. data/spec/fog/openstack/identity_v3/idv3_user_crud.yml +276 -193
  166. data/spec/fog/openstack/identity_v3/idv3_users.yml +149 -219
  167. data/spec/fog/openstack/identity_v3_spec.rb +502 -474
  168. data/spec/fog/openstack/volume/volume_common_setup.yml +76 -0
  169. data/spec/fog/openstack/volume/volume_crud.yml +561 -0
  170. data/spec/fog/openstack/volume/volume_type_read.yml +120 -0
  171. data/spec/fog/openstack/volume_spec.rb +165 -0
  172. data/tests/openstack/requests/compute/aggregate_tests.rb +59 -0
  173. data/tests/openstack/requests/network/port_tests.rb +12 -11
  174. data/tests/openstack/requests/orchestration/stack_tests.rb +25 -0
  175. metadata +56 -14
  176. data/spec/fog/openstack/identity_v3/idv2_unscoped_token_v3.yml +0 -467
@@ -2,24 +2,18 @@ module Fog
2
2
  module Baremetal
3
3
  class OpenStack
4
4
  class Real
5
- def list_nodes_detailed(parameters=nil)
6
- if parameters
7
- query = parameters.each { |k, v| parameters[k] = URI::encode(v) }
8
- else
9
- query = {}
10
- end
11
-
5
+ def list_nodes_detailed(options = {})
12
6
  request(
13
7
  :expects => [200, 204],
14
8
  :method => 'GET',
15
9
  :path => 'nodes/detail',
16
- :query => query
10
+ :query => options
17
11
  )
18
12
  end
19
13
  end # class Real
20
14
 
21
15
  class Mock
22
- def list_nodes_detailed(parameters=nil)
16
+ def list_nodes_detailed(options = {})
23
17
  response = Excon::Response.new
24
18
  response.status = [200, 204][rand(1)]
25
19
  response.body = { "nodes" => self.data[:nodes] }
@@ -2,24 +2,18 @@ module Fog
2
2
  module Baremetal
3
3
  class OpenStack
4
4
  class Real
5
- def list_ports(parameters=nil)
6
- if parameters
7
- query = parameters.each { |k, v| parameters[k] = URI::encode(v) }
8
- else
9
- query = {}
10
- end
11
-
5
+ def list_ports(options = {})
12
6
  request(
13
7
  :expects => [200, 204],
14
8
  :method => 'GET',
15
9
  :path => 'ports',
16
- :query => query
10
+ :query => options
17
11
  )
18
12
  end
19
13
  end # class Real
20
14
 
21
15
  class Mock
22
- def list_ports(parameters=nil)
16
+ def list_ports(options = {})
23
17
  response = Excon::Response.new
24
18
  response.status = [200, 204][rand(1)]
25
19
  response.body = {
@@ -2,24 +2,18 @@ module Fog
2
2
  module Baremetal
3
3
  class OpenStack
4
4
  class Real
5
- def list_ports_detailed(parameters=nil)
6
- if parameters
7
- query = parameters.each { |k, v| parameters[k] = URI::encode(v) }
8
- else
9
- query = {}
10
- end
11
-
5
+ def list_ports_detailed(options = {})
12
6
  request(
13
7
  :expects => [200, 204],
14
8
  :method => 'GET',
15
9
  :path => 'ports/detail',
16
- :query => query
10
+ :query => options
17
11
  )
18
12
  end
19
13
  end # class Real
20
14
 
21
15
  class Mock
22
- def list_ports_detailed(parameters=nil)
16
+ def list_ports_detailed(options = {})
23
17
  response = Excon::Response.new
24
18
  response.status = [200, 204][rand(1)]
25
19
  response.body = { "ports" => self.data[:ports] }
@@ -0,0 +1,30 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def add_aggregate_host(uuid, host_uuid)
6
+ data = {'add_host' => {'host' => host_uuid}}
7
+ request(
8
+ :body => Fog::JSON.encode(data),
9
+ :expects => [200],
10
+ :method => 'POST',
11
+ :path => "os-aggregates/#{uuid}/action"
12
+ )
13
+ end
14
+ end
15
+
16
+ class Mock
17
+ def add_aggregate_host(uuid, host_uuid)
18
+ response = Excon::Response.new
19
+ response.status = 200
20
+ response.headers = {
21
+ "Content-Type" => "text/html; charset=UTF-8",
22
+ "Content-Length" => "0",
23
+ "Date" => Date.new
24
+ }
25
+ response
26
+ end
27
+ end # mock
28
+ end # openstack
29
+ end # compute
30
+ end # fog
@@ -0,0 +1,42 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def create_aggregate(name, options = {})
6
+ data = {
7
+ 'aggregate' => {
8
+ 'name' => name
9
+ }
10
+ }
11
+
12
+ vanilla_options = ["availability_zone"]
13
+
14
+ vanilla_options.select{|o| options[o]}.each do |key|
15
+ data['aggregate'][key] = options[key]
16
+ end
17
+
18
+ request(
19
+ :body => Fog::JSON.encode(data),
20
+ :expects => [200],
21
+ :method => 'POST',
22
+ :path => "os-aggregates"
23
+ )
24
+ end
25
+ end
26
+
27
+ class Mock
28
+ def create_aggregate(name, options = {})
29
+ response = Excon::Response.new
30
+ response.status = 200
31
+ response.headers = {
32
+ "Content-Type" => "text/html; charset=UTF-8",
33
+ "Content-Length" => "0",
34
+ "Date" => Date.new
35
+ }
36
+ response.body = {'aggregate' => self.data[:aggregates].first}
37
+ response
38
+ end
39
+ end # mock
40
+ end # openstack
41
+ end # compute
42
+ end # fog
@@ -0,0 +1,28 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def delete_aggregate(uuid)
6
+ request(
7
+ :expects => [200, 202, 204],
8
+ :method => 'DELETE',
9
+ :path => "os-aggregates/#{uuid}"
10
+ )
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ def delete_aggregate(uuid)
16
+ response = Excon::Response.new
17
+ response.status = 200
18
+ response.headers = {
19
+ "Content-Type" => "text/html; charset=UTF-8",
20
+ "Content-Length" => "0",
21
+ "Date" => Date.new
22
+ }
23
+ response
24
+ end
25
+ end # mock
26
+ end # openstack
27
+ end # compute
28
+ end # fog
@@ -0,0 +1,26 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def get_aggregate(uuid)
6
+ request(
7
+ :expects => [200],
8
+ :method => 'GET',
9
+ :path => "os-aggregates/#{uuid}"
10
+ )
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ def get_aggregate(uuid)
16
+ response = Excon::Response.new
17
+ response.status = 2040
18
+ response.body = {'aggregate' => self.data[:aggregates].first.merge({
19
+ "hosts" => []})}
20
+
21
+ response
22
+ end
23
+ end # mock
24
+ end # openstack
25
+ end # compute
26
+ end # fog
@@ -0,0 +1,36 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def list_aggregates(options = {})
6
+ request(
7
+ :expects => [200, 203],
8
+ :method => 'GET',
9
+ :path => 'os-aggregates',
10
+ :query => options
11
+ )
12
+ end
13
+ end
14
+
15
+ class Mock
16
+ def list_aggregates(options = {})
17
+ response = Excon::Response.new
18
+ response.status = 200
19
+ response.body = {'aggregates' => [{
20
+ "availability_zone" => "nova",
21
+ "created_at" => "2012-11-16T06:22:23.032493",
22
+ "deleted" => false,
23
+ "deleted_at" => nil,
24
+ "metadata" => {
25
+ "availability_zone" => "nova" },
26
+ "id" => 1,
27
+ "name" => "name",
28
+ "updated_at" => nil
29
+ }]}
30
+
31
+ response
32
+ end
33
+ end # mock
34
+ end # openstack
35
+ end # compute
36
+ end # fog
@@ -2,17 +2,18 @@ module Fog
2
2
  module Compute
3
3
  class OpenStack
4
4
  class Real
5
- def list_all_addresses
5
+ def list_all_addresses(options = {})
6
6
  request(
7
7
  :expects => [200, 203],
8
8
  :method => 'GET',
9
- :path => "os-floating-ips.json"
9
+ :path => "os-floating-ips.json",
10
+ :query => options
10
11
  )
11
12
  end
12
13
  end
13
14
 
14
15
  class Mock
15
- def list_all_addresses
16
+ def list_all_addresses(options = {})
16
17
  response = Excon::Response.new
17
18
  response.status = 200
18
19
  response.headers = {
@@ -2,17 +2,18 @@ module Fog
2
2
  module Compute
3
3
  class OpenStack
4
4
  class Real
5
- def list_flavors
5
+ def list_flavors(options = {})
6
6
  request(
7
- :expects => [200, 203],
8
- :method => 'GET',
9
- :path => 'flavors.json'
7
+ :expects => [200, 203],
8
+ :method => 'GET',
9
+ :path => 'flavors.json',
10
+ :query => options
10
11
  )
11
12
  end
12
13
  end
13
14
 
14
15
  class Mock
15
- def list_flavors
16
+ def list_flavors(options = {})
16
17
  response = Excon::Response.new
17
18
  response.status = 200
18
19
  response.body = {
@@ -2,17 +2,18 @@ module Fog
2
2
  module Compute
3
3
  class OpenStack
4
4
  class Real
5
- def list_hosts
5
+ def list_hosts(options = {})
6
6
  request(
7
7
  :expects => [200, 203],
8
8
  :method => 'GET',
9
- :path => 'os-hosts.json'
9
+ :path => 'os-hosts.json',
10
+ :query => options
10
11
  )
11
12
  end
12
13
  end
13
14
 
14
15
  class Mock
15
- def list_hosts
16
+ def list_hosts(options = {})
16
17
  response = Excon::Response.new
17
18
  response.status = 200
18
19
  response.body = { "hosts" => [
@@ -2,17 +2,18 @@ module Fog
2
2
  module Compute
3
3
  class OpenStack
4
4
  class Real
5
- def list_key_pairs
5
+ def list_key_pairs(options = {})
6
6
  request(
7
7
  :expects => [200, 203],
8
8
  :method => 'GET',
9
- :path => 'os-keypairs.json'
9
+ :path => 'os-keypairs.json',
10
+ :query => options
10
11
  )
11
12
  end
12
13
  end
13
14
 
14
15
  class Mock
15
- def list_key_pairs
16
+ def list_key_pairs(options = {})
16
17
  response = Excon::Response.new
17
18
  response.status = 200
18
19
  response.headers = {
@@ -2,15 +2,28 @@ module Fog
2
2
  module Compute
3
3
  class OpenStack
4
4
  class Real
5
- def list_security_groups(server_id = nil)
5
+ def list_security_groups(options = {})
6
6
  path = "os-security-groups.json"
7
+
8
+ if options.is_a?(Hash)
9
+ server_id = options.delete(:server_id)
10
+ query = options
11
+ else
12
+ # Backwards compatibility layer, only server_id was passed as first parameter previously
13
+ Fog::Logger.deprecation('Calling OpenStack[:compute].list_security_groups(server_id) is deprecated, use .list_security_groups(:server_id => value) instead')
14
+ server_id = options
15
+ query = {}
16
+ end
17
+
7
18
  if server_id
8
19
  path = "servers/#{server_id}/#{path}"
9
20
  end
21
+
10
22
  request(
11
23
  :expects => [200],
12
24
  :method => 'GET',
13
- :path => path
25
+ :path => path,
26
+ :query => query
14
27
  )
15
28
  end
16
29
  end
@@ -2,18 +2,32 @@ module Fog
2
2
  module Compute
3
3
  class OpenStack
4
4
  class Real
5
- def list_snapshots(detailed=true)
6
- path = detailed ? 'os-snapshots/detail' : 'os-snapshots'
5
+ def list_snapshots(options = true)
6
+ if options.is_a?(Hash)
7
+ path = 'os-snapshots'
8
+ query = options
9
+ else
10
+ # Backwards compatibility layer, when 'detailed' boolean was sent as first param
11
+ if options
12
+ Fog::Logger.deprecation('Calling OpenStack[:compute].list_snapshots(true) is deprecated, use .list_snapshots_detail instead')
13
+ else
14
+ Fog::Logger.deprecation('Calling OpenStack[:compute].list_snapshots(false) is deprecated, use .list_snapshots({}) instead')
15
+ end
16
+ path = options ? 'os-snapshots/detail' : 'os-snapshots'
17
+ query = {}
18
+ end
19
+
7
20
  request(
8
21
  :expects => 200,
9
22
  :method => 'GET',
10
- :path => path
23
+ :path => path,
24
+ :query => query
11
25
  )
12
26
  end
13
27
  end
14
28
 
15
29
  class Mock
16
- def list_snapshots(detailed=true)
30
+ def list_snapshots(options = true)
17
31
  response = Excon::Response.new
18
32
  response.status = 200
19
33
  response.body = {
@@ -0,0 +1,27 @@
1
+ module Fog
2
+ module Compute
3
+ class OpenStack
4
+ class Real
5
+ def list_snapshots_detail(options = {})
6
+ request(
7
+ :expects => 200,
8
+ :method => 'GET',
9
+ :path => 'os-snapshots/detail',
10
+ :query => options
11
+ )
12
+ end
13
+ end
14
+
15
+ class Mock
16
+ def list_snapshots_detail(options = {})
17
+ response = Excon::Response.new
18
+ response.status = 200
19
+ response.body = {
20
+ 'snapshots' => [get_snapshot_details.body["snapshot"]]
21
+ }
22
+ response
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -2,18 +2,32 @@ module Fog
2
2
  module Compute
3
3
  class OpenStack
4
4
  class Real
5
- def list_volumes(detailed=true)
6
- path = detailed ? 'os-volumes/detail' : 'os-volumes'
5
+ def list_volumes(options = true)
6
+ if options.is_a?(Hash)
7
+ path = 'os-volumes'
8
+ query = options
9
+ else
10
+ # Backwards compatibility layer, when 'detailed' boolean was sent as first param
11
+ if options
12
+ Fog::Logger.deprecation('Calling OpenStack[:compute].list_volumes(true) is deprecated, use .list_volumes_detail instead')
13
+ else
14
+ Fog::Logger.deprecation('Calling OpenStack[:compute].list_volumes(false) is deprecated, use .list_volumes({}) instead')
15
+ end
16
+ path = options ? 'os-volumes/detail' : 'os-volumes'
17
+ query = {}
18
+ end
19
+
7
20
  request(
8
21
  :expects => 200,
9
22
  :method => 'GET',
10
- :path => path
23
+ :path => path,
24
+ :query => query
11
25
  )
12
26
  end
13
27
  end
14
28
 
15
29
  class Mock
16
- def list_volumes(detailed=true)
30
+ def list_volumes(options = true)
17
31
  Excon::Response.new(
18
32
  :body => { 'volumes' => self.data[:volumes].values },
19
33
  :status => 200