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
@@ -19,6 +19,8 @@ module Fog
19
19
  load(service.list_security_group_rules(filters).body['security_group_rules'])
20
20
  end
21
21
 
22
+ alias_method :summary, :all
23
+
22
24
  def get(sec_group_rule_id)
23
25
  if sec_group_rule = service.get_security_group_rule(sec_group_rule_id).body['security_group_rule']
24
26
  new(sec_group_rule)
@@ -19,6 +19,8 @@ module Fog
19
19
  load(service.list_security_groups(filters).body['security_groups'])
20
20
  end
21
21
 
22
+ alias_method :summary, :all
23
+
22
24
  def get(security_group_id)
23
25
  if security_group = service.get_security_group(security_group_id).body['security_group']
24
26
  new(security_group)
@@ -19,6 +19,8 @@ module Fog
19
19
  load(service.list_subnets(filters).body['subnets'])
20
20
  end
21
21
 
22
+ alias_method :summary, :all
23
+
22
24
  def get(subnet_id)
23
25
  if subnet = service.get_subnet(subnet_id).body['subnet']
24
26
  new(subnet)
@@ -6,16 +6,20 @@ module Fog
6
6
  class Events < Fog::Collection
7
7
  model Fog::Orchestration::OpenStack::Event
8
8
 
9
- def all(obj, options={})
10
- data = if obj.is_a?(Stack)
11
- service.list_stack_events(obj, options).body['events']
12
- else
13
- service.list_resource_events(obj.stack, obj, options).body['events']
14
- end
9
+ def all(options = {}, options_deprecated = {})
10
+ data = if options.is_a?(Stack)
11
+ service.list_stack_events(options, options_deprecated).body['events']
12
+ elsif options.is_a?(Hash)
13
+ service.list_events(options).body['events']
14
+ else
15
+ service.list_resource_events(options.stack, options, options_deprecated).body['events']
16
+ end
15
17
 
16
18
  load data
17
19
  end
18
20
 
21
+ alias_method :summary, :all
22
+
19
23
  def get(stack, resource, event_id)
20
24
  data = service.show_event_details(stack, resource, event_id).body['event']
21
25
  new(data)
@@ -10,11 +10,13 @@ module Fog
10
10
  service.list_resource_types.body['resource_types'].sort
11
11
  end
12
12
 
13
- def all(stack, options={})
14
- data = service.list_resources(stack, options).body['resources']
13
+ def all(options = {}, deprecated_options = {})
14
+ data = service.list_resources(options, deprecated_options).body['resources']
15
15
  load(data)
16
16
  end
17
17
 
18
+ alias_method :summary, :all
19
+
18
20
  def get(resource_name, stack=nil)
19
21
  stack = self.first.stack if stack.nil?
20
22
  data = service.show_resource_data(stack.stack_name, stack.id, resource_name).body['resource']
@@ -7,7 +7,7 @@ module Fog
7
7
 
8
8
  %w{capabilities description disable_rollback links notification_topics outputs parameters
9
9
  stack_name stack_status stack_status_reason template_description timeout_mins parent
10
- creation_time updated_time}.each do |a|
10
+ creation_time updated_time stack_user_project_id stack_owner}.each do |a|
11
11
  attribute a.to_sym
12
12
  end
13
13
 
@@ -6,7 +6,15 @@ module Fog
6
6
  class Stacks < Fog::Collection
7
7
  model Fog::Orchestration::OpenStack::Stack
8
8
 
9
- def all(options={})
9
+ def all(options = {})
10
+ # TODO(lsmola) we can uncomment this when https://bugs.launchpad.net/heat/+bug/1468318 is fixed, till then
11
+ # we will use non detailed list
12
+ # data = service.list_stack_data_detailed(options).body['stacks']
13
+ data = service.list_stack_data(options).body['stacks']
14
+ load(data)
15
+ end
16
+
17
+ def summary(options = {})
10
18
  data = service.list_stack_data(options).body['stacks']
11
19
  load(data)
12
20
  end
@@ -7,10 +7,12 @@ module Fog
7
7
  class Plans < Fog::Collection
8
8
  model Fog::Openstack::Planning::Plan
9
9
 
10
- def all
11
- load(service.list_plans.body)
10
+ def all(options = {})
11
+ load(service.list_plans(options).body)
12
12
  end
13
13
 
14
+ alias_method :summary, :all
15
+
14
16
  def find_by_uuid(plan_uuid)
15
17
  new(service.get_plan(plan_uuid).body)
16
18
  end
@@ -7,9 +7,12 @@ module Fog
7
7
  class Roles < Fog::Collection
8
8
  model Fog::Openstack::Planning::Role
9
9
 
10
- def all
11
- load(service.list_roles.body)
10
+ def all(options = {})
11
+ load(service.list_roles(options).body)
12
12
  end
13
+
14
+ alias_method :summary, :all
15
+
13
16
  end
14
17
  end
15
18
  end
@@ -7,11 +7,13 @@ module Fog
7
7
  class Directories < Fog::Collection
8
8
  model Fog::Storage::OpenStack::Directory
9
9
 
10
- def all
11
- data = service.get_containers.body
10
+ def all(options = {})
11
+ data = service.get_containers(options).body
12
12
  load(data)
13
13
  end
14
14
 
15
+ alias_method :summary, :all
16
+
15
17
  def get(key, options = {})
16
18
  data = service.get_container(key, options)
17
19
  directory = new(:key => key)
@@ -33,6 +33,8 @@ module Fog
33
33
  end
34
34
  end
35
35
 
36
+ alias_method :summary, :all
37
+
36
38
  alias_method :each_file_this_page, :each
37
39
  def each
38
40
  if !block_given?
@@ -8,6 +8,7 @@ module Fog
8
8
 
9
9
  attribute :display_name, :aliases => 'displayName'
10
10
  attribute :display_description, :aliases => 'displayDescription'
11
+ attribute :metadata
11
12
  attribute :status
12
13
  attribute :size
13
14
  attribute :volume_type, :aliases => ['volumeType', 'type']
@@ -12,6 +12,8 @@ module Fog
12
12
  load(response.body['volume_types'])
13
13
  end
14
14
 
15
+ alias_method :summary, :all
16
+
15
17
  def get(volume_type_id)
16
18
  if volume_type = service.get_volume_type_details(volume_type_id).body['volume_type']
17
19
  new(volume_type)
@@ -7,11 +7,22 @@ module Fog
7
7
  class Volumes < Fog::Collection
8
8
  model Fog::Volume::OpenStack::Volume
9
9
 
10
- def all(options = {:detailed => true})
10
+ def all(options = {})
11
11
  # the parameter has been "detailed = true" before. Make sure we are
12
12
  # backwards compatible
13
13
  detailed = options.is_a?(Hash) ? options.delete(:detailed) : options
14
- load(service.list_volumes(detailed, options).body['volumes'])
14
+ if detailed.nil? || detailed
15
+ # This method gives details by default, unless false or {:detailed => false} is passed
16
+ load(service.list_volumes_detailed(options).body['volumes'])
17
+ else
18
+ Fog::Logger.deprecation('Calling OpenStack[:volume].volumes.all(false) or volumes.all(:detailed => false) '\
19
+ ' is deprecated, call .volumes.summary instead')
20
+ load(service.list_volumes(options).body['volumes'])
21
+ end
22
+ end
23
+
24
+ def summary(options = {})
25
+ load(service.list_volumes(options).body['volumes'])
15
26
  end
16
27
 
17
28
  def get(volume_id)
@@ -204,10 +204,13 @@ module Fog
204
204
  @data = nil
205
205
  end
206
206
 
207
+ include Fog::OpenStack::Core
208
+
207
209
  def initialize(options={})
208
- @openstack_username = options[:openstack_username]
209
- @openstack_tenant = options[:openstack_tenant]
210
- @openstack_tenant_id = options[:openstack_tenant_id]
210
+ @auth_token = Fog::Mock.random_base64(64)
211
+ @auth_token_expiration = (Time.now.utc + 86400).iso8601
212
+
213
+ initialize_identity options
211
214
  end
212
215
 
213
216
  def data
@@ -218,71 +221,35 @@ module Fog
218
221
  self.class.data.delete("#{@openstack_username}-#{@openstack_tenant}")
219
222
  end
220
223
 
221
- def credentials
222
- { :provider => 'openstack',
223
- :openstack_auth_url => @openstack_auth_uri.to_s,
224
- :openstack_auth_token => @auth_token,
225
- :openstack_management_url => @openstack_management_url }
226
- end
227
224
  end
228
225
 
229
226
  class Real
230
- attr_reader :current_user
231
- attr_reader :current_tenant
232
- attr_reader :openstack_user_domain
233
- attr_reader :openstack_project_domain
227
+
228
+ include Fog::OpenStack::Core
234
229
 
235
230
  def initialize(options={})
236
- @openstack_auth_token = options[:openstack_auth_token]
237
-
238
- unless @openstack_auth_token
239
- missing_credentials = Array.new
240
- @openstack_api_key = options[:openstack_api_key]
241
- @openstack_username = options[:openstack_username]
242
- @openstack_user_domain = options[:openstack_user_domain] || options[:openstack_domain]
243
- @openstack_project_domain = options[:openstack_project_domain] || options[:openstack_domain] || 'Default'
244
-
245
- missing_credentials << :openstack_api_key unless @openstack_api_key
246
- missing_credentials << :openstack_username unless @openstack_username
247
- raise ArgumentError, "Missing required arguments: #{missing_credentials.join(', ')}" unless missing_credentials.empty?
248
- end
249
231
 
250
- @openstack_tenant = options[:openstack_tenant]
251
- @openstack_tenant_id = options[:openstack_tenant_id]
252
- @openstack_user_domain = options[:openstack_user_domain] || options[:openstack_domain]
253
- @openstack_project_domain = options[:openstack_project_domain] || options[:openstack_domain] || 'Default'
254
- @openstack_auth_uri = URI.parse(options[:openstack_auth_url])
255
- @openstack_management_url = options[:openstack_management_url]
256
- @openstack_must_reauthenticate = false
232
+ initialize_identity options
233
+
257
234
  @openstack_service_type = options[:openstack_service_type] || ['network']
258
235
  @openstack_service_name = options[:openstack_service_name]
259
- @openstack_endpoint_type = options[:openstack_endpoint_type] || 'publicURL'
260
- @openstack_region = options[:openstack_region]
261
236
 
262
237
  @connection_options = options[:connection_options] || {}
263
238
 
264
- @current_user = options[:current_user]
265
- @current_tenant = options[:current_tenant]
266
-
267
239
  authenticate
268
240
 
241
+ @path.sub!(/\/$/, '')
242
+ unless @path.match(SUPPORTED_VERSIONS)
243
+ @path = "/" + Fog::OpenStack.get_supported_version(SUPPORTED_VERSIONS,
244
+ @openstack_management_uri,
245
+ @auth_token,
246
+ @connection_options)
247
+ end
248
+
269
249
  @persistent = options[:persistent] || false
270
250
  @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
271
251
  end
272
252
 
273
- def credentials
274
- { :provider => 'openstack',
275
- :openstack_tenant_id => @openstack_tenant_id,
276
- :openstack_user_domain => @openstack_user_domain,
277
- :openstack_project_domain => @openstack_project_domain,
278
- :openstack_auth_url => @openstack_auth_uri.to_s,
279
- :openstack_auth_token => @auth_token,
280
- :openstack_management_url => @openstack_management_url,
281
- :current_user => @current_user,
282
- :current_tenant => @current_tenant,
283
- :openstack_region => @openstack_region }
284
- end
285
-
286
253
  def reload
287
254
  @connection.reset
288
255
  end
@@ -319,52 +286,6 @@ module Fog
319
286
  response
320
287
  end
321
288
 
322
- private
323
-
324
- def authenticate
325
- if !@openstack_management_url || @openstack_must_reauthenticate
326
- options = {
327
- :openstack_tenant => @openstack_tenant,
328
- :openstack_tenant_id => @openstack_tenant_id,
329
- :openstack_api_key => @openstack_api_key,
330
- :openstack_username => @openstack_username,
331
- :openstack_user_domain => @openstack_user_domain,
332
- :openstack_project_domain => @openstack_project_domain,
333
- :openstack_auth_uri => @openstack_auth_uri,
334
- :openstack_auth_token => @openstack_must_reauthenticate ? nil : @openstack_auth_token,
335
- :openstack_service_type => @openstack_service_type,
336
- :openstack_service_name => @openstack_service_name,
337
- :openstack_endpoint_type => @openstack_endpoint_type,
338
- :openstack_region => @openstack_region
339
- }
340
-
341
- credentials = Fog::OpenStack.authenticate(options, @connection_options)
342
-
343
- @current_user = credentials[:user]
344
- @current_tenant = credentials[:tenant]
345
-
346
- @openstack_must_reauthenticate = false
347
- @auth_token = credentials[:token]
348
- @openstack_management_url = credentials[:server_management_url]
349
- uri = URI.parse(@openstack_management_url)
350
- else
351
- @auth_token = @openstack_auth_token
352
- uri = URI.parse(@openstack_management_url)
353
- end
354
-
355
- @host = uri.host
356
- @path = uri.path
357
- @path.sub!(/\/$/, '')
358
- unless @path.match(SUPPORTED_VERSIONS)
359
- @path = "/" + Fog::OpenStack.get_supported_version(SUPPORTED_VERSIONS,
360
- uri,
361
- @auth_token,
362
- @connection_options)
363
- end
364
- @port = uri.port
365
- @scheme = uri.scheme
366
- true
367
- end
368
289
  end
369
290
  end
370
291
  end
@@ -32,10 +32,12 @@ module Fog
32
32
  request :create_stack
33
33
  request :delete_stack
34
34
  request :get_stack_template
35
+ request :list_events
35
36
  request :list_resource_events
36
37
  request :list_resource_types
37
38
  request :list_resources
38
39
  request :list_stack_data
40
+ request :list_stack_data_detailed
39
41
  request :list_stack_events
40
42
  request :preview_stack
41
43
  request :show_event_details
@@ -2,18 +2,12 @@ module Fog
2
2
  module Baremetal
3
3
  class OpenStack
4
4
  class Real
5
- def list_chassis(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_chassis(options = {})
12
6
  request(
13
7
  :expects => [200, 204],
14
8
  :method => 'GET',
15
9
  :path => 'chassis',
16
- :query => query
10
+ :query => options
17
11
  )
18
12
  end
19
13
  end # class Real
@@ -2,24 +2,18 @@ module Fog
2
2
  module Baremetal
3
3
  class OpenStack
4
4
  class Real
5
- def list_chassis_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_chassis_detailed(options = {})
12
6
  request(
13
7
  :expects => [200, 204],
14
8
  :method => 'GET',
15
9
  :path => 'chassis/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_chassis_detailed(parameters=nil)
16
+ def list_chassis_detailed(options = {})
23
17
  response = Excon::Response.new
24
18
  response.status = [200, 204][rand(1)]
25
19
  response.body = { "chassis" => self.data[:chassis_collection] }
@@ -2,17 +2,18 @@ module Fog
2
2
  module Baremetal
3
3
  class OpenStack
4
4
  class Real
5
- def list_drivers
5
+ def list_drivers(options = {})
6
6
  request(
7
7
  :expects => [200, 204],
8
8
  :method => 'GET',
9
- :path => 'drivers'
9
+ :path => 'drivers',
10
+ :query => options
10
11
  )
11
12
  end
12
13
  end # class Real
13
14
 
14
15
  class Mock
15
- def list_drivers
16
+ def list_drivers(options = {})
16
17
  response = Excon::Response.new
17
18
  response.status = [200, 204][rand(1)]
18
19
  response.body = { "drivers" => self.data[:drivers] }
@@ -2,24 +2,18 @@ module Fog
2
2
  module Baremetal
3
3
  class OpenStack
4
4
  class Real
5
- def list_nodes(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(options = {})
12
6
  request(
13
7
  :expects => [200, 204],
14
8
  :method => 'GET',
15
9
  :path => 'nodes',
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(parameters=nil)
16
+ def list_nodes(options = {})
23
17
  response = Excon::Response.new
24
18
  response.status = [200, 204][rand(1)]
25
19
  response.body = {